modify warnings

Signed-off-by: wangyipeng <wangyipeng11@huawei.com>
This commit is contained in:
wangyipeng
2021-11-12 16:21:01 +08:00
parent 2b055bed52
commit 67b38f27d8
11 changed files with 155 additions and 113 deletions
+25 -19
View File
@@ -276,25 +276,7 @@ void ASTArrayType::EmitCUnMarshalling(const String& name, StringBuilder& sb, con
}
if (elementType_->GetTypeKind() == TypeKind::TYPE_STRING) {
String element = String::Format("%sElement", name.string());
elementType_->EmitCUnMarshalling(element, sb, newPrefix + g_tab, freeObjStatements);
if (Options::GetInstance().DoGenerateKernelCode()) {
sb.Append(newPrefix).AppendFormat("%s[i] = (char*)OsalMemCalloc(strlen(%s) + 1);\n",
name.string(), element.string());
sb.Append(newPrefix).AppendFormat("if (%s[i] == NULL) {\n", name.string());
sb.Append(newPrefix + g_tab).AppendFormat("goto errors;\n");
sb.Append(newPrefix).Append("}\n\n");
sb.Append(newPrefix).AppendFormat("if (strcpy_s((%s)[i], (strlen(%s) + 1), %s) != HDF_SUCCESS) {\n",
name.string(), element.string(), element.string());
sb.Append(newPrefix + g_tab).AppendFormat("HDF_LOGE(\"%%{public}s: read %s failed!\", __func__);\n",
element.string());
sb.Append(newPrefix + g_tab).Append("goto errors;\n");
sb.Append(newPrefix).Append("}\n");
} else {
sb.Append(newPrefix).Append(g_tab).AppendFormat("%s[i] = strdup(%s);\n",
name.string(), element.string());
}
EmitCStringElementUnMarshalling(name, sb, newPrefix, freeObjStatements);
} else if (elementType_->GetTypeKind() == TypeKind::TYPE_STRUCT) {
String element = String::Format("&%s[i]", name.string());
elementType_->EmitCUnMarshalling(element, sb, newPrefix + g_tab, freeObjStatements);
@@ -314,6 +296,30 @@ void ASTArrayType::EmitCUnMarshalling(const String& name, StringBuilder& sb, con
freeObjStatements.pop_back();
}
void ASTArrayType::EmitCStringElementUnMarshalling(const String& name, StringBuilder& sb, const String& newPrefix,
std::vector<String>& freeObjStatements) const
{
String element = String::Format("%sElement", name.string());
elementType_->EmitCUnMarshalling(element, sb, newPrefix + g_tab, freeObjStatements);
if (Options::GetInstance().DoGenerateKernelCode()) {
sb.Append(newPrefix).AppendFormat("%s[i] = (char*)OsalMemCalloc(strlen(%s) + 1);\n",
name.string(), element.string());
sb.Append(newPrefix).AppendFormat("if (%s[i] == NULL) {\n", name.string());
sb.Append(newPrefix + g_tab).AppendFormat("goto errors;\n");
sb.Append(newPrefix).Append("}\n\n");
sb.Append(newPrefix).AppendFormat("if (strcpy_s((%s)[i], (strlen(%s) + 1), %s) != HDF_SUCCESS) {\n",
name.string(), element.string(), element.string());
sb.Append(newPrefix + g_tab).AppendFormat("HDF_LOGE(\"%%{public}s: read %s failed!\", __func__);\n",
element.string());
sb.Append(newPrefix + g_tab).Append("goto errors;\n");
sb.Append(newPrefix).Append("}\n");
} else {
sb.Append(newPrefix).Append(g_tab).AppendFormat("%s[i] = strdup(%s);\n",
name.string(), element.string());
}
}
void ASTArrayType::EmitCppMarshalling(const String& parcelName, const String& name, StringBuilder& sb,
const String& prefix, unsigned int innerLevel) const
{
+3
View File
@@ -87,6 +87,9 @@ private:
void EmitCStubReadStrElement(const String& parcelName, const String& name, StringBuilder& sb,
const String& prefix) const;
void EmitCStringElementUnMarshalling(const String& name, StringBuilder& sb, const String& newPrefix,
std::vector<String>& freeObjStatements) const;
AutoPtr<ASTType> elementType_;
};
} // namespace HDI
+24 -18
View File
@@ -280,24 +280,7 @@ void ASTListType::EmitCUnMarshalling(const String& name, StringBuilder& sb, cons
}
if (elementType_->GetTypeKind() == TypeKind::TYPE_STRING) {
String element = String::Format("%sElement", name.string());
elementType_->EmitCUnMarshalling(element, sb, newPrefix + g_tab, freeObjStatements);
if (Options::GetInstance().DoGenerateKernelCode()) {
sb.Append(newPrefix).AppendFormat("%s[i] = (char*)OsalMemCalloc(strlen(%s) + 1);\n",
name.string(), element.string());
sb.Append(newPrefix).AppendFormat("if (%s[i] == NULL) {\n", name.string());
sb.Append(newPrefix + g_tab).AppendFormat("goto errors;\n");
sb.Append(newPrefix).Append("}\n\n");
sb.Append(newPrefix).AppendFormat("if (strcpy_s((%s)[i], (strlen(%s) + 1), %s) != HDF_SUCCESS) {\n",
name.string(), element.string(), element.string());
sb.Append(newPrefix + g_tab).AppendFormat("HDF_LOGE(\"%%{public}s: read %s failed!\", __func__);\n",
element.string());
sb.Append(newPrefix + g_tab).Append("goto errors;\n");
sb.Append(newPrefix).Append("}\n");
} else {
sb.Append(newPrefix).Append(g_tab).AppendFormat("%s[i] = strdup(%s);\n",
name.string(), element.string());
}
EmitCStringElementUnMarshalling(name, sb, newPrefix, freeObjStatements);
} else if (elementType_->GetTypeKind() == TypeKind::TYPE_STRUCT) {
String element = String::Format("&%s[i]", name.string());
elementType_->EmitCUnMarshalling(element, sb, newPrefix + g_tab, freeObjStatements);
@@ -317,6 +300,29 @@ void ASTListType::EmitCUnMarshalling(const String& name, StringBuilder& sb, cons
freeObjStatements.pop_back();
}
void ASTListType::EmitCStringElementUnMarshalling(const String& name, StringBuilder& sb, const String& newPrefix,
std::vector<String>& freeObjStatements) const
{
String element = String::Format("%sElement", name.string());
elementType_->EmitCUnMarshalling(element, sb, newPrefix + g_tab, freeObjStatements);
if (Options::GetInstance().DoGenerateKernelCode()) {
sb.Append(newPrefix).AppendFormat("%s[i] = (char*)OsalMemCalloc(strlen(%s) + 1);\n",
name.string(), element.string());
sb.Append(newPrefix).AppendFormat("if (%s[i] == NULL) {\n", name.string());
sb.Append(newPrefix + g_tab).AppendFormat("goto errors;\n");
sb.Append(newPrefix).Append("}\n\n");
sb.Append(newPrefix).AppendFormat("if (strcpy_s((%s)[i], (strlen(%s) + 1), %s) != HDF_SUCCESS) {\n",
name.string(), element.string(), element.string());
sb.Append(newPrefix + g_tab).AppendFormat("HDF_LOGE(\"%%{public}s: read %s failed!\", __func__);\n",
element.string());
sb.Append(newPrefix + g_tab).Append("goto errors;\n");
sb.Append(newPrefix).Append("}\n");
} else {
sb.Append(newPrefix).Append(g_tab).AppendFormat("%s[i] = strdup(%s);\n",
name.string(), element.string());
}
}
void ASTListType::EmitCppMarshalling(const String& parcelName, const String& name, StringBuilder& sb,
const String& prefix, unsigned int innerLevel) const
{
+3
View File
@@ -85,6 +85,9 @@ private:
void EmitCStubReadStrElement(const String& parcelName, const String& name, StringBuilder& sb,
const String& prefix) const;
void EmitCStringElementUnMarshalling(const String& name, StringBuilder& sb, const String& newPrefix,
std::vector<String>& freeObjStatements) const;
AutoPtr<ASTType> elementType_ = nullptr;
};
} // namespace HDI
@@ -214,26 +214,7 @@ void CServiceStubCodeEmitter::EmitReadStubMethodParameter(const AutoPtr<ASTParam
AutoPtr<ASTType> type = param->GetType();
if (type->GetTypeKind() == TypeKind::TYPE_STRING) {
String cloneName = String::Format("%sCp", param->GetName().string());
type->EmitCStubReadVar(parcelName, cloneName, sb, prefix);
if (isKernelCode_) {
sb.Append("\n");
sb.Append(prefix).AppendFormat("%s = (char*)OsalMemCalloc(strlen(%s) + 1);\n",
param->GetName().string(), cloneName.string());
sb.Append(prefix).AppendFormat("if (%s == NULL) {\n", param->GetName().string());
sb.Append(prefix + g_tab).Append("ec = HDF_ERR_MALLOC_FAIL;\n");
sb.Append(prefix + g_tab).Append("goto errors;\n");
sb.Append(prefix).Append("}\n\n");
sb.Append(prefix).AppendFormat("if (strcpy_s(%s, (strlen(%s) + 1), %s) != HDF_SUCCESS) {\n",
param->GetName().string(), cloneName.string(), cloneName.string());
sb.Append(prefix + g_tab).AppendFormat("HDF_LOGE(\"%%{public}s: read %s failed!\", __func__);\n",
param->GetName().string());
sb.Append(prefix + g_tab).Append("ec = HDF_ERR_INVALID_PARAM;\n");
sb.Append(prefix + g_tab).Append("goto errors;\n");
sb.Append(prefix).Append("}\n");
} else {
sb.Append(prefix).AppendFormat("%s = strdup(%s);\n", param->GetName().string(), cloneName.string());
}
EmitReadCStringStubMethodParameter(param, parcelName, sb, prefix, type);
} else if (type->GetTypeKind() == TypeKind::TYPE_INTERFACE) {
type->EmitCStubReadVar(parcelName, param->GetName(), sb, prefix);
} else if (type->GetTypeKind() == TypeKind::TYPE_STRUCT) {
@@ -265,6 +246,31 @@ void CServiceStubCodeEmitter::EmitReadStubMethodParameter(const AutoPtr<ASTParam
}
}
void CServiceStubCodeEmitter::EmitReadCStringStubMethodParameter(const AutoPtr<ASTParameter>& param,
const String& parcelName, StringBuilder& sb, const String& prefix, AutoPtr<ASTType>& type)
{
String cloneName = String::Format("%sCp", param->GetName().string());
type->EmitCStubReadVar(parcelName, cloneName, sb, prefix);
if (isKernelCode_) {
sb.Append("\n");
sb.Append(prefix).AppendFormat("%s = (char*)OsalMemCalloc(strlen(%s) + 1);\n",
param->GetName().string(), cloneName.string());
sb.Append(prefix).AppendFormat("if (%s == NULL) {\n", param->GetName().string());
sb.Append(prefix + g_tab).Append("ec = HDF_ERR_MALLOC_FAIL;\n");
sb.Append(prefix + g_tab).Append("goto errors;\n");
sb.Append(prefix).Append("}\n\n");
sb.Append(prefix).AppendFormat("if (strcpy_s(%s, (strlen(%s) + 1), %s) != HDF_SUCCESS) {\n",
param->GetName().string(), cloneName.string(), cloneName.string());
sb.Append(prefix + g_tab).AppendFormat("HDF_LOGE(\"%%{public}s: read %s failed!\", __func__);\n",
param->GetName().string());
sb.Append(prefix + g_tab).Append("ec = HDF_ERR_INVALID_PARAM;\n");
sb.Append(prefix + g_tab).Append("goto errors;\n");
sb.Append(prefix).Append("}\n");
} else {
sb.Append(prefix).AppendFormat("%s = strdup(%s);\n", param->GetName().string(), cloneName.string());
}
}
void CServiceStubCodeEmitter::EmitStubCallMethod(const AutoPtr<ASTMethod>& method, const String& gotoLabel,
StringBuilder& sb, const String& prefix)
{
@@ -42,6 +42,9 @@ private:
void EmitReadStubMethodParameter(const AutoPtr<ASTParameter>& param, const String& parcelName, StringBuilder& sb,
const String& prefix);
void EmitReadCStringStubMethodParameter(const AutoPtr<ASTParameter>& param, const String& parcelName,
StringBuilder& sb, const String& prefix, AutoPtr<ASTType>& type);
void EmitStubCallMethod(const AutoPtr<ASTMethod>& method, const String& gotoLabel, StringBuilder& sb,
const String& prefix);
-1
View File
@@ -12,7 +12,6 @@
namespace OHOS {
namespace HDI {
bool CodeEmitter::OutPut(const AutoPtr<AST>& ast, const String& targetDirectory, bool isKernelCode)
{
if (!Reset(ast, targetDirectory, isKernelCode)) {
-1
View File
@@ -171,6 +171,5 @@ void CodeGenerator::GenerateJavaCode(const AutoPtr<AST>& ast, const String& outD
break;
}
}
} // namespace HDI
} // namespace OHOS
@@ -84,7 +84,6 @@ void CppServiceStubCodeEmitter::EmitStubDecl(StringBuilder& sb)
EmitStubUsingNamespace(sb);
sb.Append("\n");
sb.AppendFormat("class %s {\n", stubName_.string());
sb.Append("public:\n");
EmitStubBody(sb, g_tab);
sb.Append("};\n");
+64 -52
View File
@@ -46,63 +46,75 @@ Options& Options::Parse(int argc, char* const argv[])
int optIndex = 0;
while ((op = getopt_long(argc, argv, optSupportArgs, g_longOpts, &optIndex)) != OPT_END) {
switch (op) {
case 'c':
doCompile_ = true;
sourceFilePath_ = optarg;
break;
case 'd':
doOutDir_ = true;
generationDirectory_ = optarg;
break;
case 'h':
doShowUsage_ = true;
break;
case 'v':
doShowVersion_ = true;
break;
case 'k':
doModeKernel_ = true;
break;
case 'u':
doModeKernel_ = false;
break;
case 'C':
doGenerateCode_ = true;
targetLanguage_ = "c";
break;
case 'P':
doGenerateCode_ = true;
targetLanguage_ = "cpp";
break;
case 'J':
doGenerateCode_ = true;
targetLanguage_ = "java";
break;
case 'a':
doGeneratePart_ = true;
codePart_ = "client";
break;
case 'b':
doGeneratePart_ = true;
codePart_ = "server";
break;
case 'H':
doGetHashKey_ = true;
break;
case 'D':
doDumpAST_ = true;
break;
case '?':
default:
doShowUsage_ = true;
break;
}
SetOptionData(op);
}
CheckOptions();
return *this;
}
void Options::SetOptionData(char op)
{
switch (op) {
case 'c':
doCompile_ = true;
sourceFilePath_ = optarg;
break;
case 'd':
doOutDir_ = true;
generationDirectory_ = optarg;
break;
case 'h':
doShowUsage_ = true;
break;
case 'v':
doShowVersion_ = true;
break;
case 'k':
doModeKernel_ = true;
break;
case 'u':
doModeKernel_ = false;
break;
case 'C':
SetLanguage("c");
break;
case 'P':
SetLanguage("cpp");
break;
case 'J':
SetLanguage("java");
break;
case 'a':
SetCodePart("client");
break;
case 'b':
SetCodePart("server");
break;
case 'H':
doGetHashKey_ = true;
break;
case 'D':
doDumpAST_ = true;
break;
case '?':
default:
doShowUsage_ = true;
break;
}
}
void Options::SetLanguage(String language)
{
doGenerateCode_ = true;
targetLanguage_ = language;
}
void Options::SetCodePart(String part)
{
doGeneratePart_ = true;
codePart_ = part;
}
void Options::CheckOptions()
{
if (doShowUsage_ || doShowVersion_) {
+7 -1
View File
@@ -106,7 +106,13 @@ private:
doGetHashKey_(false),
doGenerateCode_(false),
doOutDir_(false) {}
void SetOptionData(char op);
void SetLanguage(String language);
void SetCodePart(String part);
void CheckOptions();
static const char* optSupportArgs;