summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJoe Onorato <joeo@google.com>2011-09-06 11:01:17 -0700
committerJoe Onorato <joeo@google.com>2011-09-06 11:06:41 -0700
commit27eee580d116a3950f4d40601cf5633e07985d65 (patch)
treeb6f21c30d2a1c3211f1b9b2a9e50dbb32965329a /tools
parent76e700012529eeb63011e72ef7dcba33bd1cd896 (diff)
downloadframeworks_base-27eee580d116a3950f4d40601cf5633e07985d65.zip
frameworks_base-27eee580d116a3950f4d40601cf5633e07985d65.tar.gz
frameworks_base-27eee580d116a3950f4d40601cf5633e07985d65.tar.bz2
Add RpcData as a built-in marshallable type.
Change-Id: I7daf6e8ed61ad5bda1275fd48ae24b650a8a9743
Diffstat (limited to 'tools')
-rwxr-xr-xtools/aidl/Type.cpp26
-rwxr-xr-xtools/aidl/Type.h11
2 files changed, 35 insertions, 2 deletions
diff --git a/tools/aidl/Type.cpp b/tools/aidl/Type.cpp
index 4ae4d8b..9a58af0 100755
--- a/tools/aidl/Type.cpp
+++ b/tools/aidl/Type.cpp
@@ -130,8 +130,7 @@ register_base_types()
Type::BUILT_IN, false, false);
NAMES.Add(RPC_SERVICE_BASE_TYPE);
- RPC_DATA_TYPE = new Type("com.android.athome.rpc", "RpcData",
- Type::BUILT_IN, false, false);
+ RPC_DATA_TYPE = new RpcDataType();
NAMES.Add(RPC_DATA_TYPE);
RPC_BROKER_TYPE = new Type("com.android.athome.utils", "AndroidAtHomeBroker",
@@ -1207,6 +1206,29 @@ GenericListType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variabl
new LiteralExpression(classArg))));
}
+
+// ================================================================
+
+RpcDataType::RpcDataType()
+ :Type("com.android.athome.rpc", "RpcData", Type::BUILT_IN, false, false)
+{
+}
+
+void
+RpcDataType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v,
+ Variable* data, int flags)
+{
+ addTo->Add(new MethodCall(data, "putRpcData", 2, k, v));
+}
+
+void
+RpcDataType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data,
+ Variable** cl)
+{
+ addTo->Add(new Assignment(v, new MethodCall(data, "getRpcData", 1, k)));
+}
+
+
// ================================================================
ClassLoaderType::ClassLoaderType()
diff --git a/tools/aidl/Type.h b/tools/aidl/Type.h
index c22ef75..97b3a12 100755
--- a/tools/aidl/Type.h
+++ b/tools/aidl/Type.h
@@ -442,6 +442,17 @@ private:
string m_creator;
};
+class RpcDataType : public Type
+{
+public:
+ RpcDataType();
+
+ virtual void WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v,
+ Variable* data, int flags);
+ virtual void CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v,
+ Variable* data, Variable** cl);
+};
+
class ClassLoaderType : public Type
{
public: