• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  *
4  * HDF is dual licensed: you can use it either under the terms of
5  * the GPL, or the BSD license, at your option.
6  * See the LICENSE file in the root of this repository for complete details.
7  */
8 
9 #include "codegen/java_code_emitter.h"
10 
11 namespace OHOS {
12 namespace HDI {
EmitLicense(StringBuilder & sb)13 void JavaCodeEmitter::EmitLicense(StringBuilder& sb)
14 {
15     if (ast_->GetLicense().IsEmpty()) {
16         return;
17     }
18     sb.Append(ast_->GetLicense()).Append("\n\n");
19 }
20 
EmitPackage(StringBuilder & sb)21 void JavaCodeEmitter::EmitPackage(StringBuilder& sb)
22 {
23     sb.AppendFormat("package %s;\n", ast_->GetPackageName().string());
24 }
25 
EmitInterfaceMethodCommands(StringBuilder & sb,const String & prefix)26 void JavaCodeEmitter::EmitInterfaceMethodCommands(StringBuilder& sb, const String& prefix)
27 {
28     for (size_t i = 0; i < interface_->GetMethodNumber(); i++) {
29         AutoPtr<ASTMethod> method = interface_->GetMethod(i);
30         sb.Append(prefix).AppendFormat(
31             "private static final int COMMAND_%s = IRemoteObject.MIN_TRANSACTION_ID + %d;\n",
32             ConstantName(method->GetName()).string(), i);
33     }
34 }
35 
MethodName(const String & name)36 String JavaCodeEmitter::MethodName(const String& name)
37 {
38     if (name.IsEmpty() || islower(name[0])) {
39         return name;
40     }
41     return String::Format("%c%s", tolower(name[0]), name.Substring(1).string());
42 }
43 
SpecificationParam(StringBuilder & paramSb,const String & prefix)44 String JavaCodeEmitter::SpecificationParam(StringBuilder& paramSb, const String& prefix)
45 {
46     int maxLineLen = 120;
47     int replaceLen = 2;
48     String paramStr = paramSb.ToString();
49     int preIndex = 0;
50     int curIndex = 0;
51 
52     String insertStr = String::Format("\n%s", prefix.string());
53     for (; curIndex < paramStr.GetLength(); curIndex++) {
54         if (curIndex == maxLineLen && preIndex > 0) {
55             paramStr.Replace(preIndex, replaceLen, ",");
56             paramStr.insert(preIndex + 1, insertStr);
57         } else {
58             if (paramStr[curIndex] == ',') {
59                 preIndex = curIndex;
60             }
61         }
62     }
63     return paramStr;
64 }
65 } // namespace HDI
66 } // namespace OHOS