diff options
-rw-r--r-- | build/xsdc.go | 14 | ||||
-rw-r--r-- | src/com/android/xsdc/Main.java | 3 | ||||
-rw-r--r-- | src/com/android/xsdc/cpp/CppCodeGenerator.java | 35 | ||||
-rw-r--r-- | src/com/android/xsdc/cpp/Utils.java | 2 |
4 files changed, 23 insertions, 31 deletions
diff --git a/build/xsdc.go b/build/xsdc.go index f66476b..f6e5f62 100644 --- a/build/xsdc.go +++ b/build/xsdc.go @@ -57,7 +57,7 @@ var ( type xsdConfigProperties struct { Srcs []string Package_name *string - Api_dir *string + Api_dir *string } type xsdConfig struct { @@ -85,9 +85,9 @@ type CheckApi struct { } type DroidstubsProperties struct { Name *string + No_framework_libs *bool Installable *bool Srcs []string - Sdk_version *string Args *string Api_filename *string Removed_api_filename *string @@ -143,9 +143,9 @@ func (module *xsdConfig) GenerateAndroidBuildActions(ctx android.ModuleContext) }, }) - filenameStem := strings.Replace(pkgName, ".", "_", -1) - module.genOutputs_c = android.PathForModuleGen(ctx, "cpp", filenameStem+".cpp") - module.genOutputs_h = android.PathForModuleGen(ctx, "cpp", "include/"+filenameStem+".h") + pkgName = strings.Replace(pkgName, ".", "_", -1) + module.genOutputs_c = android.PathForModuleGen(ctx, "cpp", pkgName+".cpp") + module.genOutputs_h = android.PathForModuleGen(ctx, "cpp", "include/"+pkgName+".h") module.genOutputDir = android.PathForModuleGen(ctx, "cpp", "include") ctx.Build(pctx, android.BuildParams{ @@ -186,7 +186,7 @@ func xsdConfigMutator(mctx android.TopDownMutatorContext) { check_api.Last_released.Removed_api_file = proptools.StringPtr( filepath.Join(api_dir, "last_removed.txt")) - mctx.CreateModule(java.DroidstubsFactory, &DroidstubsProperties{ + mctx.CreateModule(android.ModuleFactoryAdaptor(java.DroidstubsFactory), &DroidstubsProperties{ Name: proptools.StringPtr(name + ".docs"), Srcs: []string{":" + name}, Args: proptools.StringPtr(args), @@ -194,7 +194,7 @@ func xsdConfigMutator(mctx android.TopDownMutatorContext) { Removed_api_filename: proptools.StringPtr(removedApiFileName), Check_api: check_api, Installable: proptools.BoolPtr(false), - Sdk_version: proptools.StringPtr("core_platform"), + No_framework_libs: proptools.BoolPtr(true), }) } } diff --git a/src/com/android/xsdc/Main.java b/src/com/android/xsdc/Main.java index b8f6dd3..b0fe084 100644 --- a/src/com/android/xsdc/Main.java +++ b/src/com/android/xsdc/Main.java @@ -105,7 +105,8 @@ 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); + CppCodeGenerator cppCodeGenerator = new CppCodeGenerator(xmlSchema, + packageName.replace(".", "_")); cppCodeGenerator.print(fs); } } diff --git a/src/com/android/xsdc/cpp/CppCodeGenerator.java b/src/com/android/xsdc/cpp/CppCodeGenerator.java index 9f9ef7f..7a2ca5a 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 pkgName; + private String fileName; private Map<String, CppSimpleType> cppSimpleTypeMap; private CodeWriter cppFile; private CodeWriter headerFile; private boolean hasAttr; - public CppCodeGenerator(XmlSchema xmlSchema, String pkgName) + public CppCodeGenerator(XmlSchema xmlSchema, String fileName) throws CppCodeGeneratorException { this.xmlSchema = xmlSchema; - this.pkgName = pkgName; + this.fileName = fileName; // class naming validation { @@ -92,14 +92,11 @@ public class CppCodeGenerator { public void print(FileSystem fs) throws CppCodeGeneratorException, IOException { // cpp file, headr file init - 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); + 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()); headerFile.printf("#include <libxml/parser.h>\n"); headerFile.printf("#include <libxml/xinclude.h>\n\n"); headerFile.printf("#include <map>\n"); @@ -107,21 +104,15 @@ public class CppCodeGenerator { headerFile.printf("#include <string>\n"); headerFile.printf("#include <vector>\n\n"); - cppFile.printf("#define LOG_TAG \"%s\"\n\n", pkgName); + cppFile.printf("#define LOG_TAG \"%s\"\n\n", fileName); 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\"\n\n", hFileName); + cppFile.printf("#include \"%s.h\"\n\n",fileName); List<String> namespace = new java.util.ArrayList<>(); - for (String token : pkgName.split("\\.")) { - if (token.isEmpty()) { - continue; - } - if (Character.isDigit(token.charAt(0))) { - token = "_" + token; - } + for (String token : fileName.split("_")) { namespace.add(token); headerFile.printf("namespace %s {\n", token); cppFile.printf("namespace %s {\n", token); @@ -157,7 +148,7 @@ public class CppCodeGenerator { cppFile.printf("} // %s\n", token); } - headerFile.printf("#endif // %s\n", headerMacro); + headerFile.printf("#endif // %s_H\n",fileName.toUpperCase().replace(".", "_")); cppFile.close(); headerFile.close(); } @@ -445,7 +436,7 @@ public class CppCodeGenerator { + "}\n\n"); } - String className = Utils.toClassName(pkgName); + String className = Utils.toClassName(fileName); 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 d225114..b76a835 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)); |