From a6e39316a7ab891d86aad2a902a1d9d7b23fd95d Mon Sep 17 00:00:00 2001 From: Gaurav Vaish Date: Thu, 7 Apr 2016 10:10:59 -0700 Subject: Added support for internal_access for C# --- src/google/protobuf/compiler/csharp/csharp_generator.cc | 2 ++ src/google/protobuf/compiler/csharp/csharp_options.h | 3 +++ src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/google/protobuf/compiler/csharp/csharp_generator.cc b/src/google/protobuf/compiler/csharp/csharp_generator.cc index df9730f8..c13ed65b 100644 --- a/src/google/protobuf/compiler/csharp/csharp_generator.cc +++ b/src/google/protobuf/compiler/csharp/csharp_generator.cc @@ -81,6 +81,8 @@ bool Generator::Generate( } else if (options[i].first == "base_namespace") { cli_options.base_namespace = options[i].second; cli_options.base_namespace_specified = true; + } else if (options[i].first == "internal_access") { + cli_options.internal_access = true; } else { *error = "Unknown generator option: " + options[i].first; return false; diff --git a/src/google/protobuf/compiler/csharp/csharp_options.h b/src/google/protobuf/compiler/csharp/csharp_options.h index 9e5573ca..f25812c8 100644 --- a/src/google/protobuf/compiler/csharp/csharp_options.h +++ b/src/google/protobuf/compiler/csharp/csharp_options.h @@ -64,6 +64,9 @@ struct Options { // string, meaning "create a full directory hierarchy, starting from the first // segment of the namespace." bool base_namespace_specified; + // Whether the generated classes should have accessibility level of "internal". + // Defaults to false that generates "public" classes. + bool internal_access; }; } // namespace csharp diff --git a/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc b/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc index bd459dda..16411e49 100644 --- a/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc +++ b/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc @@ -60,7 +60,7 @@ void SourceGeneratorBase::WriteGeneratedCodeAttributes(io::Printer* printer) { } std::string SourceGeneratorBase::class_access_level() { - return IsDescriptorProto(descriptor_) ? "internal" : "public"; // public_classes is always on. + return (IsDescriptorProto(descriptor_) || this->options()->internal_access) ? "internal" : "public"; } const Options* SourceGeneratorBase::options() { -- cgit v1.2.3