From 27eee580d116a3950f4d40601cf5633e07985d65 Mon Sep 17 00:00:00 2001 From: Joe Onorato Date: Tue, 6 Sep 2011 11:01:17 -0700 Subject: Add RpcData as a built-in marshallable type. Change-Id: I7daf6e8ed61ad5bda1275fd48ae24b650a8a9743 --- tools/aidl/Type.cpp | 26 ++++++++++++++++++++++++-- tools/aidl/Type.h | 11 +++++++++++ 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: -- cgit v1.1