diff --git a/tools/hdi-gen/build_hdi_files.py b/tools/hdi-gen/build_hdi_files.py index 21209ba6..84301412 100755 --- a/tools/hdi-gen/build_hdi_files.py +++ b/tools/hdi-gen/build_hdi_files.py @@ -7,7 +7,7 @@ # the GPL, or the BSD license, at your option. # See the LICENSE file in the root of this repository for complete details. - +import json import os import re import sys @@ -63,10 +63,10 @@ def c_interface_file_translate(idl_file, out_dir, part, outputs): server_impl_header_file = os.path.join(out_dir, file_name + "_service.h") server_impl_source_file = os.path.join(out_dir, file_name + "_service.c") - if part == "client_lib_source": + if part == "-c": outputs.append(iface_header_file) outputs.append(client_proxy_source_file) - elif part == "server_lib_source": + elif part == "-s": outputs.append(iface_header_file) outputs.append(server_stub_header_file) outputs.append(server_stub_source_file) @@ -91,11 +91,11 @@ def c_callback_file_translate(idl_file, out_dir, part, outputs): server_impl_header_file = os.path.join(out_dir, file_name + "_service.h") server_impl_source_file = os.path.join(out_dir, file_name + "_service.c") - if part == "client_lib_source": + if part == "-c": outputs.append(iface_header_file) outputs.append(server_stub_header_file) outputs.append(server_stub_source_file) - elif part == "server_lib_source": + elif part == "-s": outputs.append(iface_header_file) outputs.append(client_proxy_source_file) else: @@ -118,19 +118,6 @@ def c_types_file_translate(idl_file, out_dir, outputs): outputs.append(types_source_file) -def c_idl_translate(idl_files, out_dir): - outputs = [] - for idl_file in idl_files: - idl_file_type = get_idl_file_type(idl_file) - if idl_file_type == IdlType.INTERFACE: - c_interface_file_translate(idl_file, out_dir, "all", outputs) - elif idl_file_type == IdlType.CALLBACK: - c_callback_file_translate(idl_file, out_dir, "all", outputs) - elif idl_file_type == IdlType.TYPES: - c_types_file_translate(idl_file, out_dir, outputs) - return outputs - - def cpp_interface_file_translate(idl_file, out_dir, part, outputs): get_file_name = idl_file.split("/")[-1] file_name = translate_file_name(get_file_name.split(".")[0]) @@ -144,11 +131,11 @@ def cpp_interface_file_translate(idl_file, out_dir, part, outputs): server_impl_header_file = os.path.join(out_dir, file_name + "_service.h") server_impl_source_file = os.path.join(out_dir, file_name + "_service.cpp") - if part == "client_lib_source": + if part == "-c": outputs.append(iface_header_file) outputs.append(client_proxy_header_file) outputs.append(client_proxy_source_file) - elif part == "server_lib_source": + elif part == "-s": outputs.append(iface_header_file) outputs.append(server_stub_header_file) outputs.append(server_stub_source_file) @@ -175,11 +162,11 @@ def cpp_callback_file_translate(idl_file, out_dir, part, outputs): server_impl_header_file = os.path.join(out_dir, file_name + "_service.h") server_impl_source_file = os.path.join(out_dir, file_name + "_service.cpp") - if part == "client_lib_source": + if part == "-c": outputs.append(iface_header_file) outputs.append(server_stub_header_file) outputs.append(server_stub_source_file) - elif part == "server_lib_source": + elif part == "-s": outputs.append(iface_header_file) outputs.append(client_proxy_header_file) outputs.append(client_proxy_source_file) @@ -204,28 +191,6 @@ def cpp_types_file_translate(idl_file, out_dir, outputs): outputs.append(types_source_file) -def cpp_idl_translate(idl_files, out_dir): - outputs = [] - for idl_file in idl_files: - idl_file_type = get_idl_file_type(idl_file) - if idl_file_type == IdlType.INTERFACE: - cpp_interface_file_translate(idl_file, out_dir, "all", outputs) - elif idl_file_type == IdlType.CALLBACK: - cpp_callback_file_translate(idl_file, out_dir, "all", outputs) - elif idl_file_type == IdlType.TYPES: - cpp_types_file_translate(idl_file, out_dir, outputs) - return outputs - - -def idl_translate(idl_files, language, out_dir): - outputs = [] - if language == "c": - outputs = c_idl_translate(idl_files, out_dir) - elif language == "cpp": - outputs = cpp_idl_translate(idl_files, out_dir) - return outputs - - def c_get_compile_source_file(idl_files, out_dir, part): outputs = [] for idl_file in idl_files: @@ -261,57 +226,121 @@ def get_compile_source_file(idl_files, language, out_dir, part): return outputs -def get_files(argv): - outputs = [] - if len(argv) < 4: - return outputs +# ./build_hdi_files.py -o +def get_output_files(argv): + result = [] + if len(argv) >= 5: + language = argv[2] + gen_dir = argv[3] + part = argv[4] + idl_files = argv[5:] - option_mode = argv[1] - language = argv[2] - out_dir = argv[3] - files = argv[4:] - - if option_mode == "-o": - outputs = idl_translate(files, language, out_dir) - elif option_mode == "-c": - outputs = get_compile_source_file(argv[4:], language, out_dir, "client_lib_source") - elif option_mode == "-s": - outputs = get_compile_source_file(argv[4:], language, out_dir, "server_lib_source") - - sys.stdout.write('\n'.join(outputs)) + result = get_compile_source_file(idl_files, language, gen_dir, part) + sys.stdout.write('\n'.join(result)) -def get_file_version(file_path): - major_version = 0 - minor_version = 0 - file_option = open(file_path, "r") - file_str = file_option.read() - result = re.findall(r'package\s\w+(?:\.\w+)*\.[V|v](\d+)_(\d+);', file_str) - - if len(result) > 0: - major_version = result[0][0] - minor_version = result[0][1] - file_option.close() - version = str(major_version) + "." + str(minor_version) - return version +# parse package name of this idl file +def parse_file_package(file_path): + package_str = "" + idl_file = open(file_path, "r") + file_str = idl_file.read() + result = re.findall(r'package\s(\w+(?:\.\w+)*);', file_str) + if (len(result) > 0): + package_str = result[0] + idl_file.close() + return package_str -def get_version(argv): - version = "0.0" - idl_files = argv[2:] +# search all idl files and parse package name +def parse_package(idl_files): + package_str = "" for idl_file in idl_files: idl_file_type = get_idl_file_type(idl_file) if idl_file_type == IdlType.INTERFACE: - version = get_file_version(idl_file) + package_str = parse_file_package(idl_file) break - sys.stdout.write(version) + return package_str + + +# parse version from package name +def parse_version(package_str): + # the version is empty by default + version_str = "" + result = re.findall(r'\w+(?:\.\w+)*\.[V|v](\d+)_(\d+)', package_str) + if len(result) > 0: + major_version = result[0][0] + minor_version = result[0][1] + version_str = str(major_version) + "." + str(minor_version) + return version_str + + +def parse_out_dir(gen_dir, package_str, path_map): + package_path_vec = path_map.split(":") + if (len(package_path_vec) != 2): + return gen_dir + + root_package = package_path_vec[0] + root_package_path = package_path_vec[1] + + temp_dir = package_str.replace(root_package, root_package_path) + temp_dir = temp_dir.replace(".", "/") + return gen_dir.replace(temp_dir, "") + + +def parse_root_package_dir(gen_dir, package_str, path_map): + package_path_vec = path_map.split(":") + if (len(package_path_vec) != 2): + return gen_dir + + root_package = package_path_vec[0] + root_package_path = package_path_vec[1] + + temp_dir = package_str.replace(root_package, "") + temp_dir = temp_dir.replace(".", "/") + return gen_dir.replace(temp_dir, "") + + +def parse_version_dir(gen_dir, version_str): + version_dir_name = "v" + version_str.replace(".", "_") + return gen_dir.replace(version_dir_name, "") + + +# get information of package, version and generation files from idl files +# ./build_hdi_files.py -i +def get_information(argv): + result = {} + if len(argv) >= 5: + language = argv[2] + gen_dir = argv[3] + path_map = argv[4] + idl_files = argv[5:] + + package_str = parse_package(idl_files) + version_str = parse_version(package_str) + + out_dir = parse_out_dir(gen_dir, package_str, path_map) + + root_package_dir = parse_root_package_dir(gen_dir, package_str, path_map) + + version_dir = parse_version_dir(gen_dir, version_str) + + result = { + "package" : package_str, + "version" : version_str, + "out_dir" : out_dir, + "root_package_dir" : root_package_dir, + "version_dir" : version_dir, + } + sys.stdout.write(json.dumps(result)) if __name__ == "__main__": if len(sys.argv) < 1: sys.stdout.write('\n') option = sys.argv[1] - if option == "-v": - get_version(sys.argv) + if option == "-i": + get_information(sys.argv) + elif option == "-o": + get_output_files(sys.argv) else: - get_files(sys.argv) \ No newline at end of file + sys.stdout.write('\n') \ No newline at end of file diff --git a/tools/hdi-gen/codegen/c_client_proxy_code_emitter.cpp b/tools/hdi-gen/codegen/c_client_proxy_code_emitter.cpp index d58f69f8..c2caafa0 100755 --- a/tools/hdi-gen/codegen/c_client_proxy_code_emitter.cpp +++ b/tools/hdi-gen/codegen/c_client_proxy_code_emitter.cpp @@ -85,7 +85,7 @@ void CClientProxyCodeEmitter::EmitProxyInclusions(StringBuilder& sb) { HeaderFile::HeaderFileSet headerFiles; - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, FileName(interfaceName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, EmitVersionHeaderName(interfaceName_))); GetHeaderOtherLibInclusions(headerFiles); for (const auto& file : headerFiles) { @@ -119,7 +119,7 @@ void CClientProxyCodeEmitter::GetHeaderOtherLibInclusions(HeaderFile::HeaderFile void CClientProxyCodeEmitter::EmitProxyDefinition(StringBuilder& sb) { - sb.AppendFormat("struct %sProxy {\n", infName_.string()); + sb.AppendFormat("struct %sProxy {\n", baseName_.string()); sb.Append(g_tab).AppendFormat("struct %s impl;\n", interfaceName_.string()); if (isKernelCode_) { sb.Append(g_tab).Append("struct HdfIoService *serv;\n"); @@ -133,7 +133,7 @@ void CClientProxyCodeEmitter::EmitProxyDefinition(StringBuilder& sb) void CClientProxyCodeEmitter::EmitProxyCallMethodImpl(StringBuilder& sb) { sb.AppendFormat("static int32_t %sProxyCall(struct %s *self, int32_t id, struct HdfSBuf *data,\n", - infName_.string(), interfaceName_.string()); + baseName_.string(), interfaceName_.string()); sb.Append(g_tab).Append("struct HdfSBuf *reply, bool isOneWay)\n"); sb.Append("{\n"); @@ -161,13 +161,13 @@ void CClientProxyCodeEmitter::EmitProxyCallMethodImpl(StringBuilder& sb) void CClientProxyCodeEmitter::EmitProxyKernelCallMethodImpl(StringBuilder& sb) { sb.AppendFormat("static int32_t %sProxyCall(struct %s *self, int32_t id, struct HdfSBuf *data,\n", - infName_.string(), interfaceName_.string()); + baseName_.string(), interfaceName_.string()); sb.Append(g_tab).Append("struct HdfSBuf *reply)\n"); sb.Append("{\n"); String remoteName = "serv"; sb.Append(g_tab).AppendFormat("struct %sProxy *proxy = CONTAINER_OF(self, struct %sProxy, impl);\n", - infName_.string(), infName_.string(), remoteName.string()); + baseName_.string(), baseName_.string(), remoteName.string()); sb.Append(g_tab).AppendFormat("struct HdfIoService *%s = proxy->%s;\n", remoteName.string(), remoteName.string()); sb.Append(g_tab).AppendFormat("if (%s == NULL\n", remoteName.string()); @@ -202,10 +202,10 @@ void CClientProxyCodeEmitter::EmitProxyMethodImpl(const AutoPtr& meth { if (method->GetParameterNumber() == 0) { sb.AppendFormat("static int32_t %sProxy%s(struct %s *self)\n", - infName_.string(), method->GetName().string(), interfaceName_.string()); + baseName_.string(), method->GetName().string(), interfaceName_.string()); } else { StringBuilder paramStr; - paramStr.AppendFormat("static int32_t %sProxy%s(", infName_.string(), method->GetName().string()); + paramStr.AppendFormat("static int32_t %sProxy%s(", baseName_.string(), method->GetName().string()); paramStr.AppendFormat("struct %s *self, ", interfaceName_.string()); for (size_t i = 0; i < method->GetParameterNumber(); i++) { AutoPtr param = method->GetParameter(i); @@ -344,13 +344,13 @@ void CClientProxyCodeEmitter::EmitStubCallMethod(const AutoPtr& metho void CClientProxyCodeEmitter::EmitProxyAsObjectMethodImpl(StringBuilder& sb) { sb.AppendFormat("static struct HdfRemoteService *%sProxyAsObject(struct %s *self)\n", - infName_.string(), interfaceName_.string()); + baseName_.string(), interfaceName_.string()); sb.Append("{\n"); sb.Append(g_tab).Append("if (self == NULL) {\n"); sb.Append(g_tab).Append(g_tab).Append("return NULL;\n"); sb.Append(g_tab).Append("}\n"); sb.Append(g_tab).AppendFormat("struct %sProxy *proxy = CONTAINER_OF(self, struct %sProxy, impl);\n", - infName_.string(), infName_.string()); + baseName_.string(), baseName_.string()); sb.Append(g_tab).Append("return proxy->remote;\n"); sb.Append("}\n"); } @@ -359,21 +359,21 @@ void CClientProxyCodeEmitter::EmitProxyConstruction(StringBuilder& sb) { String objName = "impl"; sb.AppendFormat("static void %sProxyConstruct(struct %s *%s)\n", - infName_.string(), interfaceName_.string(), objName.string()); + baseName_.string(), interfaceName_.string(), objName.string()); sb.Append("{\n"); for (size_t i = 0; i < interface_->GetMethodNumber(); i++) { AutoPtr method = interface_->GetMethod(i); sb.Append(g_tab).AppendFormat("%s->%s = %sProxy%s;\n", - objName.string(), method->GetName().string(), infName_.string(), method->GetName().string()); + objName.string(), method->GetName().string(), baseName_.string(), method->GetName().string()); } AutoPtr getVerMethod = interface_->GetVersionMethod(); sb.Append(g_tab).AppendFormat("%s->%s = %sProxy%s;\n", objName.string(), getVerMethod->GetName().string(), - infName_.string(), getVerMethod->GetName().string()); + baseName_.string(), getVerMethod->GetName().string()); if (!isKernelCode_) { - sb.Append(g_tab).AppendFormat("%s->AsObject = %sProxyAsObject;\n", objName.string(), infName_.string()); + sb.Append(g_tab).AppendFormat("%s->AsObject = %sProxyAsObject;\n", objName.string(), baseName_.string()); } sb.Append("}\n"); @@ -381,9 +381,9 @@ void CClientProxyCodeEmitter::EmitProxyConstruction(StringBuilder& sb) void CClientProxyCodeEmitter::EmitProxyGetMethodImpl(StringBuilder& sb) { - sb.AppendFormat("struct %s *%sGet()\n", interfaceName_.string(), infName_.string()); + sb.AppendFormat("struct %s *%sGet()\n", interfaceName_.string(), baseName_.string()); sb.Append("{\n"); - sb.Append(g_tab).AppendFormat("return %sGetInstance(\"%s\");\n", infName_.string(), FileName(implName_).string()); + sb.Append(g_tab).AppendFormat("return %sGetInstance(\"%s\");\n", baseName_.string(), FileName(implName_).string()); sb.Append("}\n"); } @@ -393,7 +393,7 @@ void CClientProxyCodeEmitter::EmitProxyGetInstanceMethodImpl(StringBuilder& sb) String SerMajorName = "serMajorVer"; String SerMinorName = "serMinorVer"; sb.AppendFormat("struct %s *%sGetInstance(const char *instanceName)\n", - interfaceName_.string(), infName_.string()); + interfaceName_.string(), baseName_.string()); sb.Append("{\n"); sb.Append(g_tab).Append("struct HDIServiceManager *serviceMgr = HDIServiceManagerGet();\n"); sb.Append(g_tab).Append("if (serviceMgr == NULL) {\n"); @@ -405,12 +405,12 @@ void CClientProxyCodeEmitter::EmitProxyGetInstanceMethodImpl(StringBuilder& sb) sb.Append(g_tab).Append("HDIServiceManagerRelease(serviceMgr);\n"); sb.Append(g_tab).Append("if (remote == NULL) {\n"); sb.Append(g_tab).Append(g_tab).AppendFormat("HDF_LOGE(\"%%{public}s: %sService not found!\", __func__);\n", - infName_.string()); + baseName_.string()); sb.Append(g_tab).Append(g_tab).Append("return NULL;\n"); sb.Append(g_tab).Append("}\n\n"); - sb.Append(g_tab).AppendFormat("struct %sProxy *proxy = ", infName_.string()); - sb.AppendFormat("(struct %sProxy *)OsalMemAlloc(sizeof(struct %sProxy));\n", infName_.string(), - infName_.string()); + sb.Append(g_tab).AppendFormat("struct %sProxy *proxy = ", baseName_.string()); + sb.AppendFormat("(struct %sProxy *)OsalMemAlloc(sizeof(struct %sProxy));\n", baseName_.string(), + baseName_.string()); sb.Append(g_tab).Append("if (proxy == NULL) {\n"); sb.Append(g_tab).Append(g_tab).AppendFormat( "HDF_LOGE(\"%%{public}s: malloc %s proxy failed!\", __func__);\n", interfaceName_.string()); @@ -419,14 +419,14 @@ void CClientProxyCodeEmitter::EmitProxyGetInstanceMethodImpl(StringBuilder& sb) sb.Append(g_tab).Append("}\n\n"); sb.Append(g_tab).Append("proxy->remote = remote;\n"); sb.Append(g_tab).AppendFormat("struct %s *%s = &proxy->impl;\n", interfaceName_.string(), objName.string()); - sb.Append(g_tab).AppendFormat("%sProxyConstruct(%s);\n", infName_.string(), objName.string()); + sb.Append(g_tab).AppendFormat("%sProxyConstruct(%s);\n", baseName_.string(), objName.string()); sb.Append(g_tab).AppendFormat("uint32_t %s = 0;\n", SerMajorName.string()); sb.Append(g_tab).AppendFormat("uint32_t %s = 0;\n", SerMinorName.string()); sb.Append(g_tab).AppendFormat("int32_t %s = %s->GetVersion(%s, &%s, &%s);\n", errorCodeName_.string(), objName.string(), objName.string(), SerMajorName.string(), SerMinorName.string()); sb.Append(g_tab).AppendFormat("if (%s != HDF_SUCCESS) {\n", errorCodeName_.string()); sb.Append(g_tab).Append(g_tab).Append("HDF_LOGE(\"%{public}s: get version failed!\", __func__);\n"); - sb.Append(g_tab).Append(g_tab).AppendFormat("%sRelease(%s);\n", infName_.string(), objName.string()); + sb.Append(g_tab).Append(g_tab).AppendFormat("%sRelease(%s);\n", baseName_.string(), objName.string()); sb.Append(g_tab).Append(g_tab).Append("return NULL;\n"); sb.Append(g_tab).Append("}\n\n"); sb.Append(g_tab).AppendFormat("if (%s != %s) {\n", SerMajorName.string(), majorVerName_.string()); @@ -434,7 +434,7 @@ void CClientProxyCodeEmitter::EmitProxyGetInstanceMethodImpl(StringBuilder& sb) sb.Append("version of service:%u.%u, version of client:%u.%u\", __func__,\n"); sb.Append(g_tab).Append(g_tab).Append(g_tab).AppendFormat("%s, %s, %s, %s);\n", SerMajorName.string(), SerMinorName.string(), majorVerName_.string(), minorVerName_.string()); - sb.Append(g_tab).Append(g_tab).AppendFormat("%sRelease(%s);\n", infName_.string(), objName.string()); + sb.Append(g_tab).Append(g_tab).AppendFormat("%sRelease(%s);\n", baseName_.string(), objName.string()); sb.Append(g_tab).Append(g_tab).Append("return NULL;\n"); sb.Append(g_tab).Append("}\n\n"); sb.Append(g_tab).AppendFormat("return %s;\n", objName.string()); @@ -443,19 +443,19 @@ void CClientProxyCodeEmitter::EmitProxyGetInstanceMethodImpl(StringBuilder& sb) void CClientProxyCodeEmitter::EmitKernelProxyGetInstanceMethodImpl(StringBuilder& sb) { - sb.AppendFormat("struct %s *%sGetInstance(const char* serviceName)\n", interfaceName_.string(), infName_.string()); + sb.AppendFormat("struct %s *%sGetInstance(const char* serviceName)\n", interfaceName_.string(), baseName_.string()); sb.Append("{\n"); sb.Append(g_tab).AppendFormat("struct HdfIoService *serv = "); sb.Append("HdfIoServiceBind(serviceName);\n"); sb.Append(g_tab).Append("if (serv == NULL) {\n"); sb.Append(g_tab).Append(g_tab).AppendFormat( - "HDF_LOGE(\"%%{public}s: %sService not found!\", __func__);\n", infName_.string()); + "HDF_LOGE(\"%%{public}s: %sService not found!\", __func__);\n", baseName_.string()); sb.Append(g_tab).Append(g_tab).Append("return NULL;\n"); sb.Append(g_tab).Append("}\n"); sb.Append("\n"); sb.Append(g_tab).AppendFormat("struct %sProxy *proxy = (struct %sProxy *)OsalMemAlloc(sizeof(struct %sProxy));\n", - infName_.string(), infName_.string(), infName_.string()); + baseName_.string(), baseName_.string(), baseName_.string()); sb.Append(g_tab).Append("if (proxy == NULL) {\n"); sb.Append(g_tab).Append(g_tab).AppendFormat( "HDF_LOGE(\"%%{public}s: malloc %s proxy failed!\", __func__);\n", interfaceName_.string()); @@ -465,7 +465,7 @@ void CClientProxyCodeEmitter::EmitKernelProxyGetInstanceMethodImpl(StringBuilder sb.Append("\n"); sb.Append(g_tab).Append("proxy->serv = serv;\n"); - sb.Append(g_tab).AppendFormat("%sProxyConstruct(&proxy->impl);\n", infName_.string()); + sb.Append(g_tab).AppendFormat("%sProxyConstruct(&proxy->impl);\n", baseName_.string()); sb.Append(g_tab).Append("return &proxy->impl;\n"); sb.Append("}\n"); } @@ -476,16 +476,16 @@ void CClientProxyCodeEmitter::EmitCbProxyGetMethodImpl(StringBuilder& sb) String SerMajorName = "serMajorVer"; String SerMinorName = "serMinorVer"; sb.AppendFormat("struct %s *%sGet(struct HdfRemoteService *remote)\n", - interfaceName_.string(), infName_.string()); + interfaceName_.string(), baseName_.string()); sb.Append("{\n"); sb.Append(g_tab).Append("if (remote == NULL) {\n"); sb.Append(g_tab).Append(g_tab).AppendFormat("HDF_LOGE(\"%%{public}s: %sService not found!\", __func__);\n", - infName_.string()); + baseName_.string()); sb.Append(g_tab).Append(g_tab).Append("return NULL;\n"); sb.Append(g_tab).Append("}\n\n"); - sb.Append(g_tab).AppendFormat("struct %sProxy *proxy = ", infName_.string()); - sb.AppendFormat("(struct %sProxy *)OsalMemAlloc(sizeof(struct %sProxy));\n", infName_.string(), - infName_.string()); + sb.Append(g_tab).AppendFormat("struct %sProxy *proxy = ", baseName_.string()); + sb.AppendFormat("(struct %sProxy *)OsalMemAlloc(sizeof(struct %sProxy));\n", baseName_.string(), + baseName_.string()); sb.Append(g_tab).Append("if (proxy == NULL) {\n"); sb.Append(g_tab).Append(g_tab).AppendFormat( "HDF_LOGE(\"%%{public}s: malloc %s proxy failed!\", __func__);\n", interfaceName_.string()); @@ -494,14 +494,14 @@ void CClientProxyCodeEmitter::EmitCbProxyGetMethodImpl(StringBuilder& sb) sb.Append(g_tab).Append("}\n\n"); sb.Append(g_tab).Append("proxy->remote = remote;\n"); sb.Append(g_tab).AppendFormat("struct %s *%s = &proxy->impl;\n", interfaceName_.string(), objName.string()); - sb.Append(g_tab).AppendFormat("%sProxyConstruct(%s);\n", infName_.string(), objName.string()); + sb.Append(g_tab).AppendFormat("%sProxyConstruct(%s);\n", baseName_.string(), objName.string()); sb.Append(g_tab).AppendFormat("uint32_t %s = 0;\n", SerMajorName.string()); sb.Append(g_tab).AppendFormat("uint32_t %s = 0;\n", SerMinorName.string()); sb.Append(g_tab).AppendFormat("int32_t %s = %s->GetVersion(%s, &%s, &%s);\n", errorCodeName_.string(), objName.string(), objName.string(), SerMajorName.string(), SerMinorName.string()); sb.Append(g_tab).AppendFormat("if (%s != HDF_SUCCESS) {\n", errorCodeName_.string()); sb.Append(g_tab).Append(g_tab).Append("HDF_LOGE(\"%{public}s: get version failed!\", __func__);\n"); - sb.Append(g_tab).Append(g_tab).AppendFormat("%sRelease(%s);\n", infName_.string(), objName.string()); + sb.Append(g_tab).Append(g_tab).AppendFormat("%sRelease(%s);\n", baseName_.string(), objName.string()); sb.Append(g_tab).Append(g_tab).Append("return NULL;\n"); sb.Append(g_tab).Append("}\n\n"); sb.Append(g_tab).AppendFormat("if (%s != %s) {\n", SerMajorName.string(), majorVerName_.string()); @@ -509,7 +509,7 @@ void CClientProxyCodeEmitter::EmitCbProxyGetMethodImpl(StringBuilder& sb) sb.Append("version of service:%u.%u, version of client:%u.%u\", __func__,\n"); sb.Append(g_tab).Append(g_tab).Append(g_tab).AppendFormat("%s, %s, %s, %s);\n", SerMajorName.string(), SerMinorName.string(), majorVerName_.string(), minorVerName_.string()); - sb.Append(g_tab).Append(g_tab).AppendFormat("%sRelease(%s);\n", infName_.string(), objName.string()); + sb.Append(g_tab).Append(g_tab).AppendFormat("%sRelease(%s);\n", baseName_.string(), objName.string()); sb.Append(g_tab).Append(g_tab).Append("return NULL;\n"); sb.Append(g_tab).Append("}\n\n"); sb.Append(g_tab).AppendFormat("return %s;\n", objName.string()); @@ -518,13 +518,13 @@ void CClientProxyCodeEmitter::EmitCbProxyGetMethodImpl(StringBuilder& sb) void CClientProxyCodeEmitter::EmitProxyReleaseMethodImpl(StringBuilder& sb) { - sb.AppendFormat("void %sRelease(struct %s *instance)\n", infName_.string(), interfaceName_.string()); + sb.AppendFormat("void %sRelease(struct %s *instance)\n", baseName_.string(), interfaceName_.string()); sb.Append("{\n"); sb.Append(g_tab).Append("if (instance == NULL) {\n"); sb.Append(g_tab).Append(g_tab).Append("return;\n"); sb.Append(g_tab).Append("}\n"); sb.Append(g_tab).AppendFormat("struct %sProxy *proxy = CONTAINER_OF(instance, struct %sProxy, impl);\n", - infName_.string(), infName_.string()); + baseName_.string(), baseName_.string()); sb.Append(g_tab).Append("HdfRemoteServiceRecycle(proxy->remote);\n"); sb.Append(g_tab).Append("OsalMemFree(proxy);\n"); sb.Append("}\n"); @@ -532,13 +532,13 @@ void CClientProxyCodeEmitter::EmitProxyReleaseMethodImpl(StringBuilder& sb) void CClientProxyCodeEmitter::EmitKernelProxyReleaseMethodImpl(StringBuilder& sb) { - sb.AppendFormat("void %sRelease(struct %s *instance)\n", infName_.string(), interfaceName_.string()); + sb.AppendFormat("void %sRelease(struct %s *instance)\n", baseName_.string(), interfaceName_.string()); sb.Append("{\n"); sb.Append(g_tab).Append("if (instance == NULL) {\n"); sb.Append(g_tab).Append(g_tab).Append("return;\n"); sb.Append(g_tab).Append("}\n"); sb.Append(g_tab).AppendFormat("struct %sProxy *proxy = CONTAINER_OF(instance, struct %sProxy, impl);\n", - infName_.string(), infName_.string()); + baseName_.string(), baseName_.string()); sb.Append(g_tab).Append("HdfIoServiceRecycle(proxy->serv);\n"); sb.Append(g_tab).Append("OsalMemFree(proxy);\n"); sb.Append("}\n"); diff --git a/tools/hdi-gen/codegen/c_code_emitter.cpp b/tools/hdi-gen/codegen/c_code_emitter.cpp index 6d0b9b78..f8aabdf3 100755 --- a/tools/hdi-gen/codegen/c_code_emitter.cpp +++ b/tools/hdi-gen/codegen/c_code_emitter.cpp @@ -14,54 +14,12 @@ namespace OHOS { namespace HDI { -String CCodeEmitter::FileName(const String& name) -{ - if (name.IsEmpty()) { - return name; - } - - String subName = Options::GetInstance().GetSubPackage(name); - StringBuilder sb; - for (int i = 0; i < subName.GetLength(); i++) { - char c = subName[i]; - if (isupper(c) != 0) { - // 2->Index of the last char array. - if (i > 1 && subName[i - 1] != '.' && subName[i - 2] != '.') { - sb.Append('_'); - } - sb.Append(tolower(c)); - } else { - sb.Append(c); - } - } - - return sb.ToString().Replace('.', '/'); -} - -String CCodeEmitter::EmitMethodCmdID(const AutoPtr& method) -{ - return String::Format("CMD_%s_%s", infName_.ToUnderLineUpper().string(), - method->GetName().ToUnderLineUpper().string()); -} - -void CCodeEmitter::EmitInterfaceMethodCommands(StringBuilder& sb) -{ - sb.Append("enum {\n"); - for (size_t i = 0; i < interface_->GetMethodNumber(); i++) { - AutoPtr method = interface_->GetMethod(i); - sb.Append(g_tab).Append(EmitMethodCmdID(method)).Append(",\n"); - } - - sb.Append(g_tab).Append(EmitMethodCmdID(interface_->GetVersionMethod())).Append(",\n"); - sb.Append("};\n"); -} - void CCodeEmitter::GetImportInclusions(HeaderFile::HeaderFileSet& headerFiles) { for (const auto& importPair : ast_->GetImports()) { AutoPtr importAst = importPair.second; - String fileName = FileName(importAst->GetFullName()); - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, FileName(importAst->GetFullName()))); + String fileName = PackageToFilePath(importAst->GetFullName()); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, fileName)); } } @@ -146,29 +104,6 @@ String CCodeEmitter::MacroName(const String& name) return macro; } -String CCodeEmitter::ConstantName(const String& name) -{ - if (name.IsEmpty()) { - return name; - } - - StringBuilder sb; - - for (int i = 0; i < name.GetLength(); i++) { - char c = name[i]; - if (isupper(c) != 0) { - if (i > 1) { - sb.Append('_'); - } - sb.Append(c); - } else { - sb.Append(toupper(c)); - } - } - - return sb.ToString(); -} - String CCodeEmitter::SpecificationParam(StringBuilder& paramSb, const String& prefix) { int maxLineLen = 120; diff --git a/tools/hdi-gen/codegen/c_code_emitter.h b/tools/hdi-gen/codegen/c_code_emitter.h index bf415018..59dd44ae 100755 --- a/tools/hdi-gen/codegen/c_code_emitter.h +++ b/tools/hdi-gen/codegen/c_code_emitter.h @@ -20,13 +20,7 @@ namespace HDI { class CCodeEmitter : public CodeEmitter { public: virtual ~CCodeEmitter() = default; - - static String FileName(const String& name); protected: - String EmitMethodCmdID(const AutoPtr& method); - - void EmitInterfaceMethodCommands(StringBuilder& sb); - void GetImportInclusions(HeaderFile::HeaderFileSet& headerFiles); void EmitInterfaceMethodParameter(const AutoPtr& parameter, StringBuilder& sb, const String& prefix); diff --git a/tools/hdi-gen/codegen/c_custom_types_code_emitter.cpp b/tools/hdi-gen/codegen/c_custom_types_code_emitter.cpp index affcfdc6..801aae10 100755 --- a/tools/hdi-gen/codegen/c_custom_types_code_emitter.cpp +++ b/tools/hdi-gen/codegen/c_custom_types_code_emitter.cpp @@ -36,12 +36,12 @@ void CCustomTypesCodeEmitter::EmitCode() void CCustomTypesCodeEmitter::EmitCustomTypesHeaderFile() { - String filePath = String::Format("%s/%s.h", directory_.string(), FileName(infName_).string()); + String filePath = String::Format("%s/%s.h", directory_.string(), FileName(baseName_).string()); File file(filePath, File::WRITE); StringBuilder sb; EmitLicense(sb); - EmitHeadMacro(sb, infName_); + EmitHeadMacro(sb, baseName_); sb.Append("\n"); EmitHeaderInclusions(sb); sb.Append("\n"); @@ -53,7 +53,7 @@ void CCustomTypesCodeEmitter::EmitCustomTypesHeaderFile() sb.Append("\n"); EmitTailExternC(sb); sb.Append("\n"); - EmitTailMacro(sb, infName_); + EmitTailMacro(sb, baseName_); String data = sb.ToString(); file.WriteData(data.string(), data.GetLength()); @@ -160,7 +160,7 @@ void CCustomTypesCodeEmitter::EmitCustomTypeFreeDecl(StringBuilder& sb, void CCustomTypesCodeEmitter::EmitCustomTypesSourceFile() { - String filePath = String::Format("%s/%s.c", directory_.string(), FileName(infName_).string()); + String filePath = String::Format("%s/%s.c", directory_.string(), FileName(baseName_).string()); File file(filePath, File::WRITE); StringBuilder sb; @@ -178,7 +178,7 @@ void CCustomTypesCodeEmitter::EmitCustomTypesSourceFile() void CCustomTypesCodeEmitter::EmitSoucreIncludsions(StringBuilder& sb) { HeaderFile::HeaderFileSet headerFiles; - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, FileName(infName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, EmitVersionHeaderName(baseName_))); GetSourceOtherLibInclusions(headerFiles); for (const auto& file : headerFiles) { diff --git a/tools/hdi-gen/codegen/c_interface_code_emitter.cpp b/tools/hdi-gen/codegen/c_interface_code_emitter.cpp index 7a55b96e..835b94b6 100755 --- a/tools/hdi-gen/codegen/c_interface_code_emitter.cpp +++ b/tools/hdi-gen/codegen/c_interface_code_emitter.cpp @@ -51,7 +51,7 @@ void CInterfaceCodeEmitter::EmitInterfaceHeaderFile() sb.Append("\n"); EmitInterfaceVersionMacro(sb); sb.Append("\n"); - EmitInterfaceMethodCommands(sb); + EmitInterfaceMethodCommands(sb, ""); sb.Append("\n"); EmitInterfaceDefinition(sb); sb.Append("\n"); @@ -153,17 +153,17 @@ void CInterfaceCodeEmitter::EmitAsObjectMethod(StringBuilder& sb, const String& void CInterfaceCodeEmitter::EmitInterfaceGetMethodDecl(StringBuilder& sb) { String methodParamStr = isCallbackInterface() ? "struct HdfRemoteService *remote" : "void"; - sb.AppendFormat("struct %s *%sGet(%s);\n", interfaceName_.string(), infName_.string(), methodParamStr.string()); + sb.AppendFormat("struct %s *%sGet(%s);\n", interfaceName_.string(), baseName_.string(), methodParamStr.string()); if (!isCallbackInterface()) { sb.Append("\n"); sb.AppendFormat("struct %s *%sGetInstance(const char *instanceName);\n", - interfaceName_.string(), infName_.string()); + interfaceName_.string(), baseName_.string()); } } void CInterfaceCodeEmitter::EmitInterfaceReleaseMethodDecl(StringBuilder& sb) { - sb.AppendFormat("void %sRelease(struct %s *instance);\n", infName_.string(), interfaceName_.string()); + sb.AppendFormat("void %sRelease(struct %s *instance);\n", baseName_.string(), interfaceName_.string()); } } // namespace HDI } // namespace OHOS \ No newline at end of file diff --git a/tools/hdi-gen/codegen/c_service_driver_code_emitter.cpp b/tools/hdi-gen/codegen/c_service_driver_code_emitter.cpp index 6e818a95..e3cd402e 100755 --- a/tools/hdi-gen/codegen/c_service_driver_code_emitter.cpp +++ b/tools/hdi-gen/codegen/c_service_driver_code_emitter.cpp @@ -38,7 +38,7 @@ void CServiceDriverCodeEmitter::EmitCode() void CServiceDriverCodeEmitter::EmitDriverSourceFile() { - String filePath = String::Format("%s/%s.c", directory_.string(), FileName(infName_ + "Driver").string()); + String filePath = String::Format("%s/%s.c", directory_.string(), FileName(baseName_ + "Driver").string()); File file(filePath, File::WRITE); StringBuilder sb; @@ -67,8 +67,8 @@ void CServiceDriverCodeEmitter::EmitDriverIncluions(StringBuilder& sb) { HeaderFile::HeaderFileSet headerFiles; - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, FileName(stubName_))); - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, FileName(implName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, EmitVersionHeaderName(stubName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, EmitVersionHeaderName(implName_))); GetDriverSourceOtherLibInclusions(headerFiles); for (const auto& file : headerFiles) { @@ -86,7 +86,7 @@ void CServiceDriverCodeEmitter::GetDriverSourceOtherLibInclusions(HeaderFile::He void CServiceDriverCodeEmitter::EmitDriverServiceDecl(StringBuilder& sb) { - sb.AppendFormat("struct Hdf%sHost {\n", infName_.string()); + sb.AppendFormat("struct Hdf%sHost {\n", baseName_.string()); sb.Append(g_tab).AppendFormat("struct IDeviceIoService ioservice;\n"); sb.Append(g_tab).AppendFormat("struct %s *service;\n", interfaceName_.string()); sb.Append("};\n"); @@ -94,56 +94,56 @@ void CServiceDriverCodeEmitter::EmitDriverServiceDecl(StringBuilder& sb) void CServiceDriverCodeEmitter::EmitDriverDispatch(StringBuilder& sb) { - String hostName = infName_.ToLowerCase() + "Host"; + String hostName = baseName_.ToLowerCase() + "Host"; sb.AppendFormat("static int32_t %sDriverDispatch(struct HdfDeviceIoClient *client, int cmdId,\n", - infName_.string()); + baseName_.string()); sb.Append(g_tab).Append("struct HdfSBuf *data, struct HdfSBuf *reply)\n"); sb.Append("{\n"); sb.Append(g_tab).AppendFormat("struct Hdf%sHost *%s = CONTAINER_OF(\n", - infName_.string(), hostName.string()); + baseName_.string(), hostName.string()); sb.Append(g_tab).Append(g_tab).AppendFormat("client->device->service, struct Hdf%sHost, ioservice);\n", - infName_.string()); + baseName_.string()); sb.Append(g_tab).AppendFormat("return %sServiceOnRemoteRequest(%s->service, cmdId, data, reply);\n", - infName_.string(), hostName.string()); + baseName_.string(), hostName.string()); sb.Append("}\n"); } void CServiceDriverCodeEmitter::EmitDriverInit(StringBuilder& sb) { - sb.AppendFormat("int Hdf%sDriverInit(struct HdfDeviceObject *deviceObject)\n", infName_.string()); + sb.AppendFormat("int Hdf%sDriverInit(struct HdfDeviceObject *deviceObject)\n", baseName_.string()); sb.Append("{\n"); - sb.Append(g_tab).AppendFormat("HDF_LOGI(\"Hdf%sDriverInit enter.\");\n", infName_.string()); + sb.Append(g_tab).AppendFormat("HDF_LOGI(\"Hdf%sDriverInit enter.\");\n", baseName_.string()); sb.Append(g_tab).Append("return HDF_SUCCESS;\n"); sb.Append("}\n"); } void CServiceDriverCodeEmitter::EmitDriverBind(StringBuilder& sb) { - String hostName = infName_.ToLowerCase() + "Host"; - sb.AppendFormat("int Hdf%sDriverBind(struct HdfDeviceObject *deviceObject)\n", infName_.string()); + String hostName = baseName_.ToLowerCase() + "Host"; + sb.AppendFormat("int Hdf%sDriverBind(struct HdfDeviceObject *deviceObject)\n", baseName_.string()); sb.Append("{\n"); - sb.Append(g_tab).AppendFormat("HDF_LOGI(\"Hdf%sDriverBind enter.\");\n", infName_.string()); + sb.Append(g_tab).AppendFormat("HDF_LOGI(\"Hdf%sDriverBind enter.\");\n", baseName_.string()); sb.Append("\n"); sb.Append(g_tab).AppendFormat("struct Hdf%sHost *%s = (struct Hdf%sHost *)OsalMemAlloc(\n", - infName_.string(), hostName.string(), infName_.string()); - sb.Append(g_tab).Append(g_tab).AppendFormat("sizeof(struct Hdf%sHost));\n", infName_.string()); + baseName_.string(), hostName.string(), baseName_.string()); + sb.Append(g_tab).Append(g_tab).AppendFormat("sizeof(struct Hdf%sHost));\n", baseName_.string()); sb.Append(g_tab).AppendFormat("if (%s == NULL) {\n", hostName.string()); sb.Append(g_tab).Append(g_tab).AppendFormat( - "HDF_LOGE(\"Hdf%sDriverBind OsalMemAlloc Hdf%sHost failed!\");\n", infName_.string(), infName_.string()); + "HDF_LOGE(\"Hdf%sDriverBind OsalMemAlloc Hdf%sHost failed!\");\n", baseName_.string(), baseName_.string()); sb.Append(g_tab).Append(g_tab).Append("return HDF_FAILURE;\n"); sb.Append(g_tab).Append("}\n"); sb.Append("\n"); sb.Append(g_tab).AppendFormat("%s->ioservice.Dispatch = %sDriverDispatch;\n", - hostName.string(), infName_.string()); + hostName.string(), baseName_.string()); sb.Append(g_tab).AppendFormat("%s->ioservice.Open = NULL;\n", hostName.string()); sb.Append(g_tab).AppendFormat("%s->ioservice.Release = NULL;\n", hostName.string()); - sb.Append(g_tab).AppendFormat("%s->service = %sStubGetInstance();\n", hostName.string(), infName_.string()); + sb.Append(g_tab).AppendFormat("%s->service = %sStubGetInstance();\n", hostName.string(), baseName_.string()); sb.Append(g_tab).AppendFormat("if (%s->service == NULL) {\n", hostName.string()); sb.Append(g_tab).Append(g_tab).AppendFormat("OsalMemFree(%s);\n", hostName.string()); sb.Append(g_tab).Append(g_tab).Append("return HDF_FAILURE;\n"); sb.Append(g_tab).Append("}\n"); sb.Append("\n"); - sb.Append(g_tab).AppendFormat("%sServiceConstruct(%s->service);\n", infName_.string(), hostName.string()); + sb.Append(g_tab).AppendFormat("%sServiceConstruct(%s->service);\n", baseName_.string(), hostName.string()); sb.Append(g_tab).AppendFormat("deviceObject->service = &%s->ioservice;\n", hostName.string()); sb.Append(g_tab).Append("return HDF_SUCCESS;\n"); sb.Append("}\n"); @@ -151,29 +151,29 @@ void CServiceDriverCodeEmitter::EmitDriverBind(StringBuilder& sb) void CServiceDriverCodeEmitter::EmitDriverRelease(StringBuilder& sb) { - String hostName = infName_.ToLowerCase() + "Host"; - sb.AppendFormat("void Hdf%sDriverRelease(struct HdfDeviceObject *deviceObject)\n", infName_.string()); + String hostName = baseName_.ToLowerCase() + "Host"; + sb.AppendFormat("void Hdf%sDriverRelease(struct HdfDeviceObject *deviceObject)\n", baseName_.string()); sb.Append("{\n"); - sb.Append(g_tab).AppendFormat("HDF_LOGI(\"Hdf%sDriverRelease enter.\");\n", infName_.string()); - sb.Append(g_tab).AppendFormat("struct Hdf%sHost *%s = CONTAINER_OF(", infName_.string(), hostName.string()); + sb.Append(g_tab).AppendFormat("HDF_LOGI(\"Hdf%sDriverRelease enter.\");\n", baseName_.string()); + sb.Append(g_tab).AppendFormat("struct Hdf%sHost *%s = CONTAINER_OF(", baseName_.string(), hostName.string()); sb.AppendFormat("deviceObject->service, struct Hdf%sHost, ioservice);\n", - infName_.string()); - sb.Append(g_tab).AppendFormat("%sStubRelease(%s->service);\n", infName_.string(), hostName.string()); + baseName_.string()); + sb.Append(g_tab).AppendFormat("%sStubRelease(%s->service);\n", baseName_.string(), hostName.string()); sb.Append(g_tab).AppendFormat("OsalMemFree(%s);\n", hostName.string()); sb.Append("}\n"); } void CServiceDriverCodeEmitter::EmitDriverEntryDefinition(StringBuilder& sb) { - sb.AppendFormat("struct HdfDriverEntry g_%sDriverEntry = {\n", infName_.ToLowerCase().string()); + sb.AppendFormat("struct HdfDriverEntry g_%sDriverEntry = {\n", baseName_.ToLowerCase().string()); sb.Append(g_tab).Append(".moduleVersion = 1,\n"); sb.Append(g_tab).AppendFormat(".moduleName = \"%s\",\n", Options::GetInstance().GetModuleName().string()); - sb.Append(g_tab).AppendFormat(".Bind = Hdf%sDriverBind,\n", infName_.string()); - sb.Append(g_tab).AppendFormat(".Init = Hdf%sDriverInit,\n", infName_.string()); - sb.Append(g_tab).AppendFormat(".Release = Hdf%sDriverRelease,\n", infName_.string()); + sb.Append(g_tab).AppendFormat(".Bind = Hdf%sDriverBind,\n", baseName_.string()); + sb.Append(g_tab).AppendFormat(".Init = Hdf%sDriverInit,\n", baseName_.string()); + sb.Append(g_tab).AppendFormat(".Release = Hdf%sDriverRelease,\n", baseName_.string()); sb.Append("};\n\n"); - sb.AppendFormat("HDF_INIT(g_%sDriverEntry);", infName_.ToLowerCase().string()); + sb.AppendFormat("HDF_INIT(g_%sDriverEntry);", baseName_.ToLowerCase().string()); } } // namespace HDI } // namespace OHOS \ No newline at end of file diff --git a/tools/hdi-gen/codegen/c_service_impl_code_emitter.cpp b/tools/hdi-gen/codegen/c_service_impl_code_emitter.cpp index a6926119..e13b2472 100755 --- a/tools/hdi-gen/codegen/c_service_impl_code_emitter.cpp +++ b/tools/hdi-gen/codegen/c_service_impl_code_emitter.cpp @@ -37,7 +37,7 @@ void CServiceImplCodeEmitter::EmitCode() void CServiceImplCodeEmitter::EmitServiceImplHeaderFile() { - String filePath = String::Format("%s/%s.h", directory_.string(), FileName(infName_ + "Service").string()); + String filePath = String::Format("%s/%s.h", directory_.string(), FileName(baseName_ + "Service").string()); File file(filePath, File::WRITE); StringBuilder sb; @@ -64,7 +64,7 @@ void CServiceImplCodeEmitter::EmitServiceImplHeaderInclusions(StringBuilder& sb) { HeaderFile::HeaderFileSet headerFiles; - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, FileName(interfaceName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, EmitVersionHeaderName(interfaceName_))); for (const auto& file : headerFiles) { sb.AppendFormat("%s\n", file.ToString().string()); @@ -73,12 +73,12 @@ void CServiceImplCodeEmitter::EmitServiceImplHeaderInclusions(StringBuilder& sb) void CServiceImplCodeEmitter::EmitServiceImplConstructDecl(StringBuilder& sb) { - sb.AppendFormat("void %sServiceConstruct(struct %s* service);\n", infName_.string(), interfaceName_.string()); + sb.AppendFormat("void %sServiceConstruct(struct %s* service);\n", baseName_.string(), interfaceName_.string()); } void CServiceImplCodeEmitter::EmitServiceImplSourceFile() { - String filePath = String::Format("%s/%s.c", directory_.string(), FileName(infName_ + "Service").string()); + String filePath = String::Format("%s/%s.c", directory_.string(), FileName(baseName_ + "Service").string()); File file(filePath, File::WRITE); StringBuilder sb; @@ -99,7 +99,7 @@ void CServiceImplCodeEmitter::EmitServiceImplSourceInclusions(StringBuilder& sb) { HeaderFile::HeaderFileSet headerFiles; - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, FileName(implName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, EmitVersionHeaderName(implName_))); GetSourceOtherLibInclusions(headerFiles); for (const auto& file : headerFiles) { @@ -131,11 +131,11 @@ void CServiceImplCodeEmitter::EmitServiceImplMethodImpl(const AutoPtr { if (method->GetParameterNumber() == 0) { sb.Append(prefix).AppendFormat("int32_t %s%s(struct %s *self)\n", - infName_.string(), method->GetName().string(), interfaceName_.string()); + baseName_.string(), method->GetName().string(), interfaceName_.string()); } else { StringBuilder paramStr; paramStr.Append(prefix).AppendFormat("int32_t %s%s(struct %s *self, ", - infName_.string(), method->GetName().string(), interfaceName_.string()); + baseName_.string(), method->GetName().string(), interfaceName_.string()); for (size_t i = 0; i < method->GetParameterNumber(); i++) { AutoPtr param = method->GetParameter(i); EmitInterfaceMethodParameter(param, paramStr, ""); @@ -158,12 +158,12 @@ void CServiceImplCodeEmitter::EmitServiceImplConstruct(StringBuilder& sb) { String objName("instance"); sb.AppendFormat("void %sServiceConstruct(struct %s *%s)\n", - infName_.string(), interfaceName_.string(), objName.string()); + baseName_.string(), interfaceName_.string(), objName.string()); sb.Append("{\n"); for (size_t i = 0; i < interface_->GetMethodNumber(); i++) { AutoPtr method = interface_->GetMethod(i); sb.Append(g_tab).AppendFormat("%s->%s = %s%s;\n", - objName.string(), method->GetName().string(), infName_.string(), method->GetName().string()); + objName.string(), method->GetName().string(), baseName_.string(), method->GetName().string()); } sb.Append("}"); } diff --git a/tools/hdi-gen/codegen/c_service_stub_code_emitter.cpp b/tools/hdi-gen/codegen/c_service_stub_code_emitter.cpp index 8fc5e6e5..f597d4c3 100755 --- a/tools/hdi-gen/codegen/c_service_stub_code_emitter.cpp +++ b/tools/hdi-gen/codegen/c_service_stub_code_emitter.cpp @@ -65,7 +65,8 @@ void CServiceStubCodeEmitter::EmitStubHeaderInclusions(StringBuilder& sb) { HeaderFile::HeaderFileSet headerFiles; - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, FileName(interfaceName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, EmitVersionHeaderName(interfaceName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OTHER_MODULES_HEADER_FILE, "hdf_sbuf")); for (const auto& file : headerFiles) { sb.AppendFormat("%s\n", file.ToString().string()); @@ -75,14 +76,14 @@ void CServiceStubCodeEmitter::EmitStubHeaderInclusions(StringBuilder& sb) void CServiceStubCodeEmitter::EmitCbServiceStubMethodsDcl(StringBuilder& sb) { if (!isCallbackInterface()) { - sb.AppendFormat("int32_t %sServiceOnRemoteRequest(struct %s *serviceImpl, ", infName_.string(), + sb.AppendFormat("int32_t %sServiceOnRemoteRequest(struct %s *serviceImpl, ", baseName_.string(), interfaceName_.string()); sb.Append("int cmdId, struct HdfSBuf *data, struct HdfSBuf *reply);\n"); sb.Append("\n"); } - sb.AppendFormat("struct %s* %sStubGetInstance(void);\n", interfaceName_.string(), infName_.string()); + sb.AppendFormat("struct %s* %sStubGetInstance(void);\n", interfaceName_.string(), baseName_.string()); sb.Append("\n"); - sb.AppendFormat("void %sStubRelease(struct %s *instance);\n", infName_.string(), interfaceName_.string()); + sb.AppendFormat("void %sStubRelease(struct %s *instance);\n", baseName_.string(), interfaceName_.string()); } void CServiceStubCodeEmitter::EmitServiceStubSourceFile() @@ -133,18 +134,7 @@ void CServiceStubCodeEmitter::EmitStubSourceInclusions(StringBuilder& sb) { HeaderFile::HeaderFileSet headerFiles; - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, FileName(stubName_))); - - if (!isKernelCode_ && !isCallbackInterface()) { - for (const auto& importPair : ast_->GetImports()) { - AutoPtr importAst = importPair.second; - if (importAst->GetASTFileType() == ASTFileType::AST_ICALLBACK) { - String fileName = FileName(importAst->GetInterfaceDef()->GetFullName()); - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, fileName)); - } - } - } - + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, EmitVersionHeaderName(stubName_))); GetSourceOtherLibInclusions(headerFiles); for (const auto& file : headerFiles) { @@ -171,13 +161,12 @@ void CServiceStubCodeEmitter::GetSourceOtherLibInclusions(HeaderFile::HeaderFile headerFiles.emplace(HeaderFile(HeaderFileType::OTHER_MODULES_HEADER_FILE, "hdf_base")); headerFiles.emplace(HeaderFile(HeaderFileType::OTHER_MODULES_HEADER_FILE, "hdf_device_desc")); headerFiles.emplace(HeaderFile(HeaderFileType::OTHER_MODULES_HEADER_FILE, "hdf_log")); - headerFiles.emplace(HeaderFile(HeaderFileType::OTHER_MODULES_HEADER_FILE, "hdf_sbuf")); headerFiles.emplace(HeaderFile(HeaderFileType::OTHER_MODULES_HEADER_FILE, "osal_mem")); } void CServiceStubCodeEmitter::EmitStubDefinitions(StringBuilder& sb) { - sb.AppendFormat("struct %sStub {\n", infName_.string()); + sb.AppendFormat("struct %sStub {\n", baseName_.string()); sb.Append(g_tab).AppendFormat("struct %s impl;\n", interfaceName_.string()); sb.Append(g_tab).Append("struct HdfRemoteService *remote;\n"); sb.Append(g_tab).Append("struct HdfRemoteDispatcher dispatcher;\n"); @@ -405,7 +394,7 @@ void CServiceStubCodeEmitter::EmitStubAsObjectMethodImpl(StringBuilder& sb, cons { String objName = "self"; sb.Append(prefix).AppendFormat("static struct HdfRemoteService *%sStubAsObject(struct %s *%s)\n", - infName_.string(), interfaceName_.string(), objName.string()); + baseName_.string(), interfaceName_.string(), objName.string()); sb.Append(prefix).Append("{\n"); sb.Append(prefix + g_tab).AppendFormat("if (%s == NULL) {\n", objName.string()); @@ -413,7 +402,7 @@ void CServiceStubCodeEmitter::EmitStubAsObjectMethodImpl(StringBuilder& sb, cons sb.Append(prefix + g_tab).Append("}\n"); sb.Append(prefix + g_tab).AppendFormat("struct %sStub *stub = CONTAINER_OF(%s, struct %sStub, impl);\n", - infName_.string(), objName.string(), infName_.string()); + baseName_.string(), objName.string(), baseName_.string()); sb.Append(prefix + g_tab).Append("return stub->remote;\n"); sb.Append(prefix).Append("}\n"); } @@ -456,7 +445,7 @@ void CServiceStubCodeEmitter::EmitServiceStubOnRequestMethodImpl(StringBuilder& String implName = "serviceImpl"; String codeName = "cmdId"; sb.Append(prefix).AppendFormat("int32_t %sServiceOnRemoteRequest(struct %s *%s, int %s, ", - infName_.string(), interfaceName_.string(), implName.string(), codeName.string()); + baseName_.string(), interfaceName_.string(), implName.string(), codeName.string()); sb.Append("struct HdfSBuf *data, struct HdfSBuf *reply)\n"); sb.Append(prefix).Append("{\n"); sb.Append(prefix + g_tab).AppendFormat("switch (%s) {\n", codeName.string()); @@ -484,10 +473,10 @@ void CServiceStubCodeEmitter::EmitServiceStubOnRequestMethodImpl(StringBuilder& void CServiceStubCodeEmitter::EmitStubGetMethodImpl(StringBuilder& sb) { - String stubTypeName = String::Format("%sStub", infName_.string()); + String stubTypeName = String::Format("%sStub", baseName_.string()); String objName = "stub"; - sb.AppendFormat("struct %s *%sStubGetInstance(void)\n", interfaceName_.string(), infName_.string()); + sb.AppendFormat("struct %s *%sStubGetInstance(void)\n", interfaceName_.string(), baseName_.string()); sb.Append("{\n"); sb.Append(g_tab).AppendFormat("struct %s *%s = (struct %s *)OsalMemAlloc(sizeof(struct %s));\n", stubTypeName.string(), objName.string(), stubTypeName.string(), stubTypeName.string()); @@ -507,7 +496,7 @@ void CServiceStubCodeEmitter::EmitStubGetMethodImpl(StringBuilder& sb) sb.Append(g_tab).Append(g_tab).Append("return NULL;\n"); sb.Append(g_tab).Append("}\n\n"); - sb.Append(g_tab).AppendFormat("%s->impl.AsObject = %sStubAsObject;\n", objName.string(), infName_.string()); + sb.Append(g_tab).AppendFormat("%s->impl.AsObject = %sStubAsObject;\n", objName.string(), baseName_.string()); sb.Append(g_tab).AppendFormat("return &%s->impl;\n", objName.string()); sb.Append("}\n"); } @@ -515,7 +504,7 @@ void CServiceStubCodeEmitter::EmitStubGetMethodImpl(StringBuilder& sb) void CServiceStubCodeEmitter::EmitKernelStubGetMethodImpl(StringBuilder& sb) { String objName("instance"); - sb.AppendFormat("struct %s *%sStubGetInstance(void)\n", interfaceName_.string(), infName_.string()); + sb.AppendFormat("struct %s *%sStubGetInstance(void)\n", interfaceName_.string(), baseName_.string()); sb.Append("{\n"); sb.Append(g_tab).AppendFormat("struct %s *%s = (struct %s*)OsalMemAlloc(sizeof(struct %s));\n", interfaceName_.string(), objName.string(), interfaceName_.string(), interfaceName_.string()); @@ -532,7 +521,7 @@ void CServiceStubCodeEmitter::EmitKernelStubGetMethodImpl(StringBuilder& sb) void CServiceStubCodeEmitter::EmitStubReleaseImpl(StringBuilder& sb) { String objName = "instance"; - sb.AppendFormat("void %sStubRelease(struct %s *%s)\n", infName_.string(), interfaceName_.string(), + sb.AppendFormat("void %sStubRelease(struct %s *%s)\n", baseName_.string(), interfaceName_.string(), objName.string()); sb.Append("{\n"); sb.Append(g_tab).AppendFormat("if (%s == NULL) {\n", objName.string()); @@ -546,7 +535,7 @@ void CServiceStubCodeEmitter::EmitStubReleaseImpl(StringBuilder& sb) void CServiceStubCodeEmitter::EmitKernelStubReleaseImpl(StringBuilder& sb) { - sb.AppendFormat("void %sStubRelease(struct %s *instance)\n", infName_.string(), interfaceName_.string()); + sb.AppendFormat("void %sStubRelease(struct %s *instance)\n", baseName_.string(), interfaceName_.string()); sb.Append("{\n"); sb.Append(g_tab).Append("if (instance == NULL) {\n"); sb.Append(g_tab).Append(g_tab).Append("return;\n"); diff --git a/tools/hdi-gen/codegen/code_emitter.cpp b/tools/hdi-gen/codegen/code_emitter.cpp index 8151b44f..3afacfd2 100755 --- a/tools/hdi-gen/codegen/code_emitter.cpp +++ b/tools/hdi-gen/codegen/code_emitter.cpp @@ -36,23 +36,23 @@ bool CodeEmitter::Reset(const AutoPtr& ast, const String& targetDirectory, interface_ = ast_->GetInterfaceDef(); interfaceName_ = interface_->GetName(); interfaceFullName_ = interface_->GetNamespace()->ToString() + interfaceName_; - infName_ = interfaceName_.StartsWith("I") ? interfaceName_.Substring(1) : interfaceName_; - proxyName_ = infName_ + "Proxy"; + baseName_ = interfaceName_.StartsWith("I") ? interfaceName_.Substring(1) : interfaceName_; + proxyName_ = baseName_ + "Proxy"; proxyFullName_ = interface_->GetNamespace()->ToString() + proxyName_; - stubName_ = infName_ + "Stub"; + stubName_ = baseName_ + "Stub"; stubFullName_ = interface_->GetNamespace()->ToString() + stubName_; - implName_ = infName_ + "Service"; + implName_ = baseName_ + "Service"; implFullName_ = interface_->GetNamespace()->ToString() + implName_; } else if (ast_->GetASTFileType() == ASTFileType::AST_TYPES) { - infName_ = ast_->GetName(); + baseName_ = ast_->GetName(); } - majorVerName_ = String::Format("%s_MAJOR_VERSION", interfaceName_.ToUnderLineUpper().string()); - minorVerName_ = String::Format("%s_MINOR_VERSION", interfaceName_.ToUnderLineUpper().string()); + majorVerName_ = String::Format("%s_MAJOR_VERSION", ConstantName(interfaceName_).string()); + minorVerName_ = String::Format("%s_MINOR_VERSION", ConstantName(interfaceName_).string()); - String prefix = String::Format("%c%s", tolower(infName_[0]), infName_.Substring(1).string()); + String prefix = String::Format("%c%s", tolower(baseName_[0]), baseName_.Substring(1).string()); dataParcelName_ = prefix + "Data"; replyParcelName_ = prefix + "Reply"; optionName_ = prefix + "Option"; @@ -73,7 +73,7 @@ void CodeEmitter::CleanData() directory_ = ""; interfaceName_ = ""; interfaceFullName_ = ""; - infName_ = ""; + baseName_ = ""; proxyName_ = ""; proxyFullName_ = ""; stubName_ = ""; @@ -97,5 +97,117 @@ String CodeEmitter::GetFilePath(const String& outDir) return String::Format("%s/%s/", outPath.string(), packagePath.string()); } } + +String CodeEmitter::PackageToFilePath(const String& packageName) +{ + std::vector packageVec = Options::GetInstance().GetSubPackage(packageName).Split("."); + StringBuilder filePath; + for (auto iter = packageVec.begin(); iter != packageVec.end(); iter++) { + filePath.Append(FileName(*iter)); + if (iter != packageVec.end() - 1) { + filePath.Append("/"); + } + } + + return filePath.ToString(); +} + +String CodeEmitter::EmitMethodCmdID(const AutoPtr& method) +{ + return String::Format("CMD_%s_%s", ConstantName(baseName_).string(), + ConstantName(method->GetName()).string()); +} + +void CodeEmitter::EmitInterfaceMethodCommands(StringBuilder& sb, const String& prefix) +{ + sb.Append(prefix).AppendFormat("enum {\n"); + for (size_t i = 0; i < interface_->GetMethodNumber(); i++) { + AutoPtr method = interface_->GetMethod(i); + sb.Append(prefix + g_tab).Append(EmitMethodCmdID(method)).Append(",\n"); + } + + sb.Append(prefix + g_tab).Append(EmitMethodCmdID(interface_->GetVersionMethod())).Append(",\n"); + sb.Append(prefix).Append("};\n"); +} + +String CodeEmitter::EmitVersionHeaderName(const String& name) +{ + return String::Format("v%u_%u/%s", ast_->GetMajorVer(), ast_->GetMinorVer(), FileName(name).string()); +} + +String CodeEmitter::ConstantName(const String& name) +{ + if (name.IsEmpty()) { + return name; + } + + StringBuilder sb; + + for (int i = 0; i < name.GetLength(); i++) { + char c = name[i]; + if (isupper(c) != 0) { + if (i > 1) { + sb.Append('_'); + } + sb.Append(c); + } else { + sb.Append(toupper(c)); + } + } + + return sb.ToString(); +} + +String CodeEmitter::PascalName(const String& name) +{ + if (name.IsEmpty()) { + return name; + } + + StringBuilder sb; + for (int i = 0; i < name.GetLength(); i++) { + char c = name[i]; + if (i == 0) { + if (islower(c)) { + c = toupper(c); + } + sb.Append(c); + } else { + if (c == '_') { + continue; + } + + if (islower(c) && name[i - 1] == '_') { + c = toupper(c); + } + sb.Append(c); + } + } + + return sb.ToString(); +} + +String CodeEmitter::FileName(const String& name) +{ + if (name.IsEmpty()) { + return name; + } + + StringBuilder sb; + for (int i = 0; i < name.GetLength(); i++) { + char c = name[i]; + if (isupper(c) != 0) { + // 2->Index of the last char array. + if (i > 1) { + sb.Append('_'); + } + sb.Append(tolower(c)); + } else { + sb.Append(c); + } + } + + return sb.ToString(); +} } // namespace HDI } // namespace OHOS \ No newline at end of file diff --git a/tools/hdi-gen/codegen/code_emitter.h b/tools/hdi-gen/codegen/code_emitter.h index 4dad7809..54677d1e 100755 --- a/tools/hdi-gen/codegen/code_emitter.h +++ b/tools/hdi-gen/codegen/code_emitter.h @@ -81,6 +81,29 @@ protected: String GetFilePath(const String& outDir); + String PackageToFilePath(const String& packageName); + + String EmitMethodCmdID(const AutoPtr& method); + + void EmitInterfaceMethodCommands(StringBuilder& sb, const String& prefix); + + /* ForExample: + * MajorVersion: 1 + * MinorVersion: 0 + * name: IFoo + * result: v1_0/ifoo.h + */ + String EmitVersionHeaderName(const String& name); + + // file_name -> FILE_NAME + String ConstantName(const String& name); + + // file_name -> FileName + String PascalName(const String& name); + + // FileName -> file_name + String FileName(const String& name); + bool isKernelCode_ = false; AutoPtr ast_ = nullptr; AutoPtr interface_ = nullptr; @@ -88,7 +111,7 @@ protected: String interfaceName_; String interfaceFullName_; - String infName_; + String baseName_; String proxyName_; String proxyFullName_; String stubName_; diff --git a/tools/hdi-gen/codegen/cpp_client_proxy_code_emitter.cpp b/tools/hdi-gen/codegen/cpp_client_proxy_code_emitter.cpp index 156a2009..4ea55ca7 100755 --- a/tools/hdi-gen/codegen/cpp_client_proxy_code_emitter.cpp +++ b/tools/hdi-gen/codegen/cpp_client_proxy_code_emitter.cpp @@ -37,7 +37,7 @@ void CppClientProxyCodeEmitter::EmitCode() void CppClientProxyCodeEmitter::EmitProxyHeaderFile() { - String filePath = String::Format("%s/%s.h", directory_.string(), FileName(infName_ + "Proxy").string()); + String filePath = String::Format("%s/%s.h", directory_.string(), FileName(baseName_ + "Proxy").string()); File file(filePath, File::WRITE); StringBuilder sb; @@ -64,7 +64,7 @@ void CppClientProxyCodeEmitter::EmitProxyHeaderInclusions(StringBuilder& sb) { HeaderFile::HeaderFileSet headerFiles; - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, FileName(interfaceName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, EmitVersionHeaderName(interfaceName_))); GetHeaderOtherLibInclusions(headerFiles); for (const auto& file : headerFiles) { @@ -146,7 +146,7 @@ void CppClientProxyCodeEmitter::EmitProxyMethodParameter(const AutoPtrIndex of the last char array. - if (i > 1 && subName[i - 1] != '.' && subName[i - 2] != '.') { - sb.Append('_'); - } - sb.Append(tolower(c)); - } else { - sb.Append(c); - } - } - - return sb.ToString().Replace('.', '/'); -} - -String CppCodeEmitter::PascalName(const String& name) -{ - if (name.IsEmpty()) { - return name; - } - - StringBuilder sb; - for (int i = 0; i < name.GetLength(); i++) { - char c = name[i]; - if (i == 0) { - if (islower(c)) { - c = toupper(c); - } - sb.Append(c); - } else { - if (c == '_') { - continue; - } - - if (islower(c) && name[i - 1] == '_') { - c = toupper(c); - } - sb.Append(c); - } - } - - return sb.ToString(); -} - -String CppCodeEmitter::EmitMethodCmdID(const AutoPtr& method) -{ - return String::Format("CMD_%s_%s", infName_.ToUnderLineUpper().string(), - method->GetName().ToUnderLineUpper().string()); -} - -void CppCodeEmitter::EmitInterfaceMethodCommands(StringBuilder& sb, const String& prefix) -{ - sb.Append(prefix).AppendFormat("enum {\n"); - for (size_t i = 0; i < interface_->GetMethodNumber(); i++) { - AutoPtr method = interface_->GetMethod(i); - sb.Append(prefix + g_tab).Append(EmitMethodCmdID(method)).Append(",\n"); - } - - sb.Append(g_tab).Append(EmitMethodCmdID(interface_->GetVersionMethod())).Append(",\n"); - sb.Append(prefix).Append("};\n"); -} - void CppCodeEmitter::GetStdlibInclusions(HeaderFile::HeaderFileSet& headerFiles) { bool includeString = false; @@ -136,8 +65,8 @@ void CppCodeEmitter::GetImportInclusions(HeaderFile::HeaderFileSet& headerFiles) { for (const auto& importPair : ast_->GetImports()) { AutoPtr importAst = importPair.second; - String fileName = FileName(importAst->GetFullName()); - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, FileName(importAst->GetFullName()))); + String fileName = PackageToFilePath(importAst->GetFullName()); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, fileName)); } } @@ -194,16 +123,21 @@ std::vector CppCodeEmitter::EmitCppNameSpaceVec(const String& namespaceS std::vector namespaceVec = namespaceStr.Split("."); bool findVersion = false; - for (const auto& nspace : namespaceVec) { + String rootPackage = Options::GetInstance().GetRootPackage(namespaceStr); + size_t rootPackageNum = rootPackage.Split(".").size(); + + for (size_t i = 0; i < namespaceVec.size(); i++) { String name; - if (!findVersion && isVersion(nspace)) { - name = nspace.Replace('v', 'V'); + if (i < rootPackageNum) { + name = namespaceVec[i].ToUpperCase(); + } else if (!findVersion && isVersion(namespaceVec[i])) { + name = namespaceVec[i].Replace('v', 'V'); findVersion = true; } else { if (findVersion) { - name = nspace; + name = namespaceVec[i]; } else { - name = PascalName(nspace); + name = PascalName(namespaceVec[i]); } } @@ -321,29 +255,6 @@ String CppCodeEmitter::MacroName(const String& name) return macro; } -String CppCodeEmitter::ConstantName(const String& name) -{ - if (name.IsEmpty()) { - return name; - } - - StringBuilder sb; - - for (int i = 0; i < name.GetLength(); i++) { - char c = name[i]; - if (isupper(c) != 0) { - if (i > 1) { - sb.Append('_'); - } - sb.Append(c); - } else { - sb.Append(toupper(c)); - } - } - - return sb.ToString(); -} - String CppCodeEmitter::SpecificationParam(StringBuilder& paramSb, const String& prefix) { int maxLineLen = 120; diff --git a/tools/hdi-gen/codegen/cpp_code_emitter.h b/tools/hdi-gen/codegen/cpp_code_emitter.h index 1a817b37..9c44f7e6 100755 --- a/tools/hdi-gen/codegen/cpp_code_emitter.h +++ b/tools/hdi-gen/codegen/cpp_code_emitter.h @@ -22,15 +22,7 @@ public: virtual ~CppCodeEmitter() = default; bool OutPut(const AutoPtr& ast, const String& targetDirectory); - - static String FileName(const String& name); - - static String PascalName(const String& name); protected: - String EmitMethodCmdID(const AutoPtr& method); - - void EmitInterfaceMethodCommands(StringBuilder& sb, const String& prefix); - void GetStdlibInclusions(HeaderFile::HeaderFileSet& headerFiles); void GetImportInclusions(HeaderFile::HeaderFileSet& headerFiles); diff --git a/tools/hdi-gen/codegen/cpp_custom_types_code_emitter.cpp b/tools/hdi-gen/codegen/cpp_custom_types_code_emitter.cpp index 53304e3b..f97f271c 100755 --- a/tools/hdi-gen/codegen/cpp_custom_types_code_emitter.cpp +++ b/tools/hdi-gen/codegen/cpp_custom_types_code_emitter.cpp @@ -35,9 +35,9 @@ void CppCustomTypesCodeEmitter::EmitCode() void CppCustomTypesCodeEmitter::EmitCustomTypesHeaderFile() { - String filePath = String::Format("%s/%s.h", directory_.string(), FileName(infName_).string()); + String filePath = String::Format("%s/%s.h", directory_.string(), FileName(baseName_).string()); File file(filePath, File::WRITE); - String marcoName = String::Format("%s.%s", ast_->GetPackageName().string(), infName_.string()); + String marcoName = String::Format("%s.%s", ast_->GetPackageName().string(), baseName_.string()); StringBuilder sb; EmitLicense(sb); @@ -147,7 +147,7 @@ void CppCustomTypesCodeEmitter::EmitCustomTypeUnmarshallingDecl(StringBuilder& s void CppCustomTypesCodeEmitter::EmitCustomTypesSourceFile() { - String filePath = String::Format("%s/%s.cpp", directory_.string(), FileName(infName_).string()); + String filePath = String::Format("%s/%s.cpp", directory_.string(), FileName(baseName_).string()); File file(filePath, File::WRITE); StringBuilder sb; @@ -170,7 +170,7 @@ void CppCustomTypesCodeEmitter::EmitSourceFileInclusions(StringBuilder& sb) { HeaderFile::HeaderFileSet headerFiles; - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, FileName(infName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, EmitVersionHeaderName(baseName_))); GetSourceOtherLibInclusions(headerFiles); for (const auto& file : headerFiles) { diff --git a/tools/hdi-gen/codegen/cpp_service_driver_code_emitter.cpp b/tools/hdi-gen/codegen/cpp_service_driver_code_emitter.cpp index 951a9cad..e31b3710 100755 --- a/tools/hdi-gen/codegen/cpp_service_driver_code_emitter.cpp +++ b/tools/hdi-gen/codegen/cpp_service_driver_code_emitter.cpp @@ -38,7 +38,7 @@ void CppServiceDriverCodeEmitter::EmitCode() void CppServiceDriverCodeEmitter::EmitDriverSourceFile() { - String filePath = String::Format("%s/%s.cpp", directory_.string(), FileName(infName_ + "Driver").string()); + String filePath = String::Format("%s/%s.cpp", directory_.string(), FileName(baseName_ + "Driver").string()); File file(filePath, File::WRITE); StringBuilder sb; @@ -74,7 +74,7 @@ void CppServiceDriverCodeEmitter::EmitDriverIncluions(StringBuilder& sb) headerFiles.emplace(HeaderFile(HeaderFileType::OTHER_MODULES_HEADER_FILE, "osal_mem")); headerFiles.emplace(HeaderFile(HeaderFileType::OTHER_MODULES_HEADER_FILE, "hdf_device_desc")); headerFiles.emplace(HeaderFile(HeaderFileType::OTHER_MODULES_HEADER_FILE, "hdf_sbuf_ipc")); - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, FileName(implName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, EmitVersionHeaderName(implName_))); for (const auto& file : headerFiles) { sb.AppendFormat("%s\n", file.ToString().string()); @@ -89,7 +89,7 @@ void CppServiceDriverCodeEmitter::EmitDriverUsings(StringBuilder& sb) void CppServiceDriverCodeEmitter::EmitDriverServiceDecl(StringBuilder& sb) { - sb.AppendFormat("struct Hdf%sHost {\n", infName_.string()); + sb.AppendFormat("struct Hdf%sHost {\n", baseName_.string()); sb.Append(g_tab).Append("struct IDeviceIoService ioservice;\n"); sb.Append(g_tab).AppendFormat("%s *service;\n", implName_.string()); sb.Append("};\n"); @@ -97,13 +97,13 @@ void CppServiceDriverCodeEmitter::EmitDriverServiceDecl(StringBuilder& sb) void CppServiceDriverCodeEmitter::EmitDriverDispatch(StringBuilder& sb) { - String objName = String::Format("hdf%sHost", infName_.string()); - sb.AppendFormat("static int32_t %sDriverDispatch(", infName_.string()); + String objName = String::Format("hdf%sHost", baseName_.string()); + sb.AppendFormat("static int32_t %sDriverDispatch(", baseName_.string()); sb.Append("struct HdfDeviceIoClient *client, int cmdId, struct HdfSBuf *data,\n"); sb.Append(g_tab).Append("struct HdfSBuf *reply)\n"); sb.Append("{\n"); - sb.Append(g_tab).AppendFormat("struct Hdf%sHost *%s = CONTAINER_OF(", infName_.string(), objName.string()); - sb.AppendFormat("client->device->service, struct Hdf%sHost, ioservice);\n\n", infName_.string()); + sb.Append(g_tab).AppendFormat("struct Hdf%sHost *%s = CONTAINER_OF(", baseName_.string(), objName.string()); + sb.AppendFormat("client->device->service, struct Hdf%sHost, ioservice);\n\n", baseName_.string()); sb.Append(g_tab).Append("OHOS::MessageParcel *dataParcel = nullptr;\n"); sb.Append(g_tab).Append("OHOS::MessageParcel *replyParcel = nullptr;\n"); @@ -123,31 +123,31 @@ void CppServiceDriverCodeEmitter::EmitDriverDispatch(StringBuilder& sb) void CppServiceDriverCodeEmitter::EmitDriverInit(StringBuilder& sb) { - sb.AppendFormat("int Hdf%sDriverInit(struct HdfDeviceObject *deviceObject)\n", infName_.string()); + sb.AppendFormat("int Hdf%sDriverInit(struct HdfDeviceObject *deviceObject)\n", baseName_.string()); sb.Append("{\n"); - sb.Append(g_tab).AppendFormat("HDF_LOGI(\"Hdf%sDriverInit enter\");\n", infName_.string()); + sb.Append(g_tab).AppendFormat("HDF_LOGI(\"Hdf%sDriverInit enter\");\n", baseName_.string()); sb.Append(g_tab).Append("return HDF_SUCCESS;\n"); sb.Append("}\n"); } void CppServiceDriverCodeEmitter::EmitDriverBind(StringBuilder& sb) { - String objName = String::Format("hdf%sHost", infName_.string()); - sb.AppendFormat("int Hdf%sDriverBind(struct HdfDeviceObject *deviceObject)\n", infName_.string()); + String objName = String::Format("hdf%sHost", baseName_.string()); + sb.AppendFormat("int Hdf%sDriverBind(struct HdfDeviceObject *deviceObject)\n", baseName_.string()); sb.Append("{\n"); - sb.Append(g_tab).AppendFormat("HDF_LOGI(\"Hdf%sDriverBind enter\");\n\n", infName_.string()); + sb.Append(g_tab).AppendFormat("HDF_LOGI(\"Hdf%sDriverBind enter\");\n\n", baseName_.string()); sb.Append(g_tab).AppendFormat("struct Hdf%sHost *%s = (struct Hdf%sHost *)OsalMemAlloc(\n", - infName_.string(), objName.string(), infName_.string()); - sb.Append(g_tab).Append(g_tab).AppendFormat("sizeof(struct Hdf%sHost));\n", infName_.string()); + baseName_.string(), objName.string(), baseName_.string()); + sb.Append(g_tab).Append(g_tab).AppendFormat("sizeof(struct Hdf%sHost));\n", baseName_.string()); sb.Append(g_tab).AppendFormat("if (%s == nullptr) {\n", objName.string()); sb.Append(g_tab).Append(g_tab).AppendFormat("HDF_LOGE(\"Hdf%sDriverBind OsalMemAlloc Hdf%sHost failed!\");\n", - infName_.string(), infName_.string()); + baseName_.string(), baseName_.string()); sb.Append(g_tab).Append(g_tab).Append("return HDF_FAILURE;\n"); sb.Append(g_tab).Append("}\n\n"); sb.Append(g_tab).AppendFormat("%s->ioservice.Dispatch = %sDriverDispatch;\n", - objName.string(), infName_.string()); + objName.string(), baseName_.string()); sb.Append(g_tab).AppendFormat("%s->ioservice.Open = NULL;\n", objName.string()); sb.Append(g_tab).AppendFormat("%s->ioservice.Release = NULL;\n", objName.string()); sb.Append(g_tab).AppendFormat("%s->service = new %s();\n\n", objName.string(), implName_.string()); @@ -159,12 +159,12 @@ void CppServiceDriverCodeEmitter::EmitDriverBind(StringBuilder& sb) void CppServiceDriverCodeEmitter::EmitDriverRelease(StringBuilder& sb) { - String objName = String::Format("hdf%sHost", infName_.string()); - sb.AppendFormat("void Hdf%sDriverRelease(struct HdfDeviceObject *deviceObject)", infName_.string()); + String objName = String::Format("hdf%sHost", baseName_.string()); + sb.AppendFormat("void Hdf%sDriverRelease(struct HdfDeviceObject *deviceObject)", baseName_.string()); sb.Append("{\n"); - sb.Append(g_tab).AppendFormat("HDF_LOGI(\"Hdf%sDriverRelease enter\");\n\n", infName_.string()); - sb.Append(g_tab).AppendFormat("struct Hdf%sHost *%s = CONTAINER_OF(", infName_.string(), objName.string()); - sb.AppendFormat("deviceObject->service, struct Hdf%sHost, ioservice);\n", infName_.string()); + sb.Append(g_tab).AppendFormat("HDF_LOGI(\"Hdf%sDriverRelease enter\");\n\n", baseName_.string()); + sb.Append(g_tab).AppendFormat("struct Hdf%sHost *%s = CONTAINER_OF(", baseName_.string(), objName.string()); + sb.AppendFormat("deviceObject->service, struct Hdf%sHost, ioservice);\n", baseName_.string()); sb.Append(g_tab).AppendFormat("delete %s->service;\n", objName.string()); sb.Append(g_tab).AppendFormat("OsalMemFree(%s);\n", objName.string()); sb.Append("}\n"); @@ -172,19 +172,19 @@ void CppServiceDriverCodeEmitter::EmitDriverRelease(StringBuilder& sb) void CppServiceDriverCodeEmitter::EmitDriverEntryDefinition(StringBuilder& sb) { - sb.AppendFormat("struct HdfDriverEntry g_%sDriverEntry = {\n", infName_.ToLowerCase().string()); + sb.AppendFormat("struct HdfDriverEntry g_%sDriverEntry = {\n", baseName_.ToLowerCase().string()); sb.Append(g_tab).Append(".moduleVersion = 1,\n"); sb.Append(g_tab).AppendFormat(".moduleName = \"%s\",\n", Options::GetInstance().GetModuleName().string()); - sb.Append(g_tab).AppendFormat(".Bind = Hdf%sDriverBind,\n", infName_.string()); - sb.Append(g_tab).AppendFormat(".Init = Hdf%sDriverInit,\n", infName_.string()); - sb.Append(g_tab).AppendFormat(".Release = Hdf%sDriverRelease,\n", infName_.string()); + sb.Append(g_tab).AppendFormat(".Bind = Hdf%sDriverBind,\n", baseName_.string()); + sb.Append(g_tab).AppendFormat(".Init = Hdf%sDriverInit,\n", baseName_.string()); + sb.Append(g_tab).AppendFormat(".Release = Hdf%sDriverRelease,\n", baseName_.string()); sb.Append("};\n"); sb.Append("\n"); sb.Append("#ifndef __cplusplus\n"); sb.Append("extern \"C\" {\n"); sb.Append("#endif\n"); - sb.AppendFormat("HDF_INIT(g_%sDriverEntry);\n", infName_.ToLowerCase().string()); + sb.AppendFormat("HDF_INIT(g_%sDriverEntry);\n", baseName_.ToLowerCase().string()); sb.Append("#ifndef __cplusplus\n"); sb.Append("}\n"); sb.Append("#endif\n"); diff --git a/tools/hdi-gen/codegen/cpp_service_impl_code_emitter.cpp b/tools/hdi-gen/codegen/cpp_service_impl_code_emitter.cpp index 1261bb5c..e2789c77 100755 --- a/tools/hdi-gen/codegen/cpp_service_impl_code_emitter.cpp +++ b/tools/hdi-gen/codegen/cpp_service_impl_code_emitter.cpp @@ -37,7 +37,7 @@ void CppServiceImplCodeEmitter::EmitCode() void CppServiceImplCodeEmitter::EmitImplHeaderFile() { - String filePath = String::Format("%s/%s.h", directory_.string(), FileName(infName_ + "Service").string()); + String filePath = String::Format("%s/%s.h", directory_.string(), FileName(baseName_ + "Service").string()); File file(filePath, File::WRITE); StringBuilder sb; @@ -59,7 +59,7 @@ void CppServiceImplCodeEmitter::EmitImplHeaderFile() void CppServiceImplCodeEmitter::EmitServiceImplInclusions(StringBuilder& sb) { HeaderFile::HeaderFileSet headerFiles; - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, FileName(stubName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, EmitVersionHeaderName(stubName_))); for (const auto& file : headerFiles) { sb.AppendFormat("%s\n", file.ToString().string()); @@ -70,7 +70,7 @@ void CppServiceImplCodeEmitter::EmitServiceImplDecl(StringBuilder& sb) { EmitBeginNamespace(sb); sb.Append("\n"); - sb.AppendFormat("class %sService : public %s {\n", infName_.string(), stubName_.string()); + sb.AppendFormat("class %sService : public %s {\n", baseName_.string(), stubName_.string()); sb.Append("public:\n"); EmitServiceImplBody(sb, g_tab); sb.Append("};\n"); @@ -88,7 +88,7 @@ void CppServiceImplCodeEmitter::EmitServiceImplBody(StringBuilder& sb, const Str void CppServiceImplCodeEmitter::EmitServiceImplDestruction(StringBuilder& sb, const String& prefix) { - sb.Append(prefix).AppendFormat("virtual ~%sService() {}\n", infName_.string()); + sb.Append(prefix).AppendFormat("virtual ~%sService() {}\n", baseName_.string()); } void CppServiceImplCodeEmitter::EmitServiceImplMethodDecls(StringBuilder& sb, const String& prefix) @@ -127,7 +127,7 @@ void CppServiceImplCodeEmitter::EmitServiceImplMethodDecl(const AutoPtrGetParameterNumber() == 0) { - sb.Append(prefix).AppendFormat("int32_t %sService::%s()\n", infName_.string(), method->GetName().string()); + sb.Append(prefix).AppendFormat("int32_t %sService::%s()\n", baseName_.string(), method->GetName().string()); } else { StringBuilder paramStr; - paramStr.Append(prefix).AppendFormat("int32_t %sService::%s(", infName_.string(), method->GetName().string()); + paramStr.Append(prefix).AppendFormat("int32_t %sService::%s(", baseName_.string(), method->GetName().string()); for (size_t i = 0; i < method->GetParameterNumber(); i++) { AutoPtr param = method->GetParameter(i); EmitInterfaceMethodParameter(param, paramStr, ""); diff --git a/tools/hdi-gen/codegen/cpp_service_stub_code_emitter.cpp b/tools/hdi-gen/codegen/cpp_service_stub_code_emitter.cpp index 2b87f174..4b139fd8 100755 --- a/tools/hdi-gen/codegen/cpp_service_stub_code_emitter.cpp +++ b/tools/hdi-gen/codegen/cpp_service_stub_code_emitter.cpp @@ -60,7 +60,7 @@ void CppServiceStubCodeEmitter::EmitStubHeaderInclusions(StringBuilder& sb) { HeaderFile::HeaderFileSet headerFiles; - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, FileName(interfaceName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_MODULE_HEADER_FILE, EmitVersionHeaderName(interfaceName_))); GetHeaderOtherLibInclusions(headerFiles); for (const auto& file : headerFiles) { @@ -183,7 +183,7 @@ void CppServiceStubCodeEmitter::EmitStubSourceFile() void CppServiceStubCodeEmitter::EmitStubSourceInclusions(StringBuilder& sb) { HeaderFile::HeaderFileSet headerFiles; - headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, FileName(stubName_))); + headerFiles.emplace(HeaderFile(HeaderFileType::OWN_HEADER_FILE, EmitVersionHeaderName(stubName_))); GetSourceOtherLibInclusions(headerFiles); for (const auto& file : headerFiles) { @@ -222,13 +222,13 @@ void CppServiceStubCodeEmitter::EmitStubOnRequestMethodImpl(StringBuilder& sb, c AutoPtr method = interface_->GetMethod(i); sb.Append(prefix + g_tab + g_tab).AppendFormat("case %s:\n", EmitMethodCmdID(method).string()); sb.Append(prefix + g_tab + g_tab + g_tab).AppendFormat("return %sStub%s(data, reply, option);\n", - infName_.string(), method->GetName().string()); + baseName_.string(), method->GetName().string()); } AutoPtr getVerMethod = interface_->GetVersionMethod(); sb.Append(prefix + g_tab + g_tab).AppendFormat("case %s:\n", EmitMethodCmdID(getVerMethod).string()); sb.Append(prefix + g_tab + g_tab + g_tab).AppendFormat("return %sStub%s(data, reply, option);\n", - infName_.string(), getVerMethod->GetName().string()); + baseName_.string(), getVerMethod->GetName().string()); sb.Append(prefix + g_tab + g_tab).Append("default: {\n"); sb.Append(prefix + g_tab + g_tab + g_tab).Append( @@ -243,7 +243,7 @@ void CppServiceStubCodeEmitter::EmitStubOnRequestMethodImpl(StringBuilder& sb, c void CppServiceStubCodeEmitter::EmitGetVersionMethodImpl(StringBuilder& sb, const String& prefix) { AutoPtr method = interface_->GetVersionMethod(); - sb.Append(prefix).AppendFormat("int32_t %sStub::%s(", infName_.string(), method->GetName().string()); + sb.Append(prefix).AppendFormat("int32_t %sStub::%s(", baseName_.string(), method->GetName().string()); for (size_t i = 0; i < method->GetParameterNumber(); i++) { AutoPtr param = method->GetParameter(i); EmitInterfaceMethodParameter(param, sb, ""); diff --git a/tools/hdi-gen/codegen/java_client_interface_code_emitter.cpp b/tools/hdi-gen/codegen/java_client_interface_code_emitter.cpp index 14b56a2e..6b6c7b13 100755 --- a/tools/hdi-gen/codegen/java_client_interface_code_emitter.cpp +++ b/tools/hdi-gen/codegen/java_client_interface_code_emitter.cpp @@ -15,12 +15,9 @@ namespace OHOS { namespace HDI { bool JavaClientInterfaceCodeEmitter::ResolveDirectory(const String& targetDirectory) { - if (ast_->GetASTFileType() == ASTFileType::AST_IFACE) { - directory_ = File::AdapterPath(String::Format("%s/%s/", targetDirectory.string(), - FileName(ast_->GetPackageName()).string())); - } else if (ast_->GetASTFileType() == ASTFileType::AST_ICALLBACK) { - directory_ = File::AdapterPath(String::Format("%s/%s/", targetDirectory.string(), - FileName(ast_->GetPackageName()).string())); + if (ast_->GetASTFileType() == ASTFileType::AST_IFACE || + ast_->GetASTFileType() == ASTFileType::AST_ICALLBACK) { + directory_ = GetFilePath(targetDirectory); } else { return false; } @@ -40,7 +37,7 @@ void JavaClientInterfaceCodeEmitter::EmitCode() void JavaClientInterfaceCodeEmitter::EmitInterfaceFile() { - String filePath = String::Format("%s%s.java", directory_.string(), FileName(interfaceName_).string()); + String filePath = String::Format("%s/%s.java", directory_.string(), FileName(interfaceName_).string()); File file(filePath, File::WRITE); StringBuilder sb; diff --git a/tools/hdi-gen/codegen/java_client_proxy_code_emitter.cpp b/tools/hdi-gen/codegen/java_client_proxy_code_emitter.cpp index 3e3689bb..ef7913b8 100755 --- a/tools/hdi-gen/codegen/java_client_proxy_code_emitter.cpp +++ b/tools/hdi-gen/codegen/java_client_proxy_code_emitter.cpp @@ -13,12 +13,9 @@ namespace OHOS { namespace HDI { bool JavaClientProxyCodeEmitter::ResolveDirectory(const String& targetDirectory) { - if (ast_->GetASTFileType() == ASTFileType::AST_IFACE) { - directory_ = File::AdapterPath(String::Format("%s/%s/", targetDirectory.string(), - FileName(ast_->GetPackageName()).string())); - } else if (ast_->GetASTFileType() == ASTFileType::AST_ICALLBACK) { - directory_ = File::AdapterPath(String::Format("%s/%s/", targetDirectory.string(), - FileName(ast_->GetPackageName()).string())); + if (ast_->GetASTFileType() == ASTFileType::AST_IFACE || + ast_->GetASTFileType() == ASTFileType::AST_ICALLBACK) { + directory_ = GetFilePath(targetDirectory); } else { return false; } @@ -38,7 +35,7 @@ void JavaClientProxyCodeEmitter::EmitCode() void JavaClientProxyCodeEmitter::EmitProxyFile() { - String filePath = String::Format("%s%s.java", directory_.string(), FileName(proxyName_).string()); + String filePath = String::Format("%s/%s.java", directory_.string(), FileName(proxyName_).string()); File file(filePath, File::WRITE); StringBuilder sb; diff --git a/tools/hdi-gen/codegen/java_code_emitter.cpp b/tools/hdi-gen/codegen/java_code_emitter.cpp index 69716cdb..c0a09c32 100755 --- a/tools/hdi-gen/codegen/java_code_emitter.cpp +++ b/tools/hdi-gen/codegen/java_code_emitter.cpp @@ -13,15 +13,6 @@ namespace OHOS { namespace HDI { -String JavaCodeEmitter::FileName(const String& name) -{ - if (name.IsEmpty()) { - return name; - } - - return name.Replace('.', '/'); -} - void JavaCodeEmitter::EmitLicense(StringBuilder& sb) { if (ast_->GetLicense().IsEmpty()) { @@ -53,29 +44,6 @@ String JavaCodeEmitter::MethodName(const String& name) return String::Format("%c%s", tolower(name[0]), name.Substring(1).string()); } -String JavaCodeEmitter::ConstantName(const String& name) -{ - if (name.IsEmpty()) { - return name; - } - - StringBuilder sb; - - for (int i = 0; i < name.GetLength(); i++) { - char c = name[i]; - if (isupper(c) != 0) { - if (i > 1) { - sb.Append('_'); - } - sb.Append(c); - } else { - sb.Append(toupper(c)); - } - } - - return sb.ToString(); -} - String JavaCodeEmitter::SpecificationParam(StringBuilder& paramSb, const String& prefix) { int maxLineLen = 120; diff --git a/tools/hdi-gen/codegen/java_code_emitter.h b/tools/hdi-gen/codegen/java_code_emitter.h index d8b2360a..080fb3ff 100755 --- a/tools/hdi-gen/codegen/java_code_emitter.h +++ b/tools/hdi-gen/codegen/java_code_emitter.h @@ -21,8 +21,6 @@ namespace HDI { class JavaCodeEmitter : public CodeEmitter { public: virtual ~JavaCodeEmitter() = default; - - static String FileName(const String& name); protected: bool CreateDirectory(); @@ -34,8 +32,6 @@ protected: String MethodName(const String& name); - String ConstantName(const String& name); - String SpecificationParam(StringBuilder& paramSb, const String& prefix); }; } // namespace HDI diff --git a/tools/hdi-gen/util/string.cpp b/tools/hdi-gen/util/string.cpp index d9569f91..7d360f4d 100755 --- a/tools/hdi-gen/util/string.cpp +++ b/tools/hdi-gen/util/string.cpp @@ -93,7 +93,6 @@ void SharedData::Release(const void* handle) }; } - const char* String::TAG = "String"; String::String(const char* string) @@ -499,29 +498,6 @@ String String::ToUpperCase() const return *this; } -String String::ToUnderLineUpper() const -{ - if (IsEmpty()) { - return *this; - } - - StringBuilder sb; - - for (int i = 0; i < GetLength(); i++) { - char c = string_[i]; - if (isupper(c) != 0) { - if (i > 1) { - sb.Append('_'); - } - sb.Append(c); - } else { - sb.Append(toupper(c)); - } - } - - return sb.ToString(); -} - String String::Substring(int begin) const { if (begin < 0 || begin >= GetLength()) { diff --git a/tools/hdi-gen/util/string.h b/tools/hdi-gen/util/string.h index 177c58a0..b22714c9 100755 --- a/tools/hdi-gen/util/string.h +++ b/tools/hdi-gen/util/string.h @@ -87,8 +87,6 @@ public: String ToUpperCase() const; - String ToUnderLineUpper() const; - String Substring(int begin) const; String Substring(int begin, int end) const;