aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-11-11 21:31:44 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-11-11 21:31:44 +0000
commit1dfcc2e00372ec728a3ef2719a7990ff8ffc239b (patch)
treed9ae40ce9d818f4819076a5e75cb4b9099bd49d3
parent6eb082df470c38b44fb8915cf1b9278fee7a9cc5 (diff)
parent027115fdabeb51606ac835d21b98a371c0c54eff (diff)
downloadxsdc-android10-mainline-resolv-release.tar.gz
Snap for 6001391 from 027115fdabeb51606ac835d21b98a371c0c54eff to qt-aml-resolv-releaseandroid-mainline-10.0.0_r8android10-mainline-resolv-release
Change-Id: Ic9eef5cfb8312b4a6b1726a25b16c153b340597a
-rw-r--r--build/xsdc.go6
-rw-r--r--src/com/android/xsdc/Main.java3
-rw-r--r--src/com/android/xsdc/cpp/CppCodeGenerator.java35
-rw-r--r--src/com/android/xsdc/cpp/Utils.java2
4 files changed, 27 insertions, 19 deletions
diff --git a/build/xsdc.go b/build/xsdc.go
index d336b53..f66476b 100644
--- a/build/xsdc.go
+++ b/build/xsdc.go
@@ -143,9 +143,9 @@ func (module *xsdConfig) GenerateAndroidBuildActions(ctx android.ModuleContext)
},
})
- pkgName = strings.Replace(pkgName, ".", "_", -1)
- module.genOutputs_c = android.PathForModuleGen(ctx, "cpp", pkgName+".cpp")
- module.genOutputs_h = android.PathForModuleGen(ctx, "cpp", "include/"+pkgName+".h")
+ filenameStem := strings.Replace(pkgName, ".", "_", -1)
+ module.genOutputs_c = android.PathForModuleGen(ctx, "cpp", filenameStem+".cpp")
+ module.genOutputs_h = android.PathForModuleGen(ctx, "cpp", "include/"+filenameStem+".h")
module.genOutputDir = android.PathForModuleGen(ctx, "cpp", "include")
ctx.Build(pctx, android.BuildParams{
diff --git a/src/com/android/xsdc/Main.java b/src/com/android/xsdc/Main.java
index b0fe084..b8f6dd3 100644
--- a/src/com/android/xsdc/Main.java
+++ b/src/com/android/xsdc/Main.java
@@ -105,8 +105,7 @@ public class Main {
File includeDir = new File(Paths.get(outDir, "include").toString());
includeDir.mkdirs();
FileSystem fs = new FileSystem(new File(outDir));
- CppCodeGenerator cppCodeGenerator = new CppCodeGenerator(xmlSchema,
- packageName.replace(".", "_"));
+ CppCodeGenerator cppCodeGenerator = new CppCodeGenerator(xmlSchema, packageName);
cppCodeGenerator.print(fs);
}
}
diff --git a/src/com/android/xsdc/cpp/CppCodeGenerator.java b/src/com/android/xsdc/cpp/CppCodeGenerator.java
index 7a2ca5a..9f9ef7f 100644
--- a/src/com/android/xsdc/cpp/CppCodeGenerator.java
+++ b/src/com/android/xsdc/cpp/CppCodeGenerator.java
@@ -35,16 +35,16 @@ import javax.xml.namespace.QName;
public class CppCodeGenerator {
private XmlSchema xmlSchema;
- private String fileName;
+ private String pkgName;
private Map<String, CppSimpleType> cppSimpleTypeMap;
private CodeWriter cppFile;
private CodeWriter headerFile;
private boolean hasAttr;
- public CppCodeGenerator(XmlSchema xmlSchema, String fileName)
+ public CppCodeGenerator(XmlSchema xmlSchema, String pkgName)
throws CppCodeGeneratorException {
this.xmlSchema = xmlSchema;
- this.fileName = fileName;
+ this.pkgName = pkgName;
// class naming validation
{
@@ -92,11 +92,14 @@ public class CppCodeGenerator {
public void print(FileSystem fs)
throws CppCodeGeneratorException, IOException {
// cpp file, headr file init
- cppFile = new CodeWriter(fs.getPrintWriter(fileName + ".cpp"));
- headerFile = new CodeWriter(fs.getPrintWriter("include/" + fileName + ".h"));
-
- headerFile.printf("#ifndef %s_H\n", fileName.toUpperCase());
- headerFile.printf("#define %s_H\n\n", fileName.toUpperCase());
+ String cppFileName = pkgName.replace(".", "_") + ".cpp";
+ String hFileName = pkgName.replace(".", "_") + ".h";
+ cppFile = new CodeWriter(fs.getPrintWriter(cppFileName));
+ headerFile = new CodeWriter(fs.getPrintWriter("include/" + hFileName));
+
+ String headerMacro = hFileName.toUpperCase().replace(".", "_");
+ headerFile.printf("#ifndef %s\n", headerMacro);
+ headerFile.printf("#define %s\n\n", headerMacro);
headerFile.printf("#include <libxml/parser.h>\n");
headerFile.printf("#include <libxml/xinclude.h>\n\n");
headerFile.printf("#include <map>\n");
@@ -104,15 +107,21 @@ public class CppCodeGenerator {
headerFile.printf("#include <string>\n");
headerFile.printf("#include <vector>\n\n");
- cppFile.printf("#define LOG_TAG \"%s\"\n\n", fileName);
+ cppFile.printf("#define LOG_TAG \"%s\"\n\n", pkgName);
cppFile.printf("#include <android/log.h>\n");
cppFile.printf("#include <android-base/strings.h>\n\n");
cppFile.printf("#include <libxml/parser.h>\n");
cppFile.printf("#include <libxml/xinclude.h>\n\n");
- cppFile.printf("#include \"%s.h\"\n\n",fileName);
+ cppFile.printf("#include \"%s\"\n\n", hFileName);
List<String> namespace = new java.util.ArrayList<>();
- for (String token : fileName.split("_")) {
+ for (String token : pkgName.split("\\.")) {
+ if (token.isEmpty()) {
+ continue;
+ }
+ if (Character.isDigit(token.charAt(0))) {
+ token = "_" + token;
+ }
namespace.add(token);
headerFile.printf("namespace %s {\n", token);
cppFile.printf("namespace %s {\n", token);
@@ -148,7 +157,7 @@ public class CppCodeGenerator {
cppFile.printf("} // %s\n", token);
}
- headerFile.printf("#endif // %s_H\n",fileName.toUpperCase().replace(".", "_"));
+ headerFile.printf("#endif // %s\n", headerMacro);
cppFile.close();
headerFile.close();
}
@@ -436,7 +445,7 @@ public class CppCodeGenerator {
+ "}\n\n");
}
- String className = Utils.toClassName(fileName);
+ String className = Utils.toClassName(pkgName);
boolean isMultiRootElement = xmlSchema.getElementMap().values().size() > 1;
for (XsdElement element : xmlSchema.getElementMap().values()) {
diff --git a/src/com/android/xsdc/cpp/Utils.java b/src/com/android/xsdc/cpp/Utils.java
index b76a835..d225114 100644
--- a/src/com/android/xsdc/cpp/Utils.java
+++ b/src/com/android/xsdc/cpp/Utils.java
@@ -66,7 +66,7 @@ class Utils {
static String toClassName(String name) throws CppCodeGeneratorException {
String trimmed = toCamelCase(
- name.replaceAll("[^A-Za-z0-9_-]", "").replaceAll("-","_").split("_"));
+ name.replaceAll("[^A-Za-z0-9_-]", "").replaceAll("[\\.-]", "_").split("_"));
if (trimmed.isEmpty() || Character.isDigit(trimmed.charAt(0))) {
throw new CppCodeGeneratorException(
String.format("cannot convert to a class name : %s", name));