diff options
author | Joe Onorato <joeo@google.com> | 2011-09-06 11:01:17 -0700 |
---|---|---|
committer | Joe Onorato <joeo@google.com> | 2011-09-06 11:06:41 -0700 |
commit | 27eee580d116a3950f4d40601cf5633e07985d65 (patch) | |
tree | b6f21c30d2a1c3211f1b9b2a9e50dbb32965329a /tools | |
parent | 76e700012529eeb63011e72ef7dcba33bd1cd896 (diff) | |
download | frameworks_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-x | tools/aidl/Type.cpp | 26 | ||||
-rwxr-xr-x | 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: |