aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/google/protobuf/compiler/csharp/csharp_helpers.cc
diff options
context:
space:
mode:
authorGravatar Jon Skeet <jonskeet@google.com>2015-07-03 13:51:40 +0100
committerGravatar Jon Skeet <jonskeet@google.com>2015-07-14 09:52:35 +0100
commit8482b6c462d54beb45ecbb7748721bfcc5e3f3d4 (patch)
tree7552ec0c94adc5ee1cf4dff0d52c9110f98d2cb4 /src/google/protobuf/compiler/csharp/csharp_helpers.cc
parent9440a2abe3e3520fd6a1288f794f8bad0b26cb31 (diff)
Convert package name to PascalCase for C# namespace
Fixes issue 312.
Diffstat (limited to 'src/google/protobuf/compiler/csharp/csharp_helpers.cc')
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_helpers.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/google/protobuf/compiler/csharp/csharp_helpers.cc b/src/google/protobuf/compiler/csharp/csharp_helpers.cc
index da6a7633..8ecd1dc2 100644
--- a/src/google/protobuf/compiler/csharp/csharp_helpers.cc
+++ b/src/google/protobuf/compiler/csharp/csharp_helpers.cc
@@ -113,7 +113,7 @@ std::string GetFileNamespace(const FileDescriptor* descriptor) {
if (descriptor->options().has_csharp_namespace()) {
return descriptor->options().csharp_namespace();
}
- return descriptor->package();
+ return UnderscoresToCamelCase(descriptor->package(), true, true);
}
std::string GetUmbrellaClassNameInternal(const std::string& proto_file) {
@@ -154,7 +154,8 @@ std::string GetFileUmbrellaNamespace(const FileDescriptor* descriptor) {
// TODO(jtattermusch): can we reuse a utility function?
std::string UnderscoresToCamelCase(const std::string& input,
- bool cap_next_letter) {
+ bool cap_next_letter,
+ bool preserve_period) {
string result;
// Note: I distrust ctype.h due to locales.
for (int i = 0; i < input.size(); i++) {
@@ -180,6 +181,9 @@ std::string UnderscoresToCamelCase(const std::string& input,
cap_next_letter = true;
} else {
cap_next_letter = true;
+ if (input[i] == '.' && preserve_period) {
+ result += '.';
+ }
}
}
// Add a trailing "_" if the name should be altered.