Skip to content

Commit

Permalink
Merge pull request #583 from jskeet/issue312
Browse files Browse the repository at this point in the history
Pascal-case namespace automatically in C# codegen
  • Loading branch information
jskeet committed Jul 14, 2015
2 parents 9440a2a + 8482b6c commit 24f8626
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
8 changes: 6 additions & 2 deletions src/google/protobuf/compiler/csharp/csharp_helpers.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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++) {
Expand All @@ -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.
Expand Down
6 changes: 5 additions & 1 deletion src/google/protobuf/compiler/csharp/csharp_helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,11 @@ std::string GetPropertyName(const FieldDescriptor* descriptor);

int GetFixedSize(FieldDescriptor::Type type);

std::string UnderscoresToCamelCase(const std::string& input, bool cap_next_letter);
std::string UnderscoresToCamelCase(const std::string& input, bool cap_next_letter, bool preserve_period);

inline std::string UnderscoresToCamelCase(const std::string& input, bool cap_next_letter) {
return UnderscoresToCamelCase(input, cap_next_letter, false);
}

std::string UnderscoresToPascalCase(const std::string& input);

Expand Down

0 comments on commit 24f8626

Please sign in to comment.