Add RpcData as a built-in marshallable type.

This commit is contained in:
Joe Onorato
2011-09-06 11:01:17 -07:00
committed by Mike Lockwood
parent 05ffbe7c02
commit 1eb720446d
2 changed files with 35 additions and 2 deletions

View File

@@ -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()

View File

@@ -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: