diff --git a/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md b/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md index 00fc217c6e50a974bc323da5c8b567e676b500d1..a19bcd2dbaca9127acb08c1803b92cbf5ea9ccbb 100644 --- a/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md +++ b/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md @@ -51,4 +51,8 @@ **TDD Result**: -**XTS Result**: \ No newline at end of file +**XTS Result**: + +### L0新增用例自检结果 +- [ ] 是,有新增L0用例,且完成自检 +- [ ] 否 diff --git a/idl_tool_2/codegen/SA/cpp/sa_cpp_interface_code_emitter.cpp b/idl_tool_2/codegen/SA/cpp/sa_cpp_interface_code_emitter.cpp index 86737f3a5b41226811c23407c0c3a2814e566540..765360fc05dd5be11191bc613c39d432900f4b87 100644 --- a/idl_tool_2/codegen/SA/cpp/sa_cpp_interface_code_emitter.cpp +++ b/idl_tool_2/codegen/SA/cpp/sa_cpp_interface_code_emitter.cpp @@ -65,9 +65,6 @@ void SaCppInterfaceCodeEmitter::EmitInterfaceHeaderFile() sb.Append("\n"); EmitInterfaceInclusions(sb); sb.Append("\n"); - if (EmitInterfaceUsings(sb)) { - sb.Append("\n"); - } EmitInterfaceDefinition(sb); EmitTailMacro(sb, interfaceFullName_); diff --git a/idl_tool_2/codegen/SA/sa_code_emitter.cpp b/idl_tool_2/codegen/SA/sa_code_emitter.cpp index 603c47159f8a4a8018f9de676457cbfcc79c9601..5157b23ddd7839a55929819cd8e62cb8bcc26768 100644 --- a/idl_tool_2/codegen/SA/sa_code_emitter.cpp +++ b/idl_tool_2/codegen/SA/sa_code_emitter.cpp @@ -194,10 +194,21 @@ AutoPtr SACodeEmitter::GetTypeEmitter(AutoPtr astType) c typeEmitter = NewTypeEmitter(astType); } - if (astType->IsSequenceableType() || astType->IsInterfaceType() || astType->IsRawDataType()) { + Options &options = Options::GetInstance(); + if (astType->IsSequenceableType() && astType->ToShortString() == "IRemoteObject") { typeEmitter->SetTypeName(astType->ToShortString()); + } else if (astType->IsSequenceableType() || astType->IsInterfaceType() || astType->IsRawDataType()) { + if (options.GetInterfaceType() == InterfaceType::SA && options.GetLanguage() == Language::CPP) { + typeEmitter->SetTypeName(GetNameWithNamespace(astType->GetNamespace(), astType->ToShortString())); + } else { + typeEmitter->SetTypeName(astType->ToShortString()); + } } else if (astType->IsEnumType() || astType->IsStructType() || astType->IsUnionType()) { - typeEmitter->SetTypeName(astType->GetName()); + if (options.GetInterfaceType() == InterfaceType::SA && options.GetLanguage() == Language::CPP) { + typeEmitter->SetTypeName(GetNameWithNamespace(astType->GetNamespace(), astType->GetName())); + } else { + typeEmitter->SetTypeName(astType->GetName()); + } } else { typeEmitter->SetTypeName(astType->ToString()); } @@ -206,24 +217,17 @@ AutoPtr SACodeEmitter::GetTypeEmitter(AutoPtr astType) c std::string SACodeEmitter::GetNameWithNamespace(AutoPtr space, const std::string name) const { - std::vector namespaceVec = StringHelper::Split(space->ToString(), "."); - std::vector result; - - std::string rootPackage = Options::GetInstance().GetRootPackage(space->ToString()); - size_t rootPackageNum = StringHelper::Split(rootPackage, ".").size(); - - for (size_t i = 0; i < namespaceVec.size(); i++) { - std::string ns; - if (i < rootPackageNum) { - ns = StringHelper::StrToUpper(namespaceVec[i]); - } else { - ns = PascalName(namespaceVec[i]); - } - - result.emplace_back(ns); + std::string nameStr = space->ToString(); + std::string namespaceNoInclude = nameStr; + size_t pos = nameStr.find(".."); + if (pos != std::string::npos) { + namespaceNoInclude = nameStr.substr(pos); } + + std::vector namespaceVec = StringHelper::Split(namespaceNoInclude, "."); + std::vector result; StringBuilder sb; - for (const auto &ns : result) { + for (const auto &ns : namespaceVec) { sb.AppendFormat("%s::", ns.c_str()); } sb.Append(name); diff --git a/idl_tool_2/codegen/SA/type/sa_enum_type_emitter.cpp b/idl_tool_2/codegen/SA/type/sa_enum_type_emitter.cpp index f42be4cb579e25d04849e40464b5a51d3ce2139b..74539ff4fe79b56077a7890a82be169f945769ff 100644 --- a/idl_tool_2/codegen/SA/type/sa_enum_type_emitter.cpp +++ b/idl_tool_2/codegen/SA/type/sa_enum_type_emitter.cpp @@ -45,10 +45,14 @@ std::string SaEnumTypeEmitter::EmitCppType(TypeMode mode) const std::string SaEnumTypeEmitter::EmitCppTypeDecl() const { StringBuilder sb; + std::string typeName; + size_t pos = typeName_.rfind("::"); + typeName = (std::string::npos == pos) ? typeName_ : typeName_.substr(pos + strlen("::")); + if (baseTypeName_.empty()) { - sb.AppendFormat("enum class %s {\n", typeName_.c_str()); + sb.AppendFormat("enum class %s {\n", typeName.c_str()); } else { - sb.AppendFormat("enum class %s : %s {\n", typeName_.c_str(), baseTypeName_.c_str()); + sb.AppendFormat("enum class %s : %s {\n", typeName.c_str(), baseTypeName_.c_str()); } for (auto it : members_) { diff --git a/idl_tool_2/codegen/SA/type/sa_struct_type_emitter.cpp b/idl_tool_2/codegen/SA/type/sa_struct_type_emitter.cpp index d646cbd5e1d52e9155ad9b7e57414e3f0b079928..5aef5bba1a956d90aa1ef75130bf982e901b50d6 100644 --- a/idl_tool_2/codegen/SA/type/sa_struct_type_emitter.cpp +++ b/idl_tool_2/codegen/SA/type/sa_struct_type_emitter.cpp @@ -41,7 +41,10 @@ std::string SaStructTypeEmitter::EmitCppType(TypeMode mode) const std::string SaStructTypeEmitter::EmitCppTypeDecl() const { StringBuilder sb; - sb.AppendFormat("struct %s {\n", typeName_.c_str()); + std::string typeName; + size_t pos = typeName_.rfind("::"); + typeName = (std::string::npos == pos) ? typeName_ : typeName_.substr(pos + strlen("::")); + sb.AppendFormat("struct %s {\n", typeName.c_str()); for (auto it : members_) { AutoPtr member = std::get<1>(it); diff --git a/idl_tool_2/codegen/SA/type/sa_union_type_emitter.cpp b/idl_tool_2/codegen/SA/type/sa_union_type_emitter.cpp index 064559be52875cfbf5de5b68d6cf152d9b84935e..3599cea26704319d2529055a74b845cf9c863b59 100644 --- a/idl_tool_2/codegen/SA/type/sa_union_type_emitter.cpp +++ b/idl_tool_2/codegen/SA/type/sa_union_type_emitter.cpp @@ -41,7 +41,10 @@ std::string SaUnionTypeEmitter::EmitCppType(TypeMode mode) const std::string SaUnionTypeEmitter::EmitCppTypeDecl() const { StringBuilder sb; - sb.AppendFormat("union %s {\n", typeName_.c_str()); + std::string typeName; + size_t pos = typeName_.rfind("::"); + typeName = (std::string::npos == pos) ? typeName_ : typeName_.substr(pos + strlen("::")); + sb.AppendFormat("union %s {\n", typeName.c_str()); for (auto it : members_) { AutoPtr member = std::get<1>(it);