Fix generateExportHeaderForPackage.
- Had meaningless check
- Was cluttering table of formats
Test: variations of `hidl-gen -Lexport-header -o foo.txt android.hardware.nfc@1.0`
Change-Id: Ic1d6cf6418ad7d8462f062d5d13b7dbb364cc9e4
diff --git a/main.cpp b/main.cpp
index 62f28e5..bece85e 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1016,102 +1016,102 @@
}
-static status_t generateExportHeaderForPackage(
- const FQName &packageFQName,
- const char * /* hidl_gen */,
- Coordinator *coordinator,
- const std::string &outputPath,
- bool forJava) {
+OutputHandler::GenerationFunction generateExportHeaderForPackage(bool forJava) {
+ return [forJava](const FQName &packageFQName,
+ const char * /* hidl_gen */,
+ Coordinator *coordinator,
+ const std::string &outputPath) -> status_t {
+ CHECK(packageFQName.isValid()
+ && !packageFQName.package().empty()
+ && !packageFQName.version().empty()
+ && packageFQName.name().empty());
- CHECK(packageFQName.isValid()
- && !packageFQName.isFullyQualified()
- && packageFQName.name().empty());
+ std::vector<FQName> packageInterfaces;
- std::vector<FQName> packageInterfaces;
+ status_t err = coordinator->appendPackageInterfacesToVector(
+ packageFQName, &packageInterfaces);
- status_t err = coordinator->appendPackageInterfacesToVector(
- packageFQName, &packageInterfaces);
-
- if (err != OK) {
- return err;
- }
-
- std::vector<const Type *> exportedTypes;
-
- for (const auto &fqName : packageInterfaces) {
- AST *ast = coordinator->parse(fqName);
-
- if (ast == NULL) {
- fprintf(stderr,
- "ERROR: Could not parse %s. Aborting.\n",
- fqName.string().c_str());
-
- return UNKNOWN_ERROR;
+ if (err != OK) {
+ return err;
}
- ast->appendToExportedTypesVector(&exportedTypes);
- }
+ std::vector<const Type *> exportedTypes;
- if (exportedTypes.empty()) {
+ for (const auto &fqName : packageInterfaces) {
+ AST *ast = coordinator->parse(fqName);
+
+ if (ast == NULL) {
+ fprintf(stderr,
+ "ERROR: Could not parse %s. Aborting.\n",
+ fqName.string().c_str());
+
+ return UNKNOWN_ERROR;
+ }
+
+ ast->appendToExportedTypesVector(&exportedTypes);
+ }
+
+ if (exportedTypes.empty()) {
+ return OK;
+ }
+
+ std::string path = outputPath;
+
+ if (forJava) {
+ path.append(coordinator->convertPackageRootToPath(packageFQName));
+
+ path.append(coordinator->getPackagePath(
+ packageFQName, true /* relative */, true /* sanitized */));
+
+ path.append("Constants.java");
+ }
+
+ CHECK(Coordinator::MakeParentHierarchy(path));
+ FILE *file = fopen(path.c_str(), "w");
+
+ if (file == nullptr) {
+ return -errno;
+ }
+
+ Formatter out(file);
+
+ out << "// This file is autogenerated by hidl-gen. Do not edit manually.\n"
+ << "// Source: " << packageFQName.string() << "\n"
+ << "// Root: " << coordinator->getPackageRootOption(packageFQName) << "\n\n";
+
+ std::string guard;
+ if (forJava) {
+ out << "package " << packageFQName.javaPackage() << ";\n\n";
+ out << "public class Constants {\n";
+ out.indent();
+ } else {
+ guard = "HIDL_GENERATED_";
+ guard += StringHelper::Uppercase(packageFQName.tokenName());
+ guard += "_";
+ guard += "EXPORTED_CONSTANTS_H_";
+
+ out << "#ifndef "
+ << guard
+ << "\n#define "
+ << guard
+ << "\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n";
+ }
+
+ for (const auto &type : exportedTypes) {
+ type->emitExportedHeader(out, forJava);
+ }
+
+ if (forJava) {
+ out.unindent();
+ out << "}\n";
+ } else {
+ out << "#ifdef __cplusplus\n}\n#endif\n\n#endif // "
+ << guard
+ << "\n";
+ }
+
return OK;
- }
-
- std::string path = outputPath;
-
- if (forJava) {
- path.append(coordinator->convertPackageRootToPath(packageFQName));
-
- path.append(coordinator->getPackagePath(
- packageFQName, true /* relative */, true /* sanitized */));
-
- path.append("Constants.java");
- }
-
- CHECK(Coordinator::MakeParentHierarchy(path));
- FILE *file = fopen(path.c_str(), "w");
-
- if (file == nullptr) {
- return -errno;
- }
-
- Formatter out(file);
-
- out << "// This file is autogenerated by hidl-gen. Do not edit manually.\n"
- << "// Source: " << packageFQName.string() << "\n"
- << "// Root: " << coordinator->getPackageRootOption(packageFQName) << "\n\n";
-
- std::string guard;
- if (forJava) {
- out << "package " << packageFQName.javaPackage() << ";\n\n";
- out << "public class Constants {\n";
- out.indent();
- } else {
- guard = "HIDL_GENERATED_";
- guard += StringHelper::Uppercase(packageFQName.tokenName());
- guard += "_";
- guard += "EXPORTED_CONSTANTS_H_";
-
- out << "#ifndef "
- << guard
- << "\n#define "
- << guard
- << "\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n";
- }
-
- for (const auto &type : exportedTypes) {
- type->emitExportedHeader(out, forJava);
- }
-
- if (forJava) {
- out.unindent();
- out << "}\n";
- } else {
- out << "#ifdef __cplusplus\n}\n#endif\n\n#endif // "
- << guard
- << "\n";
- }
-
- return OK;
+ };
}
static status_t generateHashOutput(const FQName &fqName,
@@ -1179,19 +1179,7 @@
{"export-header",
OutputHandler::NEEDS_FILE /* mOutputMode */,
validateForExportHeader,
- [](const FQName &fqName,
- const char *hidl_gen,
- Coordinator *coordinator,
- const std::string &outputPath) -> status_t {
- CHECK(!fqName.isFullyQualified());
-
- return generateExportHeaderForPackage(
- fqName,
- hidl_gen,
- coordinator,
- outputPath,
- false /* forJava */);
- }
+ generateExportHeaderForPackage(false /* forJava */)
},
{"c++-impl",
@@ -1210,17 +1198,7 @@
{"java-constants",
OutputHandler::NEEDS_DIR /* mOutputMode */,
validateForExportHeader,
- [](const FQName &fqName,
- const char *hidl_gen, Coordinator *coordinator,
- const std::string &outputDir) -> status_t {
- CHECK(!fqName.isFullyQualified());
- return generateExportHeaderForPackage(
- fqName,
- hidl_gen,
- coordinator,
- outputDir,
- true /* forJava */);
- }
+ generateExportHeaderForPackage(true /* forJava */)
},
{"vts",