move read/writeEmbedded[References]From/ToParcel out
from hidl_string, hidl_vec, and structs.
* Add a hwtypes.h in the autogenerated files, which
contains the read/writeEmbeddedFrom/ToParcel
methods for structs defined in types.h.
* Fixes the hack that remove the warnings when compiling
the generated code (useParentInEmitResolveReferencesEmbedded())
and add one more hack (useNameInEmitReaderWriterEmbedded())
* Some clean-up on Scope.cpp (add a forEachType function)
Test: mma
Test: hidl_test
Bug: 32756130
Change-Id: Icfd116b5d92fef78d257337c3f2ef02071f7600b
diff --git a/Type.cpp b/Type.cpp
index d7ae31a..47cea08 100644
--- a/Type.cpp
+++ b/Type.cpp
@@ -154,7 +154,11 @@
}
bool Type::useParentInEmitResolveReferencesEmbedded() const {
- return true;
+ return needsResolveReferences();
+}
+
+bool Type::useNameInEmitReaderWriterEmbedded(bool) const {
+ return needsEmbeddedReadWrite();
}
void Type::emitReaderWriterEmbedded(
@@ -273,32 +277,40 @@
const std::string &parentName,
const std::string &offsetText,
const std::string &typeName,
- const std::string &childName) const {
- const std::string parcelObjDeref =
+ const std::string &childName,
+ const std::string &funcNamespace) const {
+
+ const std::string parcelObjDeref =
parcelObjIsPointer ? ("*" + parcelObj) : parcelObj;
const std::string parcelObjPointer =
parcelObjIsPointer ? parcelObj : ("&" + parcelObj);
- const std::string nameDeref = name + (nameIsPointer ? "->" : ".");
+ const std::string nameDerefed = nameIsPointer ? ("*" + name) : name;
const std::string namePointer = nameIsPointer ? name : ("&" + name);
out << "_hidl_err = ";
+ if (!funcNamespace.empty()) {
+ out << funcNamespace << "::";
+ }
+
+ out << (isReader ? "readEmbeddedFromParcel(\n" : "writeEmbeddedToParcel(\n");
+
+ out.indent();
+ out.indent();
+
if (isReader) {
out << "const_cast<"
<< typeName
<< " *>("
<< namePointer
- << ")->readEmbeddedFromParcel(\n";
+ << "),\n";
} else {
- out << nameDeref
- << "writeEmbeddedToParcel(\n";
+ out << nameDerefed
+ << ",\n";
}
- out.indent();
- out.indent();
-
out << (isReader ? parcelObjDeref : parcelObjPointer)
<< ",\n"
<< parentName
@@ -326,6 +338,10 @@
return OK;
}
+status_t Type::emitGlobalHwDeclarations(Formatter &) const {
+ return OK;
+}
+
status_t Type::emitTypeDefinitions(
Formatter &, const std::string) const {
return OK;