Merge "Use new read(Embedded)Buffer API."
diff --git a/ArrayType.cpp b/ArrayType.cpp
index 79d3e79..306cb9d 100644
--- a/ArrayType.cpp
+++ b/ArrayType.cpp
@@ -144,25 +144,16 @@
parcelObj + (parcelObjIsPointer ? "->" : ".");
if (isReader) {
-
- out << name
- << " = ("
- << getCppResultType()
- << ")"
+ out << "_hidl_err = "
<< parcelObjDeref
<< "readBuffer(&"
<< parentName
- << ");\n\n";
+ << ", "
+ << " reinterpret_cast<const void **>("
+ << "&" << name
+ << "));\n\n";
- out << "if (" << name << " == nullptr) {\n";
-
- out.indent();
-
- out << "_hidl_err = ::android::UNKNOWN_ERROR;\n";
- handleError2(out, mode);
-
- out.unindent();
- out << "}\n\n";
+ handleError(out, mode);
} else {
size_t numArrayElements = 1;
for (auto size : mSizes) {
diff --git a/CompoundType.cpp b/CompoundType.cpp
index 19abea4..64e588a 100644
--- a/CompoundType.cpp
+++ b/CompoundType.cpp
@@ -132,26 +132,17 @@
parcelObj + (parcelObjIsPointer ? "->" : ".");
if (isReader) {
- out << name
- << " = (const "
- << fullName()
- << " *)"
+ out << "_hidl_err = "
<< parcelObjDeref
<< "readBuffer("
<< "&"
<< parentName
- << ");\n";
+ << ", "
+ << " reinterpret_cast<const void **>("
+ << "&" << name
+ << "));\n";
- out << "if ("
- << name
- << " == nullptr) {\n";
-
- out.indent([&]{
- out << "_hidl_err = ::android::UNKNOWN_ERROR;\n";
- handleError2(out, mode);
- });
-
- out << "}\n\n";
+ handleError(out, mode);
} else {
out << "_hidl_err = "
<< parcelObjDeref
diff --git a/FmqType.cpp b/FmqType.cpp
index c22fd55..2f410f7 100644
--- a/FmqType.cpp
+++ b/FmqType.cpp
@@ -68,27 +68,16 @@
parcelObj + (parcelObjIsPointer ? "->" : ".");
if (isReader) {
- out << name
- << " = (const "
- << fullName()
- << " *)"
+ out << "_hidl_err = "
<< parcelObjDeref
- << "readBuffer("
- << "&"
+ << "readBuffer(&"
<< parentName
- << ");\n";
+ << ", "
+ << " reinterpret_cast<const void **>("
+ << "&" << name
+ << "));\n\n";
- out << "if ("
- << name
- << " == nullptr) {\n";
-
- out.indent();
-
- out << "_hidl_err = ::android::UNKNOWN_ERROR;\n";
- handleError2(out, mode);
-
- out.unindent();
- out << "}\n\n";
+ handleError(out, mode);
} else {
out << "_hidl_err = "
<< parcelObjDeref
diff --git a/HandleType.cpp b/HandleType.cpp
index 72c3c46..6acecbc 100644
--- a/HandleType.cpp
+++ b/HandleType.cpp
@@ -64,22 +64,18 @@
parcelObj + (parcelObjIsPointer ? "->" : ".");
if (isReader) {
- out << name
- << " = "
+ out << "const native_handle_t *"
+ << name << "_ptr;\n\n";
+
+ out << "_hidl_err = "
<< parcelObjDeref
- << "readNativeHandleNoDup();\n\n";
+ << "readNativeHandleNoDup("
+ << "&" << name << "_ptr"
+ << ");\n\n";
- out << "if ("
- << name
- << " == nullptr) {\n";
+ handleError(out, mode);
- out.indent();
-
- out << "_hidl_err = ::android::UNKNOWN_ERROR;\n";
- handleError2(out, mode);
-
- out.unindent();
- out << "}\n\n";
+ out << name << " = " << name << "_ptr;\n";
} else {
out << "_hidl_err = ";
out << parcelObjDeref
@@ -111,8 +107,8 @@
const std::string ptrName = "_hidl_" + sanitizedName + "_ptr";
out << "const native_handle_t *"
- << ptrName
- << " = "
+ << ptrName << ";\n"
+ << "_hidl_err = "
<< parcelObj
<< (parcelObjIsPointer ? "->" : ".")
<< "readEmbeddedNativeHandle(\n";
@@ -123,20 +119,15 @@
out << parentName
<< ",\n"
<< offsetText
+ << ",\n"
+ << "&" << ptrName
+ << "\n"
<< ");\n\n";
out.unindent();
out.unindent();
- out << "if ("
- << ptrName
- << " == nullptr) {\n";
-
- out.indent();
- out << "_hidl_err = ::android::UNKNOWN_ERROR;\n";
- handleError2(out, mode);
- out.unindent();
- out << "}\n\n";
+ handleError(out, mode);
} else {
out << "_hidl_err = "
<< parcelObj
diff --git a/MemoryType.cpp b/MemoryType.cpp
index 857bf05..3243cd4 100644
--- a/MemoryType.cpp
+++ b/MemoryType.cpp
@@ -63,25 +63,16 @@
parcelObj + (parcelObjIsPointer ? "->" : ".");
if (isReader) {
- out << name
- << " = (const ::android::hardware::hidl_memory *)"
+ out << "_hidl_err = "
<< parcelObjDeref
- << "readBuffer("
- << "&"
+ << "readBuffer(&"
<< parentName
- << ");\n";
+ << ", "
+ << " reinterpret_cast<const void **>("
+ << "&" << name
+ << "));\n\n";
- out << "if ("
- << name
- << " == nullptr) {\n";
-
- out.indent();
-
- out << "_hidl_err = ::android::UNKNOWN_ERROR;\n";
- handleError2(out, mode);
-
- out.unindent();
- out << "}\n\n";
+ handleError(out, mode);
} else {
out << "_hidl_err = "
<< parcelObjDeref
diff --git a/StringType.cpp b/StringType.cpp
index c366391..f093b65 100644
--- a/StringType.cpp
+++ b/StringType.cpp
@@ -78,25 +78,16 @@
parcelObj + (parcelObjIsPointer ? "->" : ".");
if (isReader) {
- out << name
- << " = (const ::android::hardware::hidl_string *)"
+ out << "_hidl_err = "
<< parcelObjDeref
- << "readBuffer("
- << "&"
+ << "readBuffer(&"
<< parentName
- << ");\n";
+ << ", "
+ << " reinterpret_cast<const void **>("
+ << "&" << name
+ << "));\n\n";
- out << "if ("
- << name
- << " == nullptr) {\n";
-
- out.indent();
-
- out << "_hidl_err = ::android::UNKNOWN_ERROR;\n";
- handleError2(out, mode);
-
- out.unindent();
- out << "}\n\n";
+ handleError(out, mode);
} else {
out << "_hidl_err = "
<< parcelObjDeref
diff --git a/Type.cpp b/Type.cpp
index 54135e0..7e67702 100644
--- a/Type.cpp
+++ b/Type.cpp
@@ -274,34 +274,6 @@
}
}
-void Type::handleError2(Formatter &out, ErrorMode mode) const {
- switch (mode) {
- case ErrorMode_Goto:
- {
- out << "goto _hidl_error;\n";
- break;
- }
-
- case ErrorMode_Break:
- {
- out << "break;\n";
- break;
- }
-
- case ErrorMode_Ignore:
- {
- out << "/* ignoring _hidl_error! */";
- break;
- }
-
- case ErrorMode_Return:
- {
- out << "return _hidl_err;\n";
- break;
- }
- }
-}
-
void Type::emitReaderWriterEmbeddedForTypeName(
Formatter &out,
const std::string &name,
diff --git a/Type.h b/Type.h
index c60ed8b..007b114 100644
--- a/Type.h
+++ b/Type.h
@@ -217,7 +217,6 @@
protected:
void handleError(Formatter &out, ErrorMode mode) const;
- void handleError2(Formatter &out, ErrorMode mode) const;
void emitReaderWriterEmbeddedForTypeName(
Formatter &out,
diff --git a/VectorType.cpp b/VectorType.cpp
index ff21994..1c1271a 100644
--- a/VectorType.cpp
+++ b/VectorType.cpp
@@ -149,24 +149,16 @@
parcelObj + (parcelObjIsPointer ? "->" : ".");
if (isReader) {
- out << name
- << " = (const ::android::hardware::hidl_vec<"
- << baseType
- << "> *)"
+ out << "_hidl_err = "
<< parcelObjDeref
<< "readBuffer(&"
<< parentName
- << ");\n\n";
+ << ", "
+ << " reinterpret_cast<const void **>("
+ << "&" << name
+ << "));\n\n";
- out << "if (" << name << " == nullptr) {\n";
-
- out.indent();
-
- out << "_hidl_err = ::android::UNKNOWN_ERROR;\n";
- handleError2(out, mode);
-
- out.unindent();
- out << "}\n\n";
+ handleError(out, mode);
} else {
out << "_hidl_err = "
<< parcelObjDeref