From: jh9216.park Date: Thu, 2 Dec 2021 04:58:53 +0000 (-0500) Subject: Add ReplaceAll() using std::initialize_list<> X-Git-Tag: accepted/tizen/unified/20220216.010312~18 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9e9c3a04929bb8601efbe8eef40eaa5a87a6b23b;p=platform%2Fcore%2Fappfw%2Ftidl.git Add ReplaceAll() using std::initialize_list<> Change-Id: I1d3060de7800ea19f593625485232e77992cede9 Signed-off-by: jh9216.park --- diff --git a/idlc/gen/c_body_gen_base.cc b/idlc/gen/c_body_gen_base.cc index 9581afa..b9f0b40 100644 --- a/idlc/gen/c_body_gen_base.cc +++ b/idlc/gen/c_body_gen_base.cc @@ -122,14 +122,15 @@ void CBodyGeneratorBase::GenStructureDef(std::ofstream& stream, // @see #CB_STRUCTURE_ARRAY_DEF void CBodyGeneratorBase::GenStructureArrayDef(std::ofstream& stream, const Structure& st) { - std::string code = ReplaceAll(CB_STRUCTURE_ARRAY_DEF, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", st.GetID()); - auto& elm = st.GetElements().GetElms().front(); auto& type = elm->GetType(); auto element_type = GetDataTypeString(type, false); - code = ReplaceAll(code, "", element_type); + + std::string code = ReplaceAll(CB_STRUCTURE_ARRAY_DEF, { + { "", GetHandlePrefix() }, + { "", st.GetID() }, + { "", element_type } + }); stream << SmartIndent(code); } @@ -137,9 +138,10 @@ void CBodyGeneratorBase::GenStructureArrayDef(std::ofstream& stream, // @see #CB_STRUCTURE_LIST_DEF void CBodyGeneratorBase::GenStructureListDef(std::ofstream& stream, const Structure& st) { - std::string code = ReplaceAll(CB_STRUCTURE_LIST_DEF, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", st.GetID()); + std::string code = ReplaceAll(CB_STRUCTURE_LIST_DEF, { + { "", GetHandlePrefix() }, + { "", st.GetID() } + }); stream << SmartIndent(code); } @@ -147,12 +149,12 @@ void CBodyGeneratorBase::GenStructureListDef(std::ofstream& stream, // @see #CB_STRUCTURE_BASE_DEF void CBodyGeneratorBase::GenStructureBaseDef(std::ofstream& stream, const Structure& st) { - std::string code = ReplaceAll(CB_STRUCTURE_BASE_DEF, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", st.GetID()); - auto& elms = st.GetElements(); - code = ReplaceAll(code, "", GenBaseElements(elms)); + std::string code = ReplaceAll(CB_STRUCTURE_BASE_DEF, { + { "", GetHandlePrefix() }, + { "", st.GetID() }, + { "", GenBaseElements(elms) } + }); stream << SmartIndent(code); } @@ -259,26 +261,25 @@ std::string CBodyGeneratorBase::GenArrayElementsFree( // @see #CB_STRUCTURE_ARRAY_BASE void CBodyGeneratorBase::GenStructureArrayBase(std::ofstream& stream, const Structure& st) { - std::string code = ReplaceAll(CB_STRUCTURE_ARRAY_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", st.GetID()); - auto& elm = st.GetElements().GetElms().front(); - code = ReplaceAll(code, "", GenArrayParcelWrite(elm)); - code = ReplaceAll(code, "", GenArrayParcelRead(elm)); - auto& type = elm->GetType(); - auto param_type = GetParamTypeString(ParameterType::Direction::IN, type); - code = ReplaceAll(code, "", param_type); - param_type = GetParamTypeString(ParameterType::Direction::OUT, type); - code = ReplaceAll(code, "", param_type); - + auto param_type_in = GetParamTypeString(ParameterType::Direction::IN, type); + auto param_type_out = GetParamTypeString(ParameterType::Direction::OUT, type); auto element_type = GetDataTypeString(type, false); - code = ReplaceAll(code, "", element_type); auto element_type_size = GetDataTypeString(type, false); element_type_size = RemoveLastSpaces(element_type_size); - code = ReplaceAll(code, "", element_type_size); - code = ReplaceAll(code, "", GenArrayElementsFree(elm)); + + std::string code = ReplaceAll(CB_STRUCTURE_ARRAY_BASE, { + { "", GetHandlePrefix() }, + { "", st.GetID() }, + { "", GenArrayParcelWrite(elm) }, + { "", GenArrayParcelRead(elm) }, + { "", param_type_in }, + { "", param_type_out }, + { "", element_type }, + { "", element_type_size }, + { "", GenArrayElementsFree(elm) } + }); stream << SmartIndent(code); } @@ -408,24 +409,21 @@ std::string CBodyGeneratorBase::GenListCallbackParamType( // @see #CB_STRUCTURE_LIST_BASE void CBodyGeneratorBase::GenStructureListBase(std::ofstream& stream, const Structure& st) { - std::string code = ReplaceAll(CB_STRUCTURE_LIST_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", st.GetID()); - auto& elm = st.GetElements().GetElms().front(); auto& type = elm->GetType(); - code = ReplaceAll(code, "", GetDataTypeString(type, true)); - code = ReplaceAll(code, "", GenListDataFree(elm)); - auto param_type = GetParamTypeString(ParameterType::Direction::IN, type); - code = ReplaceAll(code, "", param_type); - - code = ReplaceAll(code, "", GenListParcelWrite(elm)); - code = ReplaceAll(code, "", GenListParcelRead(elm)); - code = ReplaceAll(code, "", GenListAdd(elm)); - code = ReplaceAll(code, "", - GenListCallbackParamType(elm)); + std::string code = ReplaceAll(CB_STRUCTURE_LIST_BASE, { + { "", GetHandlePrefix() }, + { "", st.GetID() }, + { "", GetDataTypeString(type, true) }, + { "", GenListDataFree(elm) }, + { "", param_type }, + { "", GenListParcelWrite(elm) }, + { "", GenListParcelRead(elm) }, + { "", GenListAdd(elm) }, + { "", GenListCallbackParamType(elm) } + }); stream << SmartIndent(code); } @@ -617,20 +615,20 @@ std::string CBodyGeneratorBase::GenBaseSetGet(const std::string& name, const Elements& elms) { std::string code; for (auto& elm : elms.GetElms()) { - std::string set_get_code = ReplaceAll(CB_STRUCTURE_BASE_SET_GET, - "", GetHandlePrefix()); - set_get_code = ReplaceAll(set_get_code, "", name); - set_get_code = ReplaceAll(set_get_code, "", elm->GetID()); - auto& type = elm->GetType(); auto param_type_in = GetParamTypeString(ParameterType::Direction::IN, type); - set_get_code = ReplaceAll(set_get_code, "", param_type_in); auto param_type_out = GetParamTypeString(ParameterType::Direction::OUT, type); - set_get_code = ReplaceAll(set_get_code, "", param_type_out); - set_get_code = ReplaceAll(set_get_code, "", GenBaseSet(elm)); - set_get_code = ReplaceAll(set_get_code, "", GenBaseGet(elm)); + std::string set_get_code = ReplaceAll(CB_STRUCTURE_BASE_SET_GET, { + { "", GetHandlePrefix() }, + { "", name }, + { "", elm->GetID() }, + { "", param_type_in }, + { "", param_type_out }, + { "", GenBaseSet(elm) }, + { "", GenBaseGet(elm) } + }); code += set_get_code; } @@ -641,18 +639,17 @@ std::string CBodyGeneratorBase::GenBaseSetGet(const std::string& name, // @see #CB_STRUCTURE_BASE void CBodyGeneratorBase::GenStructureBase(std::ofstream& stream, const Structure& st) { - std::string code = ReplaceAll(CB_STRUCTURE_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", st.GetID()); - auto& elms = st.GetElements(); - code = ReplaceAll(code, "", GenBaseElementsFree(elms)); - code = ReplaceAll(code, "", GenBaseParcelWrite(elms)); - code = ReplaceAll(code, "", GenBaseParcelRead(elms)); + std::string code = ReplaceAll(CB_STRUCTURE_BASE, { + { "", GetHandlePrefix() }, + { "", st.GetID() }, + { "", GenBaseElementsFree(elms) }, + { "", GenBaseParcelWrite(elms) }, + { "", GenBaseParcelRead(elms) } + }); code += GenBaseSetGet(st.GetID(), elms); - stream << SmartIndent(code); } diff --git a/idlc/gen/c_header_gen_base.cc b/idlc/gen/c_header_gen_base.cc index 8c4d015..a0bb243 100644 --- a/idlc/gen/c_header_gen_base.cc +++ b/idlc/gen/c_header_gen_base.cc @@ -101,26 +101,28 @@ void CHeaderGeneratorBase::GenStructures(std::ofstream& stream) { // @see #CB_STRUCTURE_HANDLE void CHeaderGeneratorBase::GenStructureHandle(std::ofstream& stream, const Structure& st) { - std::string str = ReplaceAll(CB_STRUCTURE_HANDLE, "", - GetHandlePrefix()); - str = ReplaceAll(str, "", st.GetID()); + std::string str = ReplaceAll(CB_STRUCTURE_HANDLE, { + { "", GetHandlePrefix() }, + { "", st.GetID() } + }); + stream << SmartIndent(str); } // @see #CB_STRUCTURE_ARRAY_BASE void CHeaderGeneratorBase::GenStructureArrayBase(std::ofstream& stream, const Structure& st) { - std::string str = ReplaceAll(CB_STRUCTURE_ARRAY_BASE, "", - GetHandlePrefix()); - str = ReplaceAll(str, "", st.GetID()); - auto& elm = st.GetElements().GetElms().front(); auto& type = elm->GetType(); - auto param_type = GetParamTypeString(ParameterType::Direction::IN, type); - str = ReplaceAll(str, "", param_type); + auto param_type_in = GetParamTypeString(ParameterType::Direction::IN, type); + auto param_type_out = GetParamTypeString(ParameterType::Direction::OUT, type); - param_type = GetParamTypeString(ParameterType::Direction::OUT, type); - str = ReplaceAll(str, "", param_type); + std::string str = ReplaceAll(CB_STRUCTURE_ARRAY_BASE, { + { "", GetHandlePrefix() }, + { "", st.GetID() }, + { "", param_type_in }, + { "", param_type_out } + }); stream << SmartIndent(str); } @@ -128,14 +130,16 @@ void CHeaderGeneratorBase::GenStructureArrayBase(std::ofstream& stream, // @see #CB_STRUCTURE_LIST_BASE void CHeaderGeneratorBase::GenStructureListBase(std::ofstream& stream, const Structure& st) { - std::string str = ReplaceAll(CB_STRUCTURE_LIST_BASE, "", - GetHandlePrefix()); - str = ReplaceAll(str, "", st.GetID()); - auto& elm = st.GetElements().GetElms().front(); auto& type = elm->GetType(); auto param_type = GetParamTypeString(ParameterType::Direction::IN, type); - str = ReplaceAll(str, "", param_type); + + std::string str = ReplaceAll(CB_STRUCTURE_LIST_BASE, { + { "", GetHandlePrefix() }, + { "", st.GetID() }, + { "", param_type } + }); + stream << SmartIndent(str); } @@ -148,16 +152,18 @@ void CHeaderGeneratorBase::GenStructureBase(std::ofstream& stream, stream << SmartIndent(str); for (auto& e : st.GetElements().GetElms()) { - str = ReplaceAll(CB_STRUCTURE_BASE_SET_GET, "", GetHandlePrefix()); - str = ReplaceAll(str, "", st.GetID()); - auto& type = e->GetType(); - auto param_type = GetParamTypeString(ParameterType::Direction::IN, type); - str = ReplaceAll(str, "", param_type); + auto param_type_in = GetParamTypeString(ParameterType::Direction::IN, type); + auto param_type_out = GetParamTypeString(ParameterType::Direction::OUT, type); + + str = ReplaceAll(CB_STRUCTURE_BASE_SET_GET, { + { "", GetHandlePrefix() }, + { "", st.GetID() }, + { "", param_type_in }, + { "", param_type_out }, + { "", e->GetID() } + }); - param_type = GetParamTypeString(ParameterType::Direction::OUT, type); - str = ReplaceAll(str, "", param_type); - str = ReplaceAll(str, "", e->GetID()); stream << SmartIndent(str); } } diff --git a/idlc/gen/c_proxy_body_gen.cc b/idlc/gen/c_proxy_body_gen.cc index 5c3980f..9eac4a9 100644 --- a/idlc/gen/c_proxy_body_gen.cc +++ b/idlc/gen/c_proxy_body_gen.cc @@ -76,10 +76,11 @@ void CProxyBodyGen::GenInterfaceDef(std::ofstream& stream, // @see #CB_INTERFACE_DELEGATE_DEF void CProxyBodyGen::GenInterfaceDelegateDef(std::ofstream& stream, const Interface& iface, const Declaration& decl) { - std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_DEF, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", decl.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_DEF, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", decl.GetID() } + }); stream << SmartIndent(code); } @@ -87,9 +88,10 @@ void CProxyBodyGen::GenInterfaceDelegateDef(std::ofstream& stream, // @see #CB_INTERFACE_BASE_DEF void CProxyBodyGen::GenInterfaceBaseDef(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_BASE_DEF, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_BASE_DEF, { + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } @@ -160,10 +162,11 @@ void CProxyBodyGen::GenInterfaceDelegateEnumBase(std::ofstream& stream, return; std::transform(enums.begin(), enums.end(), enums.begin(), ::toupper); - std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_ENUM_BASE, "", - enums); - code = ReplaceAll(code, "", GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_ENUM_BASE, { + { "", enums }, + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } @@ -270,27 +273,24 @@ std::string CProxyBodyGen::GenDelegateCallbackArgs(const Declaration& decl) { // @see CB_INTERFACE_DELEGATE_BASE void CProxyBodyGen::GenInterfaceDelegateBase(std::ofstream& stream, const Interface& iface, const Declaration& decl) { - std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", decl.GetID()); - std::string enum_value = GetHandlePrefix() + "_" + iface.GetID() + "_DELEGATE_" + decl.GetID(); std::transform(enum_value.begin(), enum_value.end(), enum_value.begin(), ::toupper); - code = ReplaceAll(code, "", enum_value); - code = ReplaceAll(code, "", - GenDelegateArgsDecl(iface, decl)); - code = ReplaceAll(code, "", - GenDelegateParcelRead(iface, decl)); bool has_free = false; std::string delegate_args_free = GenDelegateArgsFree(iface, decl, has_free); - code = ReplaceAll(code, "", delegate_args_free); - code = ReplaceAll(code, "", - GenDelegateCallbackArgs(decl)); - code = ReplaceAll(code, "", - has_free ? "out:" + NLine(1) : ""); + + std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", decl.GetID() }, + { "", enum_value }, + { "", GenDelegateArgsDecl(iface, decl) }, + { "", GenDelegateParcelRead(iface, decl) }, + { "", delegate_args_free }, + { "", GenDelegateCallbackArgs(decl) }, + { "", has_free ? "out:" + NLine(1) : "" } + }); stream << SmartIndent(code); } @@ -308,23 +308,25 @@ void CProxyBodyGen::GenInterfaceDelegateTable(std::ofstream& stream, "_DELEGATE_" + d->GetID(); std::transform(enum_value.begin(), enum_value.end(), enum_value.begin(), ::toupper); - std::string member = ReplaceAll(CB_INTERFACE_DELEGATE_TABLE_MEMBER, - "", enum_value); - member = ReplaceAll(member, "", GetHandlePrefix()); - member = ReplaceAll(member, "", iface.GetID()); - member = ReplaceAll(member, "", d->GetID()); - member = RemoveLine(member); + std::string member = ReplaceAll(CB_INTERFACE_DELEGATE_TABLE_MEMBER, { + { "", enum_value }, + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", d->GetID() } + }); + member = RemoveLine(member); delegate_handlers += member; } if (delegate_handlers.empty()) delegate_handlers = "nullptr," + NLine(1); - std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_TABLE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", delegate_handlers); + std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_TABLE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", delegate_handlers } + }); stream << SmartIndent(code); } @@ -349,10 +351,11 @@ void CProxyBodyGen::GenInterfaceMethodEnumBase(std::ofstream& stream, } std::transform(enums.begin(), enums.end(), enums.begin(), ::toupper); - std::string code = ReplaceAll(CB_INTERFACE_METHOD_ENUM_BASE, "", - enums); - code = ReplaceAll(code, "", GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_METHOD_ENUM_BASE, { + { "", enums }, + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } diff --git a/idlc/gen/c_proxy_header_gen.cc b/idlc/gen/c_proxy_header_gen.cc index 847a5a5..e2231a4 100644 --- a/idlc/gen/c_proxy_header_gen.cc +++ b/idlc/gen/c_proxy_header_gen.cc @@ -60,9 +60,10 @@ void CProxyHeaderGen::GenInterfaceHandles(std::ofstream& stream) { // @see #CB_INTERFACE_HANDLE void CProxyHeaderGen::GenInterfaceHandle(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_HANDLE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_HANDLE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } @@ -70,10 +71,11 @@ void CProxyHeaderGen::GenInterfaceHandle(std::ofstream& stream, // @see #CB_INTERFACE_DELEGATE_HANDLE void CProxyHeaderGen::GenInterfaceDelegateHandle(std::ofstream& stream, const Interface& iface, const Declaration& decl) { - std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_HANDLE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", decl.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_HANDLE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", decl.GetID() } + }); stream << SmartIndent(code); } @@ -110,9 +112,10 @@ void CProxyHeaderGen::GenInterface(std::ofstream& stream, // @see #CB_INTERFACE_BASE void CProxyHeaderGen::GenInterfaceBase(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } @@ -134,11 +137,12 @@ std::string CProxyHeaderGen::GenDelegateParams(const Interface& iface, // @see #CB_INTERFACE_DELEGATE_BASE void CProxyHeaderGen::GenInterfaceDelegateBase(std::ofstream& stream, const Interface& iface, const Declaration& decl) { - std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", decl.GetID()); - code = ReplaceAll(code, "", GenDelegateParams(iface, decl)); + std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", decl.GetID() }, + { "", GenDelegateParams(iface, decl) } + }); stream << SmartIndent(code); } @@ -160,12 +164,13 @@ std::string CProxyHeaderGen::GenMethodParams(const Interface& iface, // @see #CB_INTERFACE_METHOD_BASE void CProxyHeaderGen::GenInterfaceMethodBase(std::ofstream& stream, const Interface& iface, const Declaration& decl) { - std::string code = ReplaceAll(CB_INTERFACE_METHOD_BASE, "", - GetReturnTypeString(decl.GetType())); - code = ReplaceAll(code, "", GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", decl.GetID()); - code = ReplaceAll(code, "", GenMethodParams(iface, decl)); + std::string code = ReplaceAll(CB_INTERFACE_METHOD_BASE, { + { "", GetReturnTypeString(decl.GetType()) }, + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", decl.GetID() }, + { "", GenMethodParams(iface, decl) } + }); stream << SmartIndent(code); } diff --git a/idlc/gen/c_stub_body_gen.cc b/idlc/gen/c_stub_body_gen.cc index 60e168a..8b3d759 100644 --- a/idlc/gen/c_stub_body_gen.cc +++ b/idlc/gen/c_stub_body_gen.cc @@ -79,27 +79,31 @@ void CStubBodyGen::GenInterfaceEnum(std::ofstream& stream, // @see #CB_INTERFACE_METHOD_ENUM std::string CStubBodyGen::GenMethodEnums(const Interface& iface) { - std::string method_enum = ReplaceAll(CB_INTERFACE_METHOD_ENUM, - "", GetHandlePrefix()); - method_enum = ReplaceAll(method_enum, "", iface.GetID()); - method_enum = ReplaceAll(method_enum, "", "RESULT_"); + std::string method_enum = ReplaceAll(CB_INTERFACE_METHOD_ENUM, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", "RESULT_" } + }); + std::string method_enums = RemoveLine(method_enum); - method_enum = ReplaceAll(CB_INTERFACE_METHOD_ENUM, "", - GetHandlePrefix()); - method_enum = ReplaceAll(method_enum, "", iface.GetID()); - method_enum = ReplaceAll(method_enum, "", "CALLBACK_"); + method_enum = ReplaceAll(CB_INTERFACE_METHOD_ENUM, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", "CALLBACK_" } + }); + method_enums += RemoveLine(method_enum); for (auto& d : iface.GetDeclarations().GetDecls()) { if (d->GetMethodType() == Declaration::MethodType::DELEGATE) continue; - method_enum = ReplaceAll(CB_INTERFACE_METHOD_ENUM, "", - GetHandlePrefix()); - method_enum = ReplaceAll(method_enum, "", iface.GetID()); - method_enum = ReplaceAll(method_enum, "", - d->GetID()); + method_enum = ReplaceAll(CB_INTERFACE_METHOD_ENUM, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", d->GetID() } + }); method_enums += RemoveLine(method_enum); } @@ -112,10 +116,11 @@ std::string CStubBodyGen::GenMethodEnums(const Interface& iface) { // @see #CB_INTERFACE_METHOD_ENUM_BASE void CStubBodyGen::GenInterfaceMethodEnumBase(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_METHOD_ENUM_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", GenMethodEnums(iface)); + std::string code = ReplaceAll(CB_INTERFACE_METHOD_ENUM_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", GenMethodEnums(iface) } + }); stream << SmartIndent(code); } @@ -128,12 +133,12 @@ std::string CStubBodyGen::GenDelegateEnums(const Interface& iface) { if (d->GetMethodType() != Declaration::MethodType::DELEGATE) continue; - std::string method_enum = ReplaceAll(CB_INTERFACE_DELEGATE_ENUM, - "", GetHandlePrefix()); - method_enum = ReplaceAll(method_enum, "", iface.GetID()); - method_enum = ReplaceAll(method_enum, "", - d->GetID()); - method_enum = ReplaceAll(method_enum, "", std::to_string(num++)); + std::string method_enum = ReplaceAll(CB_INTERFACE_DELEGATE_ENUM, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", d->GetID() }, + { "", std::to_string(num++) } + }); method_enums += RemoveLine(method_enum); } @@ -150,10 +155,11 @@ void CStubBodyGen::GenInterfaceDelegateEnumBase(std::ofstream& stream, if (delegate_enums.empty()) return; - std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_ENUM_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", delegate_enums); + std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_ENUM_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", delegate_enums } + }); stream << SmartIndent(code); } @@ -189,10 +195,11 @@ void CStubBodyGen::GenInterfaceDef(std::ofstream& stream, // @see #CB_INTERFACE_DELEGATE_DEF void CStubBodyGen::GenInterfaceDelegateDef(std::ofstream& stream, const Interface& iface, const Declaration& decl) { - std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_DEF, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", decl.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_DEF, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", decl.GetID() } + }); stream << SmartIndent(code); } @@ -200,9 +207,10 @@ void CStubBodyGen::GenInterfaceDelegateDef(std::ofstream& stream, // @see #CB_INTERFACE_CALLBACK_PORT_CHECK_DEF void CStubBodyGen::GenInterfaceCallbackPortCheckDef(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_CALLBACK_PORT_CHECK_DEF, - "", GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_CALLBACK_PORT_CHECK_DEF, { + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } @@ -210,9 +218,10 @@ void CStubBodyGen::GenInterfaceCallbackPortCheckDef(std::ofstream& stream, // @see #CB_INTERFACE_CONTEXT_DEF void CStubBodyGen::GenInterfaceContextDef(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_DEF, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_DEF, { + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } @@ -220,9 +229,10 @@ void CStubBodyGen::GenInterfaceContextDef(std::ofstream& stream, // @see #CB_INTERFACE_BASE_DEF void CStubBodyGen::GenInterfaceBaseDef(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_BASE_DEF, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_BASE_DEF, { + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } @@ -266,9 +276,10 @@ void CStubBodyGen::GenInterface(std::ofstream& stream, const Interface& iface) { // @see #CB_INTERFACE_CONTEXT_BASE void CStubBodyGen::GenInterfaceContextBase(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } @@ -352,21 +363,20 @@ std::string CStubBodyGen::GenDelegateParcelWrite(const Interface& iface, // @see #CB_INTERFACE_DELEGATE_BASE void CStubBodyGen::GenInterfaceDelegateBase(std::ofstream& stream, const Interface& iface, const Declaration& decl) { - std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", decl.GetID()); - code = ReplaceAll(code, "", GenDelegateParams(iface, decl)); - code = ReplaceAll(code, "", - GenDelegateParamsCheck(iface, decl)); - std::string enum_value = GetHandlePrefix() + "_" + iface.GetID() + "_DELEGATE_" + decl.GetID(); std::transform(enum_value.begin(), enum_value.end(), enum_value.begin(), ::toupper); - code = ReplaceAll(code, "", enum_value); - code = ReplaceAll(code, "", - GenDelegateParcelWrite(iface, decl)); + + std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", decl.GetID() }, + { "", GenDelegateParams(iface, decl) }, + { "", GenDelegateParamsCheck(iface, decl) }, + { "", enum_value }, + { "", GenDelegateParcelWrite(iface, decl) } + }); stream << SmartIndent(code); } @@ -613,20 +623,19 @@ std::string CStubBodyGen::GenMethodHandlerArgsFree(const Interface& iface, // @see #CB_INTERFACE_METHOD_HANDLER_BASE void CStubBodyGen::GenInterfaceMethodHandlerBase(std::ofstream& stream, const Interface& iface, const Declaration& decl) { - std::string code = ReplaceAll(CB_INTERFACE_METHOD_HANDLER_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", decl.GetID()); - code = ReplaceAll(code, "", - GenMethodHandlerArgsDecl(iface, decl)); - code = ReplaceAll(code, "", - GenMethodHandlerParcelRead(iface, decl)); - code = ReplaceAll(code, "", - GenMethodHandlerCallbackInvoke(decl)); - code = ReplaceAll(code, "", - GenMethodHandlerParcelWrite(iface, decl)); - code = ReplaceAll(code, "", - GenMethodHandlerArgsFree(iface, decl)); + std::string code = ReplaceAll(CB_INTERFACE_METHOD_HANDLER_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", decl.GetID() }, + { "", GenMethodHandlerArgsDecl(iface, decl) }, + { "", + GenMethodHandlerParcelRead(iface, decl) }, + { "", + GenMethodHandlerCallbackInvoke(decl) }, + { "", + GenMethodHandlerParcelWrite(iface, decl) }, + { "", GenMethodHandlerArgsFree(iface, decl) } + }); stream << SmartIndent(code); } @@ -642,11 +651,12 @@ std::string CStubBodyGen::GenMethodHandlers(const Interface& iface) { "_METHOD_" + d->GetID(); std::transform(enum_value.begin(), enum_value.end(), enum_value.begin(), ::toupper); - std::string method_handler = ReplaceAll(CB_INTERFACE_METHOD_HANDLER, - "", enum_value); - method_handler = ReplaceAll(method_handler, "", GetHandlePrefix()); - method_handler = ReplaceAll(method_handler, "", iface.GetID()); - method_handler = ReplaceAll(method_handler, "", d->GetID()); + std::string method_handler = ReplaceAll(CB_INTERFACE_METHOD_HANDLER, { + { "", enum_value }, + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", d->GetID() } + }); code += RemoveLine(method_handler); } @@ -657,9 +667,10 @@ std::string CStubBodyGen::GenMethodHandlers(const Interface& iface) { // @see #CB_INTERFACE_METHOD_TABLE void CStubBodyGen::GenInterfaceMethodTable(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_METHOD_TABLE, "", - iface.GetID()); - code = ReplaceAll(code, "", GenMethodHandlers(iface)); + std::string code = ReplaceAll(CB_INTERFACE_METHOD_TABLE, { + { "", iface.GetID() }, + { "", GenMethodHandlers(iface) } + }); stream << SmartIndent(code); } @@ -667,9 +678,10 @@ void CStubBodyGen::GenInterfaceMethodTable(std::ofstream& stream, // @see #CB_INTERFACE_CALLBACK_PORT_CHECK void CStubBodyGen::GenInterfaceCallbackPortCheck(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_CALLBACK_PORT_CHECK, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_CALLBACK_PORT_CHECK, { + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } @@ -680,10 +692,10 @@ std::string CStubBodyGen::GenAccessControlSet(const Interface& iface) { std::string code; for (auto& attr : iface.GetAttributes().GetAttrs()) { if (attr->GetKey() == "privilege") { - std::string privilege_add = ReplaceAll(CB_INTERFACE_PRIVILEGE_ADD, - "", iface.GetID()); - privilege_add = ReplaceAll(privilege_add, "", - attr->GetValue()); + std::string privilege_add = ReplaceAll(CB_INTERFACE_PRIVILEGE_ADD, { + { "", iface.GetID() }, + { "", attr->GetValue() } + }); code += privilege_add; } else if (attr->GetKey() == "trusted" && attr->GetValue() == "true") { @@ -700,10 +712,11 @@ std::string CStubBodyGen::GenAccessControlSet(const Interface& iface) { // @see #CB_INTERFACE_BASE void CStubBodyGen::GenInterfaceBase(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", GenAccessControlSet(iface)); + std::string code = ReplaceAll(CB_INTERFACE_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", GenAccessControlSet(iface) } + }); stream << SmartIndent(code); } diff --git a/idlc/gen/c_stub_header_gen.cc b/idlc/gen/c_stub_header_gen.cc index abd91d8..1eb5f67 100644 --- a/idlc/gen/c_stub_header_gen.cc +++ b/idlc/gen/c_stub_header_gen.cc @@ -60,9 +60,10 @@ void CStubHeaderGen::GenInterfaceHandles(std::ofstream& stream) { // @see #CB_INTERFACE_CONTEXT_HANDLE void CStubHeaderGen::GenInterfaceContextHandle(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_HANDLE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_HANDLE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } @@ -70,10 +71,11 @@ void CStubHeaderGen::GenInterfaceContextHandle(std::ofstream& stream, // @see #CB_INTERFACE_DELEGATE_HANDLE void CStubHeaderGen::GenInterfaceDelegateHandle(std::ofstream& stream, const Interface& iface, const Declaration& decl) { - std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_HANDLE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", decl.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_HANDLE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", decl.GetID() } + }); stream << SmartIndent(code); } @@ -97,9 +99,10 @@ void CStubHeaderGen::GenInterfaceCallbacks(std::ofstream& stream) { // @see #CB_INTERFACE_CALLBACK_BASE void CStubHeaderGen::GenInterfaceCallbackBase(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_CALLBACK_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_CALLBACK_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } @@ -121,12 +124,13 @@ std::string CStubHeaderGen::GenMethodParams(const Interface& iface, // @see #CB_INTERFACE_METHOD_CALLBACK_BASE void CStubHeaderGen::GenInterfaceMethodCallbackBase(std::ofstream& stream, const Interface& iface, const Declaration& decl) { - std::string code = ReplaceAll(CB_INTERFACE_METHOD_CALLBACK_BASE, - "", GetReturnTypeString(decl.GetType())); - code = ReplaceAll(code, "", GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", decl.GetID()); - code = ReplaceAll(code, "", GenMethodParams(iface, decl)); + std::string code = ReplaceAll(CB_INTERFACE_METHOD_CALLBACK_BASE, { + { "", GetReturnTypeString(decl.GetType()) }, + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", decl.GetID() }, + { "", GenMethodParams(iface, decl) } + }); stream << SmartIndent(code); } @@ -157,9 +161,10 @@ void CStubHeaderGen::GenInterface(std::ofstream& stream, // @see #CB_INTERFACE_CONTEXT_BASE void CStubHeaderGen::GenInterfaceContextBase(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); + std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() } + }); stream << SmartIndent(code); } @@ -181,11 +186,12 @@ std::string CStubHeaderGen::GenDelegateParams(const Interface& iface, // @see #CB_INTERFACE_DELEGATE_BASE void CStubHeaderGen::GenInterfaceDelegateBase(std::ofstream& stream, const Interface& iface, const Declaration& decl) { - std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", decl.GetID()); - code = ReplaceAll(code, "", GenDelegateParams(iface, decl)); + std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", decl.GetID() }, + { "", GenDelegateParams(iface, decl) } + }); stream << SmartIndent(code); } @@ -198,11 +204,11 @@ std::string CStubHeaderGen::GenMethodCallbackDecls(const Interface& iface) { continue; std::string method_callback_decl = ReplaceAll( - CB_INTERFACE_METHOD_CALLBACK_DECL, "", GetHandlePrefix()); - method_callback_decl = ReplaceAll(method_callback_decl, "", - iface.GetID()); - method_callback_decl = ReplaceAll(method_callback_decl, "", - d->GetID()); + CB_INTERFACE_METHOD_CALLBACK_DECL, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", d->GetID() } + }); method_callback_decl = RemoveLine(method_callback_decl); method_callback_decls += RemoveLine(method_callback_decl, 2); @@ -214,11 +220,11 @@ std::string CStubHeaderGen::GenMethodCallbackDecls(const Interface& iface) { // @see #CB_INTERFACE_BASE void CStubHeaderGen::GenInterfaceBase(std::ofstream& stream, const Interface& iface) { - std::string code = ReplaceAll(CB_INTERFACE_BASE, "", - GetHandlePrefix()); - code = ReplaceAll(code, "", iface.GetID()); - code = ReplaceAll(code, "", - GenMethodCallbackDecls(iface)); + std::string code = ReplaceAll(CB_INTERFACE_BASE, { + { "", GetHandlePrefix() }, + { "", iface.GetID() }, + { "", GenMethodCallbackDecls(iface) } + }); stream << SmartIndent(code); } diff --git a/idlc/gen/generator.cc b/idlc/gen/generator.cc index 3602462..790ff22 100644 --- a/idlc/gen/generator.cc +++ b/idlc/gen/generator.cc @@ -98,6 +98,14 @@ std::string Generator::ReplaceAll(std::string str, return str; } +std::string Generator::ReplaceAll(std::string str, + std::initializer_list> list) { + for (const auto& i : list) + str = ReplaceAll(str, i.first, i.second); + + return str; +} + bool Generator::IsDelegateType(const BaseType& type) { for (auto& i : GetDocument().GetBlocks()) { if (i->GetType() != Block::TYPE_INTERFACE) diff --git a/idlc/gen/generator.h b/idlc/gen/generator.h index 9eba127..a7beed2 100755 --- a/idlc/gen/generator.h +++ b/idlc/gen/generator.h @@ -39,6 +39,8 @@ class Generator { std::string GetFileNamespace() const; std::string ReplaceAll(std::string str, const std::string& from, const std::string& to); + std::string ReplaceAll(std::string str, + std::initializer_list> list); bool IsDelegateType(const Interface& inf, const BaseType& type); bool IsDelegateType(const BaseType& type);