Auto-generate java libraries for compatible packages.
Change-Id: I753f8bc5ab8ca6b5293c75b548897bbdec16aa65
Bug: 31221188
diff --git a/generateJava.cpp b/generateJava.cpp
index f10ae92..a3c4761 100644
--- a/generateJava.cpp
+++ b/generateJava.cpp
@@ -51,7 +51,8 @@
arg->type().emitJavaReaderWriter(out, parcelObj, arg->name(), isReader);
}
-status_t AST::generateJavaTypes(const std::string &outputPath) const {
+status_t AST::generateJavaTypes(
+ const std::string &outputPath, const char *limitToType) const {
// Splits types.hal up into one java file per declared type.
for (size_t i = 0; i < mRootScope->countTypes(); ++i) {
@@ -62,6 +63,10 @@
continue;
}
+ if ((limitToType != nullptr) && typeName != limitToType) {
+ continue;
+ }
+
std::string path = outputPath;
path.append(mCoordinator->convertPackageRootToPath(mPackage));
path.append(mCoordinator->getPackagePath(mPackage, true /* relative */));
@@ -99,14 +104,9 @@
return OK;
}
-status_t AST::generateJava(const std::string &outputPath) const {
- std::string ifaceName;
- if (!AST::isInterface(&ifaceName)) {
- return generateJavaTypes(outputPath);
- }
-
- const Interface *iface = mRootScope->getInterface();
- if (!iface->isJavaCompatible()) {
+status_t AST::generateJava(
+ const std::string &outputPath, const char *limitToType) const {
+ if (!isJavaCompatible()) {
fprintf(stderr,
"ERROR: This interface is not Java compatible. The Java backend"
" does NOT support union types or native handles.\n");
@@ -114,6 +114,13 @@
return UNKNOWN_ERROR;
}
+ std::string ifaceName;
+ if (!AST::isInterface(&ifaceName)) {
+ return generateJavaTypes(outputPath, limitToType);
+ }
+
+ const Interface *iface = mRootScope->getInterface();
+
// cut off the leading 'I'.
const std::string baseName = ifaceName.substr(1);