Просмотр исходного кода

Merged feature/PROTO-34-proto-namespaces into develop

Bart Hertog 6 лет назад
Родитель
Сommit
ce241f3838

+ 2 - 1
generator/Header_Template.h

@@ -380,7 +380,8 @@ class {{ msg.name }} final: public ::EmbeddedProto::MessageInterface
 {% if namespace %}
 
 namespace {{ namespace }}
-{ {% endif %}
+{
+{% endif %}
 
 {% for enum in enums %}
 {{ enum_macro(enum) }}

+ 6 - 1
generator/protoc-gen-eams.py

@@ -98,6 +98,7 @@ class FieldTemplateParameters:
 
         if FieldDescriptorProto.TYPE_MESSAGE == field_proto.type or FieldDescriptorProto.TYPE_ENUM == field_proto.type:
             self.type = field_proto.type_name if "." != field_proto.type_name[0] else field_proto.type_name[1:]
+            self.type = self.type.replace(".", "::")
         else:
             self.type = self.type_to_cpp_type[field_proto.type]
 
@@ -254,8 +255,12 @@ def generate_code(request, respones):
         if proto_file.dependency:
             imported_dependencies = [os.path.splitext(dependency)[0] + ".h" for dependency in proto_file.dependency]
 
+        namespace_name = ""
+        if proto_file.package:
+            namespace_name = proto_file.package.replace(".", "::")
+
         try:
-            file_str = template.render(filename=filename_str, namespace=proto_file.package,
+            file_str = template.render(filename=filename_str, namespace=namespace_name,
                                        messages=messages_array[number_of_processed_msg:],
                                        enums=enums_generator, dependencies=imported_dependencies)
 

+ 2 - 0
test/proto/file_to_include.proto

@@ -4,6 +4,8 @@
 
 syntax = "proto3";
 
+package some.external.lib;
+
 enum CommonStates {
   Idle   = 0;
   StateA = 1;

+ 2 - 2
test/proto/include_other_files.proto

@@ -10,7 +10,7 @@ import "file_to_include.proto";
 import "repeated_fields.proto";
 
 message IncludedMessages {
-  CommonStates  state = 1;
-  CommonMessage msg   = 2;
+  some.external.lib.CommonStates  state = 1;
+  some.external.lib.CommonMessage msg   = 2;
   repeated_fields rf  = 3;
 }

+ 2 - 2
test/test_IncludeOtherFiles.cpp

@@ -47,9 +47,9 @@ TEST(IncludeOtherFiles, set)
   ::IncludedMessages<RF_SIZE> msg;
   Mocks::WriteBufferMock buffer;
 
-  msg.set_state(::CommonStates::StateA);
+  msg.set_state(some::external::lib::CommonStates::StateA);
 
-  ::CommonMessage cmsg;
+  some::external::lib::CommonMessage cmsg;
   cmsg.set_a(1);
   cmsg.set_b(1.0F);
   msg.set_msg(cmsg);