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 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,
Writer* writer) {
UmbrellaClassGenerator umbrellaGenerator(file);
@ -61,13 +66,23 @@ bool Generator::Generate(
GeneratorContext* generator_context,
string* error) const {
// TODO(jtattermusch): parse generator parameters:
// cls_compliance
// file_extension
vector<pair<string, string> > options;
ParseGeneratorParameter(parameter, &options);
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 =
StripDotProto(file->name()) + ".cs";
std::string filename = GetOutputFile(file, file_extension);
scoped_ptr<io::ZeroCopyOutputStream> output(
generator_context->Open(filename));
io::Printer printer(output.get(), '$');

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

@ -62,18 +62,11 @@ SourceGeneratorBase::~SourceGeneratorBase() {
}
void SourceGeneratorBase::WriteGeneratedCodeAttributes(Writer* writer) {
// TODO(jtattermusch):
//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);
// }
// This hook can be used to reintroduce generated code attributes in the future.
}
std::string SourceGeneratorBase::class_access_level() {
// TODO(jtattermusch): implement this
return "public";
return "public"; // public_classes is always on.
}
bool SourceGeneratorBase::cls_compliance() {

Loading…
Cancel
Save