// @see #CB_STRUCTURE_ARRAY_DEF
void CBodyGeneratorBase::GenStructureArrayDef(std::ofstream& stream,
const Structure& st) {
- std::string code = ReplaceAll(CB_STRUCTURE_ARRAY_DEF, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", st.GetID());
-
auto& elm = st.GetElements().GetElms().front();
auto& type = elm->GetType();
auto element_type = GetDataTypeString(type, false);
- code = ReplaceAll(code, "<ELEMENT_TYPE>", element_type);
+
+ std::string code = ReplaceAll(CB_STRUCTURE_ARRAY_DEF, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", st.GetID() },
+ { "<ELEMENT_TYPE>", element_type }
+ });
stream << SmartIndent(code);
}
// @see #CB_STRUCTURE_LIST_DEF
void CBodyGeneratorBase::GenStructureListDef(std::ofstream& stream,
const Structure& st) {
- std::string code = ReplaceAll(CB_STRUCTURE_LIST_DEF, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", st.GetID());
+ std::string code = ReplaceAll(CB_STRUCTURE_LIST_DEF, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", st.GetID() }
+ });
stream << SmartIndent(code);
}
// @see #CB_STRUCTURE_BASE_DEF
void CBodyGeneratorBase::GenStructureBaseDef(std::ofstream& stream,
const Structure& st) {
- std::string code = ReplaceAll(CB_STRUCTURE_BASE_DEF, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", st.GetID());
-
auto& elms = st.GetElements();
- code = ReplaceAll(code, "<ELEMENTS>", GenBaseElements(elms));
+ std::string code = ReplaceAll(CB_STRUCTURE_BASE_DEF, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", st.GetID() },
+ { "<ELEMENTS>", GenBaseElements(elms) }
+ });
stream << SmartIndent(code);
}
// @see #CB_STRUCTURE_ARRAY_BASE
void CBodyGeneratorBase::GenStructureArrayBase(std::ofstream& stream,
const Structure& st) {
- std::string code = ReplaceAll(CB_STRUCTURE_ARRAY_BASE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", st.GetID());
-
auto& elm = st.GetElements().GetElms().front();
- code = ReplaceAll(code, "<PARCEL_WRITE>", GenArrayParcelWrite(elm));
- code = ReplaceAll(code, "<PARCEL_READ>", GenArrayParcelRead(elm));
-
auto& type = elm->GetType();
- auto param_type = GetParamTypeString(ParameterType::Direction::IN, type);
- code = ReplaceAll(code, "<PARAM_TYPE_IN>", param_type);
- param_type = GetParamTypeString(ParameterType::Direction::OUT, type);
- code = ReplaceAll(code, "<PARAM_TYPE_OUT>", 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>", element_type);
auto element_type_size = GetDataTypeString(type, false);
element_type_size = RemoveLastSpaces(element_type_size);
- code = ReplaceAll(code, "<ELEMENT_TYPE_SIZE>", element_type_size);
- code = ReplaceAll(code, "<ELEMENTS_FREE>", GenArrayElementsFree(elm));
+
+ std::string code = ReplaceAll(CB_STRUCTURE_ARRAY_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", st.GetID() },
+ { "<PARCEL_WRITE>", GenArrayParcelWrite(elm) },
+ { "<PARCEL_READ>", GenArrayParcelRead(elm) },
+ { "<PARAM_TYPE_IN>", param_type_in },
+ { "<PARAM_TYPE_OUT>", param_type_out },
+ { "<ELEMENT_TYPE>", element_type },
+ { "<ELEMENT_TYPE_SIZE>", element_type_size },
+ { "<ELEMENTS_FREE>", GenArrayElementsFree(elm) }
+ });
stream << SmartIndent(code);
}
// @see #CB_STRUCTURE_LIST_BASE
void CBodyGeneratorBase::GenStructureListBase(std::ofstream& stream,
const Structure& st) {
- std::string code = ReplaceAll(CB_STRUCTURE_LIST_BASE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", st.GetID());
-
auto& elm = st.GetElements().GetElms().front();
auto& type = elm->GetType();
- code = ReplaceAll(code, "<DATA_TYPE>", GetDataTypeString(type, true));
- code = ReplaceAll(code, "<DATA_FREE>", GenListDataFree(elm));
-
auto param_type = GetParamTypeString(ParameterType::Direction::IN, type);
- code = ReplaceAll(code, "<PARAM_TYPE_IN>", param_type);
-
- code = ReplaceAll(code, "<PARCEL_WRITE>", GenListParcelWrite(elm));
- code = ReplaceAll(code, "<PARCEL_READ>", GenListParcelRead(elm));
- code = ReplaceAll(code, "<LIST_ADD>", GenListAdd(elm));
- code = ReplaceAll(code, "<CALLBACK_PARAM_TYPE>",
- GenListCallbackParamType(elm));
+ std::string code = ReplaceAll(CB_STRUCTURE_LIST_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", st.GetID() },
+ { "<DATA_TYPE>", GetDataTypeString(type, true) },
+ { "<DATA_FREE>", GenListDataFree(elm) },
+ { "<PARAM_TYPE_IN>", param_type },
+ { "<PARCEL_WRITE>", GenListParcelWrite(elm) },
+ { "<PARCEL_READ>", GenListParcelRead(elm) },
+ { "<LIST_ADD>", GenListAdd(elm) },
+ { "<CALLBACK_PARAM_TYPE>", GenListCallbackParamType(elm) }
+ });
stream << SmartIndent(code);
}
const Elements& elms) {
std::string code;
for (auto& elm : elms.GetElms()) {
- std::string set_get_code = ReplaceAll(CB_STRUCTURE_BASE_SET_GET,
- "<PREFIX>", GetHandlePrefix());
- set_get_code = ReplaceAll(set_get_code, "<NAME>", name);
- set_get_code = ReplaceAll(set_get_code, "<ELEMENT_NAME>", 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>", param_type_in);
auto param_type_out = GetParamTypeString(ParameterType::Direction::OUT,
type);
- set_get_code = ReplaceAll(set_get_code, "<PARAM_TYPE_OUT>", param_type_out);
- set_get_code = ReplaceAll(set_get_code, "<BASE_SET>", GenBaseSet(elm));
- set_get_code = ReplaceAll(set_get_code, "<BASE_GET>", GenBaseGet(elm));
+ std::string set_get_code = ReplaceAll(CB_STRUCTURE_BASE_SET_GET, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", name },
+ { "<ELEMENT_NAME>", elm->GetID() },
+ { "<PARAM_TYPE_IN>", param_type_in },
+ { "<PARAM_TYPE_OUT>", param_type_out },
+ { "<BASE_SET>", GenBaseSet(elm) },
+ { "<BASE_GET>", GenBaseGet(elm) }
+ });
code += set_get_code;
}
// @see #CB_STRUCTURE_BASE
void CBodyGeneratorBase::GenStructureBase(std::ofstream& stream,
const Structure& st) {
- std::string code = ReplaceAll(CB_STRUCTURE_BASE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", st.GetID());
-
auto& elms = st.GetElements();
- code = ReplaceAll(code, "<ELEMENTS_FREE>", GenBaseElementsFree(elms));
- code = ReplaceAll(code, "<PARCEL_WRITE>", GenBaseParcelWrite(elms));
- code = ReplaceAll(code, "<PARCEL_READ>", GenBaseParcelRead(elms));
+ std::string code = ReplaceAll(CB_STRUCTURE_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", st.GetID() },
+ { "<ELEMENTS_FREE>", GenBaseElementsFree(elms) },
+ { "<PARCEL_WRITE>", GenBaseParcelWrite(elms) },
+ { "<PARCEL_READ>", GenBaseParcelRead(elms) }
+ });
code += GenBaseSetGet(st.GetID(), elms);
-
stream << SmartIndent(code);
}
// @see #CB_STRUCTURE_HANDLE
void CHeaderGeneratorBase::GenStructureHandle(std::ofstream& stream,
const Structure& st) {
- std::string str = ReplaceAll(CB_STRUCTURE_HANDLE, "<PREFIX>",
- GetHandlePrefix());
- str = ReplaceAll(str, "<NAME>", st.GetID());
+ std::string str = ReplaceAll(CB_STRUCTURE_HANDLE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", 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, "<PREFIX>",
- GetHandlePrefix());
- str = ReplaceAll(str, "<NAME>", 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_IN>", 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_OUT>", param_type);
+ std::string str = ReplaceAll(CB_STRUCTURE_ARRAY_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", st.GetID() },
+ { "<PARAM_TYPE_IN>", param_type_in },
+ { "<PARAM_TYPE_OUT>", param_type_out }
+ });
stream << SmartIndent(str);
}
// @see #CB_STRUCTURE_LIST_BASE
void CHeaderGeneratorBase::GenStructureListBase(std::ofstream& stream,
const Structure& st) {
- std::string str = ReplaceAll(CB_STRUCTURE_LIST_BASE, "<PREFIX>",
- GetHandlePrefix());
- str = ReplaceAll(str, "<NAME>", 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_IN>", param_type);
+
+ std::string str = ReplaceAll(CB_STRUCTURE_LIST_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", st.GetID() },
+ { "<PARAM_TYPE_IN>", param_type }
+ });
+
stream << SmartIndent(str);
}
stream << SmartIndent(str);
for (auto& e : st.GetElements().GetElms()) {
- str = ReplaceAll(CB_STRUCTURE_BASE_SET_GET, "<PREFIX>", GetHandlePrefix());
- str = ReplaceAll(str, "<NAME>", st.GetID());
-
auto& type = e->GetType();
- auto param_type = GetParamTypeString(ParameterType::Direction::IN, type);
- str = ReplaceAll(str, "<PARAM_TYPE_IN>", 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, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", st.GetID() },
+ { "<PARAM_TYPE_IN>", param_type_in },
+ { "<PARAM_TYPE_OUT>", param_type_out },
+ { "<ELEMENT_NAME>", e->GetID() }
+ });
- param_type = GetParamTypeString(ParameterType::Direction::OUT, type);
- str = ReplaceAll(str, "<PARAM_TYPE_OUT>", param_type);
- str = ReplaceAll(str, "<ELEMENT_NAME>", e->GetID());
stream << SmartIndent(str);
}
}
// @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, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<DELEGATE_NAME>", decl.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_DEF, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<DELEGATE_NAME>", decl.GetID() }
+ });
stream << SmartIndent(code);
}
// @see #CB_INTERFACE_BASE_DEF
void CProxyBodyGen::GenInterfaceBaseDef(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_BASE_DEF, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_BASE_DEF, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
return;
std::transform(enums.begin(), enums.end(), enums.begin(), ::toupper);
- std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_ENUM_BASE, "<ENUMS>",
- enums);
- code = ReplaceAll(code, "<PREFIX>", GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_ENUM_BASE, {
+ { "<ENUMS>", enums },
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
// @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, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<DELEGATE_NAME>", 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, "<DELEGATE_ENUM_VALUE>", enum_value);
- code = ReplaceAll(code, "<DELEGATE_ARGS_DECL>",
- GenDelegateArgsDecl(iface, decl));
- code = ReplaceAll(code, "<DELEGATE_PARCEL_READ>",
- GenDelegateParcelRead(iface, decl));
bool has_free = false;
std::string delegate_args_free = GenDelegateArgsFree(iface, decl, has_free);
- code = ReplaceAll(code, "<DELEGATE_ARGS_FREE>", delegate_args_free);
- code = ReplaceAll(code, "<DELEGATE_CALLBACK_ARGS>",
- GenDelegateCallbackArgs(decl));
- code = ReplaceAll(code, "<GOTO_STATEMENT>",
- has_free ? "out:" + NLine(1) : "");
+
+ std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<DELEGATE_NAME>", decl.GetID() },
+ { "<DELEGATE_ENUM_VALUE>", enum_value },
+ { "<DELEGATE_ARGS_DECL>", GenDelegateArgsDecl(iface, decl) },
+ { "<DELEGATE_PARCEL_READ>", GenDelegateParcelRead(iface, decl) },
+ { "<DELEGATE_ARGS_FREE>", delegate_args_free },
+ { "<DELEGATE_CALLBACK_ARGS>", GenDelegateCallbackArgs(decl) },
+ { "<GOTO_STATEMENT>", has_free ? "out:" + NLine(1) : "" }
+ });
stream << SmartIndent(code);
}
"_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>", enum_value);
- member = ReplaceAll(member, "<PREFIX>", GetHandlePrefix());
- member = ReplaceAll(member, "<NAME>", iface.GetID());
- member = ReplaceAll(member, "<DELEGATE_NAME>", d->GetID());
- member = RemoveLine(member);
+ std::string member = ReplaceAll(CB_INTERFACE_DELEGATE_TABLE_MEMBER, {
+ { "<ENUM_VALUE>", enum_value },
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<DELEGATE_NAME>", 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, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<DELEGATE_HANDLERS>", delegate_handlers);
+ std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_TABLE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<DELEGATE_HANDLERS>", delegate_handlers }
+ });
stream << SmartIndent(code);
}
}
std::transform(enums.begin(), enums.end(), enums.begin(), ::toupper);
- std::string code = ReplaceAll(CB_INTERFACE_METHOD_ENUM_BASE, "<ENUMS>",
- enums);
- code = ReplaceAll(code, "<PREFIX>", GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_METHOD_ENUM_BASE, {
+ { "<ENUMS>", enums },
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
// @see #CB_INTERFACE_HANDLE
void CProxyHeaderGen::GenInterfaceHandle(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_HANDLE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_HANDLE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
// @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, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<DELEGATE_NAME>", decl.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_HANDLE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<DELEGATE_NAME>", decl.GetID() }
+ });
stream << SmartIndent(code);
}
// @see #CB_INTERFACE_BASE
void CProxyHeaderGen::GenInterfaceBase(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_BASE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
// @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, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<DELEGATE_NAME>", decl.GetID());
- code = ReplaceAll(code, "<DELEGATE_PARAMS>", GenDelegateParams(iface, decl));
+ std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<DELEGATE_NAME>", decl.GetID() },
+ { "<DELEGATE_PARAMS>", GenDelegateParams(iface, decl) }
+ });
stream << SmartIndent(code);
}
// @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, "<RETURN_TYPE>",
- GetReturnTypeString(decl.GetType()));
- code = ReplaceAll(code, "<PREFIX>", GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<METHOD_NAME>", decl.GetID());
- code = ReplaceAll(code, "<METHOD_PARAMS>", GenMethodParams(iface, decl));
+ std::string code = ReplaceAll(CB_INTERFACE_METHOD_BASE, {
+ { "<RETURN_TYPE>", GetReturnTypeString(decl.GetType()) },
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<METHOD_NAME>", decl.GetID() },
+ { "<METHOD_PARAMS>", GenMethodParams(iface, decl) }
+ });
stream << SmartIndent(code);
}
// @see #CB_INTERFACE_METHOD_ENUM
std::string CStubBodyGen::GenMethodEnums(const Interface& iface) {
- std::string method_enum = ReplaceAll(CB_INTERFACE_METHOD_ENUM,
- "<UPPERCASE_PREFIX>", GetHandlePrefix());
- method_enum = ReplaceAll(method_enum, "<UPPERCASE_NAME>", iface.GetID());
- method_enum = ReplaceAll(method_enum, "<UPPERCASE_METHOD_NAME>", "RESULT_");
+ std::string method_enum = ReplaceAll(CB_INTERFACE_METHOD_ENUM, {
+ { "<UPPERCASE_PREFIX>", GetHandlePrefix() },
+ { "<UPPERCASE_NAME>", iface.GetID() },
+ { "<UPPERCASE_METHOD_NAME>", "RESULT_" }
+ });
+
std::string method_enums = RemoveLine(method_enum);
- method_enum = ReplaceAll(CB_INTERFACE_METHOD_ENUM, "<UPPERCASE_PREFIX>",
- GetHandlePrefix());
- method_enum = ReplaceAll(method_enum, "<UPPERCASE_NAME>", iface.GetID());
- method_enum = ReplaceAll(method_enum, "<UPPERCASE_METHOD_NAME>", "CALLBACK_");
+ method_enum = ReplaceAll(CB_INTERFACE_METHOD_ENUM, {
+ { "<UPPERCASE_PREFIX>", GetHandlePrefix() },
+ { "<UPPERCASE_NAME>", iface.GetID() },
+ { "<UPPERCASE_METHOD_NAME>", "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, "<UPPERCASE_PREFIX>",
- GetHandlePrefix());
- method_enum = ReplaceAll(method_enum, "<UPPERCASE_NAME>", iface.GetID());
- method_enum = ReplaceAll(method_enum, "<UPPERCASE_METHOD_NAME>",
- d->GetID());
+ method_enum = ReplaceAll(CB_INTERFACE_METHOD_ENUM, {
+ { "<UPPERCASE_PREFIX>", GetHandlePrefix() },
+ { "<UPPERCASE_NAME>", iface.GetID() },
+ { "<UPPERCASE_METHOD_NAME>", d->GetID() }
+ });
method_enums += RemoveLine(method_enum);
}
// @see #CB_INTERFACE_METHOD_ENUM_BASE
void CStubBodyGen::GenInterfaceMethodEnumBase(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_METHOD_ENUM_BASE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<METHOD_ENUMS>", GenMethodEnums(iface));
+ std::string code = ReplaceAll(CB_INTERFACE_METHOD_ENUM_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<METHOD_ENUMS>", GenMethodEnums(iface) }
+ });
stream << SmartIndent(code);
}
if (d->GetMethodType() != Declaration::MethodType::DELEGATE)
continue;
- std::string method_enum = ReplaceAll(CB_INTERFACE_DELEGATE_ENUM,
- "<UPPERCASE_PREFIX>", GetHandlePrefix());
- method_enum = ReplaceAll(method_enum, "<UPPERCASE_NAME>", iface.GetID());
- method_enum = ReplaceAll(method_enum, "<UPPERCASE_DELEGATE_NAME>",
- d->GetID());
- method_enum = ReplaceAll(method_enum, "<NUMBER>", std::to_string(num++));
+ std::string method_enum = ReplaceAll(CB_INTERFACE_DELEGATE_ENUM, {
+ { "<UPPERCASE_PREFIX>", GetHandlePrefix() },
+ { "<UPPERCASE_NAME>", iface.GetID() },
+ { "<UPPERCASE_DELEGATE_NAME>", d->GetID() },
+ { "<NUMBER>", std::to_string(num++) }
+ });
method_enums += RemoveLine(method_enum);
}
if (delegate_enums.empty())
return;
- std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_ENUM_BASE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<DELEGATE_ENUMS>", delegate_enums);
+ std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_ENUM_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<DELEGATE_ENUMS>", delegate_enums }
+ });
stream << SmartIndent(code);
}
// @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, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<DELEGATE_NAME>", decl.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_DEF, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<DELEGATE_NAME>", decl.GetID() }
+ });
stream << SmartIndent(code);
}
// @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,
- "<PREFIX>", GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_CALLBACK_PORT_CHECK_DEF, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
// @see #CB_INTERFACE_CONTEXT_DEF
void CStubBodyGen::GenInterfaceContextDef(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_DEF, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_DEF, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
// @see #CB_INTERFACE_BASE_DEF
void CStubBodyGen::GenInterfaceBaseDef(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_BASE_DEF, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_BASE_DEF, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
// @see #CB_INTERFACE_CONTEXT_BASE
void CStubBodyGen::GenInterfaceContextBase(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_BASE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
// @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, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<DELEGATE_NAME>", decl.GetID());
- code = ReplaceAll(code, "<DELEGATE_PARAMS>", GenDelegateParams(iface, decl));
- code = ReplaceAll(code, "<DELEGATE_PARAMS_CHECK>",
- 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, "<DELEGATE_ENUM_VALUE>", enum_value);
- code = ReplaceAll(code, "<DELEGATE_PARCEL_WRITE>",
- GenDelegateParcelWrite(iface, decl));
+
+ std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<DELEGATE_NAME>", decl.GetID() },
+ { "<DELEGATE_PARAMS>", GenDelegateParams(iface, decl) },
+ { "<DELEGATE_PARAMS_CHECK>", GenDelegateParamsCheck(iface, decl) },
+ { "<DELEGATE_ENUM_VALUE>", enum_value },
+ { "<DELEGATE_PARCEL_WRITE>", GenDelegateParcelWrite(iface, decl) }
+ });
stream << SmartIndent(code);
}
// @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, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<METHOD_NAME>", decl.GetID());
- code = ReplaceAll(code, "<METHOD_HANDLER_ARGS_DECL>",
- GenMethodHandlerArgsDecl(iface, decl));
- code = ReplaceAll(code, "<METHOD_HANDLER_PARCEL_READ>",
- GenMethodHandlerParcelRead(iface, decl));
- code = ReplaceAll(code, "<METHOD_HANDLER_CALLBACK_INVOKE>",
- GenMethodHandlerCallbackInvoke(decl));
- code = ReplaceAll(code, "<METHOD_HANDLER_PARCEL_WRITE>",
- GenMethodHandlerParcelWrite(iface, decl));
- code = ReplaceAll(code, "<METHOD_HANDLER_ARGS_FREE>",
- GenMethodHandlerArgsFree(iface, decl));
+ std::string code = ReplaceAll(CB_INTERFACE_METHOD_HANDLER_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<METHOD_NAME>", decl.GetID() },
+ { "<METHOD_HANDLER_ARGS_DECL>", GenMethodHandlerArgsDecl(iface, decl) },
+ { "<METHOD_HANDLER_PARCEL_READ>",
+ GenMethodHandlerParcelRead(iface, decl) },
+ { "<METHOD_HANDLER_CALLBACK_INVOKE>",
+ GenMethodHandlerCallbackInvoke(decl) },
+ { "<METHOD_HANDLER_PARCEL_WRITE>",
+ GenMethodHandlerParcelWrite(iface, decl) },
+ { "<METHOD_HANDLER_ARGS_FREE>", GenMethodHandlerArgsFree(iface, decl) }
+ });
stream << SmartIndent(code);
}
"_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>", enum_value);
- method_handler = ReplaceAll(method_handler, "<PREFIX>", GetHandlePrefix());
- method_handler = ReplaceAll(method_handler, "<NAME>", iface.GetID());
- method_handler = ReplaceAll(method_handler, "<METHOD_NAME>", d->GetID());
+ std::string method_handler = ReplaceAll(CB_INTERFACE_METHOD_HANDLER, {
+ { "<ENUM_VALUE>", enum_value },
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<METHOD_NAME>", d->GetID() }
+ });
code += RemoveLine(method_handler);
}
// @see #CB_INTERFACE_METHOD_TABLE
void CStubBodyGen::GenInterfaceMethodTable(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_METHOD_TABLE, "<NAME>",
- iface.GetID());
- code = ReplaceAll(code, "<METHOD_HANDLERS>", GenMethodHandlers(iface));
+ std::string code = ReplaceAll(CB_INTERFACE_METHOD_TABLE, {
+ { "<NAME>", iface.GetID() },
+ { "<METHOD_HANDLERS>", GenMethodHandlers(iface) }
+ });
stream << SmartIndent(code);
}
// @see #CB_INTERFACE_CALLBACK_PORT_CHECK
void CStubBodyGen::GenInterfaceCallbackPortCheck(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_CALLBACK_PORT_CHECK, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_CALLBACK_PORT_CHECK, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
std::string code;
for (auto& attr : iface.GetAttributes().GetAttrs()) {
if (attr->GetKey() == "privilege") {
- std::string privilege_add = ReplaceAll(CB_INTERFACE_PRIVILEGE_ADD,
- "<NAME>", iface.GetID());
- privilege_add = ReplaceAll(privilege_add, "<PRIVILEGE>",
- attr->GetValue());
+ std::string privilege_add = ReplaceAll(CB_INTERFACE_PRIVILEGE_ADD, {
+ { "<NAME>", iface.GetID() },
+ { "<PRIVILEGE>", attr->GetValue() }
+ });
code += privilege_add;
} else if (attr->GetKey() == "trusted" && attr->GetValue() == "true") {
// @see #CB_INTERFACE_BASE
void CStubBodyGen::GenInterfaceBase(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_BASE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<ACCESS_CONTROL_SET>", GenAccessControlSet(iface));
+ std::string code = ReplaceAll(CB_INTERFACE_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<ACCESS_CONTROL_SET>", GenAccessControlSet(iface) }
+ });
stream << SmartIndent(code);
}
// @see #CB_INTERFACE_CONTEXT_HANDLE
void CStubHeaderGen::GenInterfaceContextHandle(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_HANDLE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_HANDLE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
// @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, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<DELEGATE_NAME>", decl.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_HANDLE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<DELEGATE_NAME>", decl.GetID() }
+ });
stream << SmartIndent(code);
}
// @see #CB_INTERFACE_CALLBACK_BASE
void CStubHeaderGen::GenInterfaceCallbackBase(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_CALLBACK_BASE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_CALLBACK_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
// @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,
- "<RETURN_TYPE>", GetReturnTypeString(decl.GetType()));
- code = ReplaceAll(code, "<PREFIX>", GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<METHOD_NAME>", decl.GetID());
- code = ReplaceAll(code, "<METHOD_PARAMS>", GenMethodParams(iface, decl));
+ std::string code = ReplaceAll(CB_INTERFACE_METHOD_CALLBACK_BASE, {
+ { "<RETURN_TYPE>", GetReturnTypeString(decl.GetType()) },
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<METHOD_NAME>", decl.GetID() },
+ { "<METHOD_PARAMS>", GenMethodParams(iface, decl) }
+ });
stream << SmartIndent(code);
}
// @see #CB_INTERFACE_CONTEXT_BASE
void CStubHeaderGen::GenInterfaceContextBase(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_BASE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
+ std::string code = ReplaceAll(CB_INTERFACE_CONTEXT_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() }
+ });
stream << SmartIndent(code);
}
// @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, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<DELEGATE_NAME>", decl.GetID());
- code = ReplaceAll(code, "<DELEGATE_PARAMS>", GenDelegateParams(iface, decl));
+ std::string code = ReplaceAll(CB_INTERFACE_DELEGATE_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<DELEGATE_NAME>", decl.GetID() },
+ { "<DELEGATE_PARAMS>", GenDelegateParams(iface, decl) }
+ });
stream << SmartIndent(code);
}
continue;
std::string method_callback_decl = ReplaceAll(
- CB_INTERFACE_METHOD_CALLBACK_DECL, "<PREFIX>", GetHandlePrefix());
- method_callback_decl = ReplaceAll(method_callback_decl, "<NAME>",
- iface.GetID());
- method_callback_decl = ReplaceAll(method_callback_decl, "<METHOD_NAME>",
- d->GetID());
+ CB_INTERFACE_METHOD_CALLBACK_DECL, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<METHOD_NAME>", d->GetID() }
+ });
method_callback_decl = RemoveLine(method_callback_decl);
method_callback_decls += RemoveLine(method_callback_decl, 2);
// @see #CB_INTERFACE_BASE
void CStubHeaderGen::GenInterfaceBase(std::ofstream& stream,
const Interface& iface) {
- std::string code = ReplaceAll(CB_INTERFACE_BASE, "<PREFIX>",
- GetHandlePrefix());
- code = ReplaceAll(code, "<NAME>", iface.GetID());
- code = ReplaceAll(code, "<METHOD_CALLBACK_DECLS>",
- GenMethodCallbackDecls(iface));
+ std::string code = ReplaceAll(CB_INTERFACE_BASE, {
+ { "<PREFIX>", GetHandlePrefix() },
+ { "<NAME>", iface.GetID() },
+ { "<METHOD_CALLBACK_DECLS>", GenMethodCallbackDecls(iface) }
+ });
stream << SmartIndent(code);
}
return str;
}
+std::string Generator::ReplaceAll(std::string str,
+ std::initializer_list<std::pair<std::string, std::string>> 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)
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<std::pair<std::string, std::string>> list);
bool IsDelegateType(const Interface& inf, const BaseType& type);
bool IsDelegateType(const BaseType& type);