Keeping track of imported names, resolve enum storage types, some finetuning.
diff --git a/EnumType.cpp b/EnumType.cpp
index 506c796..40948b5 100644
--- a/EnumType.cpp
+++ b/EnumType.cpp
@@ -3,6 +3,8 @@
#include "Formatter.h"
#include "ScalarType.h"
+#include <android-base/logging.h>
+
namespace android {
EnumValue::EnumValue(const char *name, const char *value)
@@ -60,6 +62,10 @@
out << "};\n\n";
}
+const ScalarType *EnumType::resolveToScalarType() const {
+ return mStorageType->resolveToScalarType();
+}
+
std::string EnumType::getCppType(StorageMode, std::string *extra) const {
extra->clear();
@@ -73,17 +79,29 @@
bool parcelObjIsPointer,
bool isReader,
ErrorMode mode) const {
- mStorageType->emitReaderWriter(
- out, name, parcelObj, parcelObjIsPointer, isReader, mode);
+ const ScalarType *scalarType = mStorageType->resolveToScalarType();
+ CHECK(scalarType != NULL);
+
+ scalarType->emitReaderWriterWithCast(
+ out,
+ name,
+ parcelObj,
+ parcelObjIsPointer,
+ isReader,
+ mode,
+ true /* needsCast */);
}
status_t EnumType::emitTypeDeclarations(Formatter &out) const {
+ const ScalarType *scalarType = mStorageType->resolveToScalarType();
+ CHECK(scalarType != NULL);
+
std::string extra;
out << "enum class "
<< name()
<< " : "
- << mStorageType->getCppType(&extra)
+ << ((Type *)scalarType)->getCppType(&extra)
<< " {\n";
out.indent();