output file naming logic, configurable file extension, comment rewording

pull/288/head
Jan Tattermusch 10 years ago
parent 8cec65e761
commit f61e1791c0
  1. 27
      src/google/protobuf/compiler/csharp/csharp_generator.cc
  2. 2
      src/google/protobuf/compiler/csharp/csharp_helpers.cc
  3. 11
      src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc

@ -49,6 +49,11 @@ namespace protobuf {
namespace compiler { namespace compiler {
namespace csharp { namespace csharp {
std::string GetOutputFile(const google::protobuf::FileDescriptor* file, const std::string file_extension)
{
return GetFileUmbrellaClassname(file) + file_extension;
}
void GenerateFile(const google::protobuf::FileDescriptor* file, void GenerateFile(const google::protobuf::FileDescriptor* file,
Writer* writer) { Writer* writer) {
UmbrellaClassGenerator umbrellaGenerator(file); UmbrellaClassGenerator umbrellaGenerator(file);
@ -61,13 +66,23 @@ bool Generator::Generate(
GeneratorContext* generator_context, GeneratorContext* generator_context,
string* error) const { string* error) const {
// TODO(jtattermusch): parse generator parameters: vector<pair<string, string> > options;
// cls_compliance ParseGeneratorParameter(parameter, &options);
// file_extension
std::string file_extension = ".cs";
for (int i = 0; i < options.size(); i++) {
if (options[i].first == "no_cls_compliance") {
*error = "Turning off CLS compliance is not implemented yet.";
return false;
} else if (options[i].first == "file_extension") {
file_extension = options[i].second;
} else {
*error = "Unknown generator option: " + options[i].first;
return false;
}
}
// TODO(jtattermusch): rework output file naming logic std::string filename = GetOutputFile(file, file_extension);
std::string filename =
StripDotProto(file->name()) + ".cs";
scoped_ptr<io::ZeroCopyOutputStream> output( scoped_ptr<io::ZeroCopyOutputStream> output(
generator_context->Open(filename)); generator_context->Open(filename));
io::Printer printer(output.get(), '$'); io::Printer printer(output.get(), '$');

@ -364,7 +364,7 @@ FieldGeneratorBase* CreateFieldGenerator(const FieldDescriptor* descriptor,
} }
bool HasRequiredFields(const Descriptor* descriptor) { bool HasRequiredFields(const Descriptor* descriptor) {
// TODO(jtattermusch): implement this. // TODO(jtattermusch): implement HasRequiredFields logic.
return true; return true;
} }

@ -62,18 +62,11 @@ SourceGeneratorBase::~SourceGeneratorBase() {
} }
void SourceGeneratorBase::WriteGeneratedCodeAttributes(Writer* writer) { void SourceGeneratorBase::WriteGeneratedCodeAttributes(Writer* writer) {
// TODO(jtattermusch): // This hook can be used to reintroduce generated code attributes in the future.
//if (descriptor.File.CSharpOptions.GeneratedCodeAttributes)
// {
// writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
// writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]",
// GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
// }
} }
std::string SourceGeneratorBase::class_access_level() { std::string SourceGeneratorBase::class_access_level() {
// TODO(jtattermusch): implement this return "public"; // public_classes is always on.
return "public";
} }
bool SourceGeneratorBase::cls_compliance() { bool SourceGeneratorBase::cls_compliance() {

Loading…
Cancel
Save