Merge "Remove RPC interface Type"
This commit is contained in:
@@ -31,7 +31,6 @@ LOCAL_SRC_FILES := \
|
|||||||
aidl_language_y.y \
|
aidl_language_y.y \
|
||||||
generate_java.cpp \
|
generate_java.cpp \
|
||||||
generate_java_binder.cpp \
|
generate_java_binder.cpp \
|
||||||
generate_java_rpc.cpp \
|
|
||||||
options.cpp \
|
options.cpp \
|
||||||
search_path.cpp \
|
search_path.cpp \
|
||||||
|
|
||||||
|
|||||||
@@ -28,9 +28,6 @@ Type* CONTEXT_TYPE;
|
|||||||
Type* MAP_TYPE;
|
Type* MAP_TYPE;
|
||||||
Type* LIST_TYPE;
|
Type* LIST_TYPE;
|
||||||
Type* CLASSLOADER_TYPE;
|
Type* CLASSLOADER_TYPE;
|
||||||
Type* RPC_DATA_TYPE;
|
|
||||||
Type* RPC_ERROR_TYPE;
|
|
||||||
Type* EVENT_FAKE_TYPE;
|
|
||||||
|
|
||||||
Expression* NULL_VALUE;
|
Expression* NULL_VALUE;
|
||||||
Expression* THIS_VALUE;
|
Expression* THIS_VALUE;
|
||||||
@@ -42,7 +39,6 @@ void
|
|||||||
register_base_types()
|
register_base_types()
|
||||||
{
|
{
|
||||||
VOID_TYPE = new BasicType("void",
|
VOID_TYPE = new BasicType("void",
|
||||||
"XXX", "XXX", "XXX", "XXX", "XXX",
|
|
||||||
"XXX", "XXX", "XXX", "XXX", "XXX");
|
"XXX", "XXX", "XXX", "XXX", "XXX");
|
||||||
NAMES.Add(VOID_TYPE);
|
NAMES.Add(VOID_TYPE);
|
||||||
|
|
||||||
@@ -50,37 +46,37 @@ register_base_types()
|
|||||||
NAMES.Add(BOOLEAN_TYPE);
|
NAMES.Add(BOOLEAN_TYPE);
|
||||||
|
|
||||||
BYTE_TYPE = new BasicType("byte",
|
BYTE_TYPE = new BasicType("byte",
|
||||||
"writeByte", "readByte", "writeByteArray", "createByteArray", "readByteArray",
|
"writeByte", "readByte", "writeByteArray", "createByteArray",
|
||||||
"putByte", "getByte", "putByteArray", "createByteArray", "getByteArray");
|
"readByteArray");
|
||||||
NAMES.Add(BYTE_TYPE);
|
NAMES.Add(BYTE_TYPE);
|
||||||
|
|
||||||
CHAR_TYPE = new CharType();
|
CHAR_TYPE = new CharType();
|
||||||
NAMES.Add(CHAR_TYPE);
|
NAMES.Add(CHAR_TYPE);
|
||||||
|
|
||||||
INT_TYPE = new BasicType("int",
|
INT_TYPE = new BasicType("int",
|
||||||
"writeInt", "readInt", "writeIntArray", "createIntArray", "readIntArray",
|
"writeInt", "readInt", "writeIntArray", "createIntArray",
|
||||||
"putInteger", "getInteger", "putIntegerArray", "createIntegerArray", "getIntegerArray");
|
"readIntArray");
|
||||||
NAMES.Add(INT_TYPE);
|
NAMES.Add(INT_TYPE);
|
||||||
|
|
||||||
LONG_TYPE = new BasicType("long",
|
LONG_TYPE = new BasicType("long",
|
||||||
"writeLong", "readLong", "writeLongArray", "createLongArray", "readLongArray",
|
"writeLong", "readLong", "writeLongArray", "createLongArray",
|
||||||
"putLong", "getLong", "putLongArray", "createLongArray", "getLongArray");
|
"readLongArray");
|
||||||
NAMES.Add(LONG_TYPE);
|
NAMES.Add(LONG_TYPE);
|
||||||
|
|
||||||
FLOAT_TYPE = new BasicType("float",
|
FLOAT_TYPE = new BasicType("float",
|
||||||
"writeFloat", "readFloat", "writeFloatArray", "createFloatArray", "readFloatArray",
|
"writeFloat", "readFloat", "writeFloatArray", "createFloatArray",
|
||||||
"putFloat", "getFloat", "putFloatArray", "createFloatArray", "getFloatArray");
|
"readFloatArray");
|
||||||
NAMES.Add(FLOAT_TYPE);
|
NAMES.Add(FLOAT_TYPE);
|
||||||
|
|
||||||
DOUBLE_TYPE = new BasicType("double",
|
DOUBLE_TYPE = new BasicType("double",
|
||||||
"writeDouble", "readDouble", "writeDoubleArray", "createDoubleArray", "readDoubleArray",
|
"writeDouble", "readDouble", "writeDoubleArray",
|
||||||
"putDouble", "getDouble", "putDoubleArray", "createDoubleArray", "getDoubleArray");
|
"createDoubleArray", "readDoubleArray");
|
||||||
NAMES.Add(DOUBLE_TYPE);
|
NAMES.Add(DOUBLE_TYPE);
|
||||||
|
|
||||||
STRING_TYPE = new StringType();
|
STRING_TYPE = new StringType();
|
||||||
NAMES.Add(STRING_TYPE);
|
NAMES.Add(STRING_TYPE);
|
||||||
|
|
||||||
OBJECT_TYPE = new Type("java.lang", "Object", Type::BUILT_IN, false, false, false);
|
OBJECT_TYPE = new Type("java.lang", "Object", Type::BUILT_IN, false, false);
|
||||||
NAMES.Add(OBJECT_TYPE);
|
NAMES.Add(OBJECT_TYPE);
|
||||||
|
|
||||||
CHAR_SEQUENCE_TYPE = new CharSequenceType();
|
CHAR_SEQUENCE_TYPE = new CharSequenceType();
|
||||||
@@ -92,7 +88,7 @@ register_base_types()
|
|||||||
LIST_TYPE = new ListType();
|
LIST_TYPE = new ListType();
|
||||||
NAMES.Add(LIST_TYPE);
|
NAMES.Add(LIST_TYPE);
|
||||||
|
|
||||||
TEXT_UTILS_TYPE = new Type("android.text", "TextUtils", Type::BUILT_IN, false, false, false);
|
TEXT_UTILS_TYPE = new Type("android.text", "TextUtils", Type::BUILT_IN, false, false);
|
||||||
NAMES.Add(TEXT_UTILS_TYPE);
|
NAMES.Add(TEXT_UTILS_TYPE);
|
||||||
|
|
||||||
REMOTE_EXCEPTION_TYPE = new RemoteExceptionType();
|
REMOTE_EXCEPTION_TYPE = new RemoteExceptionType();
|
||||||
@@ -119,19 +115,9 @@ register_base_types()
|
|||||||
PARCELABLE_INTERFACE_TYPE = new ParcelableInterfaceType();
|
PARCELABLE_INTERFACE_TYPE = new ParcelableInterfaceType();
|
||||||
NAMES.Add(PARCELABLE_INTERFACE_TYPE);
|
NAMES.Add(PARCELABLE_INTERFACE_TYPE);
|
||||||
|
|
||||||
CONTEXT_TYPE = new Type("android.content", "Context", Type::BUILT_IN, false, false, false);
|
CONTEXT_TYPE = new Type("android.content", "Context", Type::BUILT_IN, false, false);
|
||||||
NAMES.Add(CONTEXT_TYPE);
|
NAMES.Add(CONTEXT_TYPE);
|
||||||
|
|
||||||
RPC_DATA_TYPE = new RpcDataType();
|
|
||||||
NAMES.Add(RPC_DATA_TYPE);
|
|
||||||
|
|
||||||
RPC_ERROR_TYPE = new UserDataType("android.support.place.rpc", "RpcError",
|
|
||||||
true, __FILE__, __LINE__);
|
|
||||||
NAMES.Add(RPC_ERROR_TYPE);
|
|
||||||
|
|
||||||
EVENT_FAKE_TYPE = new Type("event", Type::BUILT_IN, false, false, false);
|
|
||||||
NAMES.Add(EVENT_FAKE_TYPE);
|
|
||||||
|
|
||||||
CLASSLOADER_TYPE = new ClassLoaderType();
|
CLASSLOADER_TYPE = new ClassLoaderType();
|
||||||
NAMES.Add(CLASSLOADER_TYPE);
|
NAMES.Add(CLASSLOADER_TYPE);
|
||||||
|
|
||||||
@@ -158,30 +144,27 @@ make_generic_type(const string& package, const string& name,
|
|||||||
|
|
||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
Type::Type(const string& name, int kind, bool canWriteToParcel, bool canWriteToRpcData,
|
Type::Type(const string& name, int kind, bool canWriteToParcel, bool canBeOut)
|
||||||
bool canBeOut)
|
|
||||||
:m_package(),
|
:m_package(),
|
||||||
m_name(name),
|
m_name(name),
|
||||||
m_declFile(""),
|
m_declFile(""),
|
||||||
m_declLine(-1),
|
m_declLine(-1),
|
||||||
m_kind(kind),
|
m_kind(kind),
|
||||||
m_canWriteToParcel(canWriteToParcel),
|
m_canWriteToParcel(canWriteToParcel),
|
||||||
m_canWriteToRpcData(canWriteToRpcData),
|
|
||||||
m_canBeOut(canBeOut)
|
m_canBeOut(canBeOut)
|
||||||
{
|
{
|
||||||
m_qualifiedName = name;
|
m_qualifiedName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
Type::Type(const string& package, const string& name,
|
Type::Type(const string& package, const string& name,
|
||||||
int kind, bool canWriteToParcel, bool canWriteToRpcData,
|
int kind, bool canWriteToParcel, bool canBeOut,
|
||||||
bool canBeOut, const string& declFile, int declLine)
|
const string& declFile, int declLine)
|
||||||
:m_package(package),
|
:m_package(package),
|
||||||
m_name(name),
|
m_name(name),
|
||||||
m_declFile(declFile),
|
m_declFile(declFile),
|
||||||
m_declLine(declLine),
|
m_declLine(declLine),
|
||||||
m_kind(kind),
|
m_kind(kind),
|
||||||
m_canWriteToParcel(canWriteToParcel),
|
m_canWriteToParcel(canWriteToParcel),
|
||||||
m_canWriteToRpcData(canWriteToRpcData),
|
|
||||||
m_canBeOut(canBeOut)
|
m_canBeOut(canBeOut)
|
||||||
{
|
{
|
||||||
if (package.length() > 0) {
|
if (package.length() > 0) {
|
||||||
@@ -213,12 +196,6 @@ Type::CreatorName() const
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
string
|
|
||||||
Type::RpcCreatorName() const
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
string
|
string
|
||||||
Type::InstantiableName() const
|
Type::InstantiableName() const
|
||||||
{
|
{
|
||||||
@@ -281,26 +258,6 @@ Type::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel,
|
|||||||
+ m_qualifiedName + " */"));
|
+ m_qualifiedName + " */"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
Type::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v,
|
|
||||||
Variable* data, int flags)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n",
|
|
||||||
__FILE__, __LINE__, m_qualifiedName.c_str());
|
|
||||||
addTo->Add(new LiteralExpression("/* WriteToRpcData error "
|
|
||||||
+ m_qualifiedName + " */"));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
Type::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data,
|
|
||||||
Variable** cl)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n",
|
|
||||||
__FILE__, __LINE__, m_qualifiedName.c_str());
|
|
||||||
addTo->Add(new LiteralExpression("/* ReadFromRpcData error "
|
|
||||||
+ m_qualifiedName + " */"));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Type::SetQualifiedName(const string& qualified)
|
Type::SetQualifiedName(const string& qualified)
|
||||||
{
|
{
|
||||||
@@ -324,20 +281,13 @@ Type::BuildWriteToParcelFlags(int flags)
|
|||||||
|
|
||||||
BasicType::BasicType(const string& name, const string& marshallParcel,
|
BasicType::BasicType(const string& name, const string& marshallParcel,
|
||||||
const string& unmarshallParcel, const string& writeArrayParcel,
|
const string& unmarshallParcel, const string& writeArrayParcel,
|
||||||
const string& createArrayParcel, const string& readArrayParcel,
|
const string& createArrayParcel, const string& readArrayParcel)
|
||||||
const string& marshallRpc, const string& unmarshallRpc,
|
:Type(name, BUILT_IN, true, false),
|
||||||
const string& writeArrayRpc, const string& createArrayRpc, const string& readArrayRpc)
|
|
||||||
:Type(name, BUILT_IN, true, true, false),
|
|
||||||
m_marshallParcel(marshallParcel),
|
m_marshallParcel(marshallParcel),
|
||||||
m_unmarshallParcel(unmarshallParcel),
|
m_unmarshallParcel(unmarshallParcel),
|
||||||
m_writeArrayParcel(writeArrayParcel),
|
m_writeArrayParcel(writeArrayParcel),
|
||||||
m_createArrayParcel(createArrayParcel),
|
m_createArrayParcel(createArrayParcel),
|
||||||
m_readArrayParcel(readArrayParcel),
|
m_readArrayParcel(readArrayParcel)
|
||||||
m_marshallRpc(marshallRpc),
|
|
||||||
m_unmarshallRpc(unmarshallRpc),
|
|
||||||
m_writeArrayRpc(writeArrayRpc),
|
|
||||||
m_createArrayRpc(createArrayRpc),
|
|
||||||
m_readArrayRpc(readArrayRpc)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,24 +328,10 @@ BasicType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* par
|
|||||||
addTo->Add(new MethodCall(parcel, m_readArrayParcel, 1, v));
|
addTo->Add(new MethodCall(parcel, m_readArrayParcel, 1, v));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
BasicType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v,
|
|
||||||
Variable* data, int flags)
|
|
||||||
{
|
|
||||||
addTo->Add(new MethodCall(data, m_marshallRpc, 2, k, v));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
BasicType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data,
|
|
||||||
Variable** cl)
|
|
||||||
{
|
|
||||||
addTo->Add(new Assignment(v, new MethodCall(data, m_unmarshallRpc, 1, k)));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
BooleanType::BooleanType()
|
BooleanType::BooleanType()
|
||||||
:Type("boolean", BUILT_IN, true, true, false)
|
:Type("boolean", BUILT_IN, true, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -439,24 +375,10 @@ BooleanType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* p
|
|||||||
addTo->Add(new MethodCall(parcel, "readBooleanArray", 1, v));
|
addTo->Add(new MethodCall(parcel, "readBooleanArray", 1, v));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
BooleanType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v,
|
|
||||||
Variable* data, int flags)
|
|
||||||
{
|
|
||||||
addTo->Add(new MethodCall(data, "putBoolean", 2, k, v));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
BooleanType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data,
|
|
||||||
Variable** cl)
|
|
||||||
{
|
|
||||||
addTo->Add(new Assignment(v, new MethodCall(data, "getBoolean", 1, k)));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
CharType::CharType()
|
CharType::CharType()
|
||||||
:Type("char", BUILT_IN, true, true, false)
|
:Type("char", BUILT_IN, true, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -498,24 +420,10 @@ CharType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parc
|
|||||||
addTo->Add(new MethodCall(parcel, "readCharArray", 1, v));
|
addTo->Add(new MethodCall(parcel, "readCharArray", 1, v));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
CharType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v,
|
|
||||||
Variable* data, int flags)
|
|
||||||
{
|
|
||||||
addTo->Add(new MethodCall(data, "putChar", 2, k, v));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
CharType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data,
|
|
||||||
Variable** cl)
|
|
||||||
{
|
|
||||||
addTo->Add(new Assignment(v, new MethodCall(data, "getChar", 1, k)));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
StringType::StringType()
|
StringType::StringType()
|
||||||
:Type("java.lang", "String", BUILT_IN, true, true, false)
|
:Type("java.lang", "String", BUILT_IN, true, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -562,24 +470,10 @@ StringType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* pa
|
|||||||
addTo->Add(new MethodCall(parcel, "readStringArray", 1, v));
|
addTo->Add(new MethodCall(parcel, "readStringArray", 1, v));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
StringType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v,
|
|
||||||
Variable* data, int flags)
|
|
||||||
{
|
|
||||||
addTo->Add(new MethodCall(data, "putString", 2, k, v));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
StringType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v,
|
|
||||||
Variable* data, Variable**)
|
|
||||||
{
|
|
||||||
addTo->Add(new Assignment(v, new MethodCall(data, "getString", 1, k)));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
CharSequenceType::CharSequenceType()
|
CharSequenceType::CharSequenceType()
|
||||||
:Type("java.lang", "CharSequence", BUILT_IN, true, true, false)
|
:Type("java.lang", "CharSequence", BUILT_IN, true, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -639,7 +533,7 @@ CharSequenceType::CreateFromParcel(StatementBlock* addTo, Variable* v,
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
RemoteExceptionType::RemoteExceptionType()
|
RemoteExceptionType::RemoteExceptionType()
|
||||||
:Type("android.os", "RemoteException", BUILT_IN, false, false, false)
|
:Type("android.os", "RemoteException", BUILT_IN, false, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -658,7 +552,7 @@ RemoteExceptionType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variab
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
RuntimeExceptionType::RuntimeExceptionType()
|
RuntimeExceptionType::RuntimeExceptionType()
|
||||||
:Type("java.lang", "RuntimeException", BUILT_IN, false, false, false)
|
:Type("java.lang", "RuntimeException", BUILT_IN, false, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -678,7 +572,7 @@ RuntimeExceptionType::CreateFromParcel(StatementBlock* addTo, Variable* v, Varia
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
IBinderType::IBinderType()
|
IBinderType::IBinderType()
|
||||||
:Type("android.os", "IBinder", BUILT_IN, true, false, false)
|
:Type("android.os", "IBinder", BUILT_IN, true, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -717,7 +611,7 @@ IBinderType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* p
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
IInterfaceType::IInterfaceType()
|
IInterfaceType::IInterfaceType()
|
||||||
:Type("android.os", "IInterface", BUILT_IN, false, false, false)
|
:Type("android.os", "IInterface", BUILT_IN, false, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -737,7 +631,7 @@ IInterfaceType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* p
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
BinderType::BinderType()
|
BinderType::BinderType()
|
||||||
:Type("android.os", "Binder", BUILT_IN, false, false, false)
|
:Type("android.os", "Binder", BUILT_IN, false, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -758,7 +652,7 @@ BinderType::CreateFromParcel(StatementBlock* addTo, Variable* v,
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
BinderProxyType::BinderProxyType()
|
BinderProxyType::BinderProxyType()
|
||||||
:Type("android.os", "BinderProxy", BUILT_IN, false, false, false)
|
:Type("android.os", "BinderProxy", BUILT_IN, false, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -779,7 +673,7 @@ BinderProxyType::CreateFromParcel(StatementBlock* addTo, Variable* v,
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
ParcelType::ParcelType()
|
ParcelType::ParcelType()
|
||||||
:Type("android.os", "Parcel", BUILT_IN, false, false, false)
|
:Type("android.os", "Parcel", BUILT_IN, false, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -798,7 +692,7 @@ ParcelType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parce
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
ParcelableInterfaceType::ParcelableInterfaceType()
|
ParcelableInterfaceType::ParcelableInterfaceType()
|
||||||
:Type("android.os", "Parcelable", BUILT_IN, false, false, false)
|
:Type("android.os", "Parcelable", BUILT_IN, false, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -817,7 +711,7 @@ ParcelableInterfaceType::CreateFromParcel(StatementBlock* addTo, Variable* v, Va
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
MapType::MapType()
|
MapType::MapType()
|
||||||
:Type("java.util", "Map", BUILT_IN, true, false, true)
|
:Type("java.util", "Map", BUILT_IN, true, true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -857,7 +751,7 @@ MapType::ReadFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Va
|
|||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
ListType::ListType()
|
ListType::ListType()
|
||||||
:Type("java.util", "List", BUILT_IN, true, true, true)
|
:Type("java.util", "List", BUILT_IN, true, true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -888,26 +782,12 @@ ListType::ReadFromParcel(StatementBlock* addTo, Variable* v,
|
|||||||
addTo->Add(new MethodCall(parcel, "readList", 2, v, *cl));
|
addTo->Add(new MethodCall(parcel, "readList", 2, v, *cl));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
ListType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v,
|
|
||||||
Variable* data, int flags)
|
|
||||||
{
|
|
||||||
addTo->Add(new MethodCall(data, "putList", 2, k, v));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
ListType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data,
|
|
||||||
Variable** cl)
|
|
||||||
{
|
|
||||||
addTo->Add(new Assignment(v, new MethodCall(data, "getList", 1, k)));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
UserDataType::UserDataType(const string& package, const string& name,
|
UserDataType::UserDataType(const string& package, const string& name,
|
||||||
bool builtIn, bool canWriteToParcel, bool canWriteToRpcData,
|
bool builtIn, bool canWriteToParcel,
|
||||||
const string& declFile, int declLine)
|
const string& declFile, int declLine)
|
||||||
:Type(package, name, builtIn ? BUILT_IN : USERDATA, canWriteToParcel, canWriteToRpcData,
|
:Type(package, name, builtIn ? BUILT_IN : USERDATA, canWriteToParcel,
|
||||||
true, declFile, declLine)
|
true, declFile, declLine)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -918,12 +798,6 @@ UserDataType::CreatorName() const
|
|||||||
return QualifiedName() + ".CREATOR";
|
return QualifiedName() + ".CREATOR";
|
||||||
}
|
}
|
||||||
|
|
||||||
string
|
|
||||||
UserDataType::RpcCreatorName() const
|
|
||||||
{
|
|
||||||
return QualifiedName() + ".RPC_CREATOR";
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
UserDataType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags)
|
UserDataType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags)
|
||||||
{
|
{
|
||||||
@@ -1014,29 +888,12 @@ UserDataType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable*
|
|||||||
v, new LiteralExpression(creator)));
|
v, new LiteralExpression(creator)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
UserDataType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v,
|
|
||||||
Variable* data, int flags)
|
|
||||||
{
|
|
||||||
// data.putFlattenable(k, v);
|
|
||||||
addTo->Add(new MethodCall(data, "putFlattenable", 2, k, v));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
UserDataType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v,
|
|
||||||
Variable* data, Variable** cl)
|
|
||||||
{
|
|
||||||
// data.getFlattenable(k, CLASS.RPC_CREATOR);
|
|
||||||
addTo->Add(new Assignment(v, new MethodCall(data, "getFlattenable", 2, k,
|
|
||||||
new FieldVariable(v->type, "RPC_CREATOR"))));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ================================================================
|
// ================================================================
|
||||||
|
|
||||||
InterfaceType::InterfaceType(const string& package, const string& name,
|
InterfaceType::InterfaceType(const string& package, const string& name,
|
||||||
bool builtIn, bool oneway,
|
bool builtIn, bool oneway,
|
||||||
const string& declFile, int declLine)
|
const string& declFile, int declLine)
|
||||||
:Type(package, name, builtIn ? BUILT_IN : INTERFACE, true, false, false,
|
:Type(package, name, builtIn ? BUILT_IN : INTERFACE, true, false,
|
||||||
declFile, declLine)
|
declFile, declLine)
|
||||||
,m_oneway(oneway)
|
,m_oneway(oneway)
|
||||||
{
|
{
|
||||||
@@ -1075,7 +932,7 @@ InterfaceType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* pa
|
|||||||
|
|
||||||
GenericType::GenericType(const string& package, const string& name,
|
GenericType::GenericType(const string& package, const string& name,
|
||||||
const vector<Type*>& args)
|
const vector<Type*>& args)
|
||||||
:Type(package, name, BUILT_IN, true, true, true)
|
:Type(package, name, BUILT_IN, true, true)
|
||||||
{
|
{
|
||||||
m_args = args;
|
m_args = args;
|
||||||
|
|
||||||
@@ -1200,65 +1057,11 @@ GenericListType::ReadFromParcel(StatementBlock* addTo, Variable* v,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
GenericListType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v,
|
|
||||||
Variable* data, int flags)
|
|
||||||
{
|
|
||||||
Type* generic = GenericArgumentTypes()[0];
|
|
||||||
if (generic == RPC_DATA_TYPE) {
|
|
||||||
addTo->Add(new MethodCall(data, "putRpcDataList", 2, k, v));
|
|
||||||
} else if (generic->RpcCreatorName() != "") {
|
|
||||||
addTo->Add(new MethodCall(data, "putFlattenableList", 2, k, v));
|
|
||||||
} else {
|
|
||||||
addTo->Add(new MethodCall(data, "putList", 2, k, v));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
GenericListType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v,
|
|
||||||
Variable* data, Variable** cl)
|
|
||||||
{
|
|
||||||
Type* generic = GenericArgumentTypes()[0];
|
|
||||||
if (generic == RPC_DATA_TYPE) {
|
|
||||||
addTo->Add(new Assignment(v, new MethodCall(data, "getRpcDataList", 2, k)));
|
|
||||||
} else if (generic->RpcCreatorName() != "") {
|
|
||||||
addTo->Add(new Assignment(v, new MethodCall(data, "getFlattenableList", 2, k,
|
|
||||||
new LiteralExpression(generic->RpcCreatorName()))));
|
|
||||||
} else {
|
|
||||||
string classArg = GenericArgumentTypes()[0]->QualifiedName();
|
|
||||||
classArg += ".class";
|
|
||||||
addTo->Add(new Assignment(v, new MethodCall(data, "getList", 2, k,
|
|
||||||
new LiteralExpression(classArg))));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ================================================================
|
|
||||||
|
|
||||||
RpcDataType::RpcDataType()
|
|
||||||
:UserDataType("android.support.place.rpc", "RpcData", true, true, true)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
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()
|
ClassLoaderType::ClassLoaderType()
|
||||||
:Type("java.lang", "ClassLoader", BUILT_IN, false, false, false)
|
:Type("java.lang", "ClassLoader", BUILT_IN, false, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,9 +25,9 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
Type(const string& name, int kind, bool canWriteToParcel,
|
Type(const string& name, int kind, bool canWriteToParcel,
|
||||||
bool canWriteToRpcData, bool canBeOut);
|
bool canBeOut);
|
||||||
Type(const string& package, const string& name,
|
Type(const string& package, const string& name,
|
||||||
int kind, bool canWriteToParcel, bool canWriteToRpcData, bool canBeOut,
|
int kind, bool canWriteToParcel, bool canBeOut,
|
||||||
const string& declFile = "", int declLine = -1);
|
const string& declFile = "", int declLine = -1);
|
||||||
virtual ~Type();
|
virtual ~Type();
|
||||||
|
|
||||||
@@ -38,12 +38,10 @@ public:
|
|||||||
inline string DeclFile() const { return m_declFile; }
|
inline string DeclFile() const { return m_declFile; }
|
||||||
inline int DeclLine() const { return m_declLine; }
|
inline int DeclLine() const { return m_declLine; }
|
||||||
inline bool CanWriteToParcel() const { return m_canWriteToParcel; }
|
inline bool CanWriteToParcel() const { return m_canWriteToParcel; }
|
||||||
inline bool CanWriteToRpcData() const { return m_canWriteToRpcData; }
|
|
||||||
inline bool CanBeOutParameter() const { return m_canBeOut; }
|
inline bool CanBeOutParameter() const { return m_canBeOut; }
|
||||||
|
|
||||||
virtual string ImportType() const;
|
virtual string ImportType() const;
|
||||||
virtual string CreatorName() const;
|
virtual string CreatorName() const;
|
||||||
virtual string RpcCreatorName() const;
|
|
||||||
virtual string InstantiableName() const;
|
virtual string InstantiableName() const;
|
||||||
|
|
||||||
virtual void WriteToParcel(StatementBlock* addTo, Variable* v,
|
virtual void WriteToParcel(StatementBlock* addTo, Variable* v,
|
||||||
@@ -62,11 +60,6 @@ public:
|
|||||||
virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v,
|
virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v,
|
||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void SetQualifiedName(const string& qualified);
|
void SetQualifiedName(const string& qualified);
|
||||||
Expression* BuildWriteToParcelFlags(int flags);
|
Expression* BuildWriteToParcelFlags(int flags);
|
||||||
@@ -82,7 +75,6 @@ private:
|
|||||||
int m_declLine;
|
int m_declLine;
|
||||||
int m_kind;
|
int m_kind;
|
||||||
bool m_canWriteToParcel;
|
bool m_canWriteToParcel;
|
||||||
bool m_canWriteToRpcData;
|
|
||||||
bool m_canBeOut;
|
bool m_canBeOut;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -94,12 +86,7 @@ public:
|
|||||||
const string& unmarshallParcel,
|
const string& unmarshallParcel,
|
||||||
const string& writeArrayParcel,
|
const string& writeArrayParcel,
|
||||||
const string& createArrayParcel,
|
const string& createArrayParcel,
|
||||||
const string& readArrayParcel,
|
const string& readArrayParcel);
|
||||||
const string& marshallRpc,
|
|
||||||
const string& unmarshallRpc,
|
|
||||||
const string& writeArrayRpc,
|
|
||||||
const string& createArrayRpc,
|
|
||||||
const string& readArrayRpc);
|
|
||||||
|
|
||||||
virtual void WriteToParcel(StatementBlock* addTo, Variable* v,
|
virtual void WriteToParcel(StatementBlock* addTo, Variable* v,
|
||||||
Variable* parcel, int flags);
|
Variable* parcel, int flags);
|
||||||
@@ -115,22 +102,12 @@ public:
|
|||||||
virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v,
|
virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v,
|
||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
string m_marshallParcel;
|
string m_marshallParcel;
|
||||||
string m_unmarshallParcel;
|
string m_unmarshallParcel;
|
||||||
string m_writeArrayParcel;
|
string m_writeArrayParcel;
|
||||||
string m_createArrayParcel;
|
string m_createArrayParcel;
|
||||||
string m_readArrayParcel;
|
string m_readArrayParcel;
|
||||||
string m_marshallRpc;
|
|
||||||
string m_unmarshallRpc;
|
|
||||||
string m_writeArrayRpc;
|
|
||||||
string m_createArrayRpc;
|
|
||||||
string m_readArrayRpc;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class BooleanType : public Type
|
class BooleanType : public Type
|
||||||
@@ -151,11 +128,6 @@ public:
|
|||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v,
|
virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v,
|
||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
|
|
||||||
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 CharType : public Type
|
class CharType : public Type
|
||||||
@@ -176,11 +148,6 @@ public:
|
|||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v,
|
virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v,
|
||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
|
|
||||||
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);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -204,11 +171,6 @@ public:
|
|||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v,
|
virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v,
|
||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
|
|
||||||
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 CharSequenceType : public Type
|
class CharSequenceType : public Type
|
||||||
@@ -345,22 +307,16 @@ public:
|
|||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
virtual void ReadFromParcel(StatementBlock* addTo, Variable* v,
|
virtual void ReadFromParcel(StatementBlock* addTo, Variable* v,
|
||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
|
|
||||||
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 UserDataType : public Type
|
class UserDataType : public Type
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
UserDataType(const string& package, const string& name,
|
UserDataType(const string& package, const string& name,
|
||||||
bool builtIn, bool canWriteToParcel, bool canWriteToRpcData,
|
bool builtIn, bool canWriteToParcel,
|
||||||
const string& declFile = "", int declLine = -1);
|
const string& declFile = "", int declLine = -1);
|
||||||
|
|
||||||
virtual string CreatorName() const;
|
virtual string CreatorName() const;
|
||||||
virtual string RpcCreatorName() const;
|
|
||||||
|
|
||||||
virtual void WriteToParcel(StatementBlock* addTo, Variable* v,
|
virtual void WriteToParcel(StatementBlock* addTo, Variable* v,
|
||||||
Variable* parcel, int flags);
|
Variable* parcel, int flags);
|
||||||
@@ -377,11 +333,6 @@ public:
|
|||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v,
|
virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v,
|
||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
|
|
||||||
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 InterfaceType : public Type
|
class InterfaceType : public Type
|
||||||
@@ -427,17 +378,6 @@ private:
|
|||||||
vector<Type*> m_args;
|
vector<Type*> m_args;
|
||||||
};
|
};
|
||||||
|
|
||||||
class RpcDataType : public UserDataType
|
|
||||||
{
|
|
||||||
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
|
class ClassLoaderType : public Type
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -460,11 +400,6 @@ public:
|
|||||||
virtual void ReadFromParcel(StatementBlock* addTo, Variable* v,
|
virtual void ReadFromParcel(StatementBlock* addTo, Variable* v,
|
||||||
Variable* parcel, Variable** cl);
|
Variable* parcel, Variable** cl);
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
string m_creator;
|
string m_creator;
|
||||||
};
|
};
|
||||||
@@ -527,11 +462,6 @@ extern Type* PARCELABLE_INTERFACE_TYPE;
|
|||||||
|
|
||||||
extern Type* CONTEXT_TYPE;
|
extern Type* CONTEXT_TYPE;
|
||||||
|
|
||||||
extern Type* RPC_DATA_TYPE;
|
|
||||||
extern Type* RPC_ERROR_TYPE;
|
|
||||||
extern Type* RPC_CONTEXT_TYPE;
|
|
||||||
extern Type* EVENT_FAKE_TYPE;
|
|
||||||
|
|
||||||
extern Expression* NULL_VALUE;
|
extern Expression* NULL_VALUE;
|
||||||
extern Expression* THIS_VALUE;
|
extern Expression* THIS_VALUE;
|
||||||
extern Expression* SUPER_VALUE;
|
extern Expression* SUPER_VALUE;
|
||||||
|
|||||||
@@ -63,12 +63,9 @@ test_document(document_item_type* d)
|
|||||||
}
|
}
|
||||||
else if (d->item_type == USER_DATA_TYPE) {
|
else if (d->item_type == USER_DATA_TYPE) {
|
||||||
user_data_type* b = (user_data_type*)d;
|
user_data_type* b = (user_data_type*)d;
|
||||||
if ((b->flattening_methods & PARCELABLE_DATA) != 0) {
|
if (b->parcelable) {
|
||||||
printf("parcelable %s %s;\n", b->package, b->name.data);
|
printf("parcelable %s %s;\n", b->package, b->name.data);
|
||||||
}
|
}
|
||||||
if ((b->flattening_methods & RPC_DATA) != 0) {
|
|
||||||
printf("flattenable %s %s;\n", b->package, b->name.data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
printf("UNKNOWN d=0x%08lx d->item_type=%d\n", (long)d, d->item_type);
|
printf("UNKNOWN d=0x%08lx d->item_type=%d\n", (long)d, d->item_type);
|
||||||
@@ -254,8 +251,7 @@ check_filenames(const char* filename, document_item_type* items)
|
|||||||
user_data_type* p = (user_data_type*)items;
|
user_data_type* p = (user_data_type*)items;
|
||||||
err |= check_filename(filename, p->package, &p->name);
|
err |= check_filename(filename, p->package, &p->name);
|
||||||
}
|
}
|
||||||
else if (items->item_type == INTERFACE_TYPE_BINDER
|
else if (items->item_type == INTERFACE_TYPE_BINDER) {
|
||||||
|| items->item_type == INTERFACE_TYPE_RPC) {
|
|
||||||
interface_type* c = (interface_type*)items;
|
interface_type* c = (interface_type*)items;
|
||||||
err |= check_filename(filename, c->package, &c->name);
|
err |= check_filename(filename, c->package, &c->name);
|
||||||
}
|
}
|
||||||
@@ -306,11 +302,9 @@ gather_types(const char* filename, document_item_type* items)
|
|||||||
if (items->item_type == USER_DATA_TYPE) {
|
if (items->item_type == USER_DATA_TYPE) {
|
||||||
user_data_type* p = (user_data_type*)items;
|
user_data_type* p = (user_data_type*)items;
|
||||||
type = new UserDataType(p->package ? p->package : "", p->name.data,
|
type = new UserDataType(p->package ? p->package : "", p->name.data,
|
||||||
false, ((p->flattening_methods & PARCELABLE_DATA) != 0),
|
false, p->parcelable, filename, p->name.lineno);
|
||||||
((p->flattening_methods & RPC_DATA) != 0), filename, p->name.lineno);
|
|
||||||
}
|
}
|
||||||
else if (items->item_type == INTERFACE_TYPE_BINDER
|
else if (items->item_type == INTERFACE_TYPE_BINDER) {
|
||||||
|| items->item_type == INTERFACE_TYPE_RPC) {
|
|
||||||
interface_type* c = (interface_type*)items;
|
interface_type* c = (interface_type*)items;
|
||||||
type = new InterfaceType(c->package ? c->package : "",
|
type = new InterfaceType(c->package ? c->package : "",
|
||||||
c->name.data, false, c->oneway,
|
c->name.data, false, c->oneway,
|
||||||
@@ -334,30 +328,17 @@ gather_types(const char* filename, document_item_type* items)
|
|||||||
string name = c->name.data;
|
string name = c->name.data;
|
||||||
name += ".Stub";
|
name += ".Stub";
|
||||||
Type* stub = new Type(c->package ? c->package : "",
|
Type* stub = new Type(c->package ? c->package : "",
|
||||||
name, Type::GENERATED, false, false, false,
|
name, Type::GENERATED, false, false,
|
||||||
filename, c->name.lineno);
|
filename, c->name.lineno);
|
||||||
NAMES.Add(stub);
|
NAMES.Add(stub);
|
||||||
|
|
||||||
name = c->name.data;
|
name = c->name.data;
|
||||||
name += ".Stub.Proxy";
|
name += ".Stub.Proxy";
|
||||||
Type* proxy = new Type(c->package ? c->package : "",
|
Type* proxy = new Type(c->package ? c->package : "",
|
||||||
name, Type::GENERATED, false, false, false,
|
name, Type::GENERATED, false, false,
|
||||||
filename, c->name.lineno);
|
filename, c->name.lineno);
|
||||||
NAMES.Add(proxy);
|
NAMES.Add(proxy);
|
||||||
}
|
}
|
||||||
else if (items->item_type == INTERFACE_TYPE_RPC) {
|
|
||||||
// for interfaces, also add the service base type, we don't
|
|
||||||
// bother checking these for duplicates, because the parser
|
|
||||||
// won't let us do it.
|
|
||||||
interface_type* c = (interface_type*)items;
|
|
||||||
|
|
||||||
string name = c->name.data;
|
|
||||||
name += ".ServiceBase";
|
|
||||||
Type* base = new Type(c->package ? c->package : "",
|
|
||||||
name, Type::GENERATED, false, false, false,
|
|
||||||
filename, c->name.lineno);
|
|
||||||
NAMES.Add(base);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (old->Kind() == Type::BUILT_IN) {
|
if (old->Kind() == Type::BUILT_IN) {
|
||||||
fprintf(stderr, "%s:%d attempt to redefine built in class %s\n",
|
fprintf(stderr, "%s:%d attempt to redefine built in class %s\n",
|
||||||
@@ -409,7 +390,7 @@ matches_keyword(const char* str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
check_method(const char* filename, int kind, method_type* m)
|
check_method(const char* filename, method_type* m)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
@@ -422,20 +403,11 @@ check_method(const char* filename, int kind, method_type* m)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (returnType == EVENT_FAKE_TYPE) {
|
if (!returnType->CanWriteToParcel()) {
|
||||||
if (kind != INTERFACE_TYPE_RPC) {
|
|
||||||
fprintf(stderr, "%s:%d event methods only supported for rpc interfaces\n",
|
|
||||||
filename, m->type.type.lineno);
|
|
||||||
err = 1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!(kind == INTERFACE_TYPE_BINDER ? returnType->CanWriteToParcel()
|
|
||||||
: returnType->CanWriteToRpcData())) {
|
|
||||||
fprintf(stderr, "%s:%d return type %s can't be marshalled.\n", filename,
|
fprintf(stderr, "%s:%d return type %s can't be marshalled.\n", filename,
|
||||||
m->type.type.lineno, m->type.type.data);
|
m->type.type.lineno, m->type.type.data);
|
||||||
err = 1;
|
err = 1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (m->type.dimension > 0 && !returnType->CanBeArray()) {
|
if (m->type.dimension > 0 && !returnType->CanBeArray()) {
|
||||||
fprintf(stderr, "%s:%d return type %s%s can't be an array.\n", filename,
|
fprintf(stderr, "%s:%d return type %s%s can't be an array.\n", filename,
|
||||||
@@ -467,30 +439,13 @@ check_method(const char* filename, int kind, method_type* m)
|
|||||||
goto next;
|
goto next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (t == EVENT_FAKE_TYPE) {
|
if (!t->CanWriteToParcel()) {
|
||||||
fprintf(stderr, "%s:%d parameter %s (%d) event can not be used as a parameter %s\n",
|
|
||||||
filename, m->type.type.lineno, arg->name.data, index,
|
|
||||||
arg->type.type.data);
|
|
||||||
err = 1;
|
|
||||||
goto next;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(kind == INTERFACE_TYPE_BINDER ? t->CanWriteToParcel() : t->CanWriteToRpcData())) {
|
|
||||||
fprintf(stderr, "%s:%d parameter %d: '%s %s' can't be marshalled.\n",
|
fprintf(stderr, "%s:%d parameter %d: '%s %s' can't be marshalled.\n",
|
||||||
filename, m->type.type.lineno, index,
|
filename, m->type.type.lineno, index,
|
||||||
arg->type.type.data, arg->name.data);
|
arg->type.type.data, arg->name.data);
|
||||||
err = 1;
|
err = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (returnType == EVENT_FAKE_TYPE
|
|
||||||
&& convert_direction(arg->direction.data) != IN_PARAMETER) {
|
|
||||||
fprintf(stderr, "%s:%d parameter %d: '%s %s' All paremeters on events must be 'in'.\n",
|
|
||||||
filename, m->type.type.lineno, index,
|
|
||||||
arg->type.type.data, arg->name.data);
|
|
||||||
err = 1;
|
|
||||||
goto next;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (arg->direction.data == NULL
|
if (arg->direction.data == NULL
|
||||||
&& (arg->type.dimension != 0 || t->CanBeOutParameter())) {
|
&& (arg->type.dimension != 0 || t->CanBeOutParameter())) {
|
||||||
fprintf(stderr, "%s:%d parameter %d: '%s %s' can be an out"
|
fprintf(stderr, "%s:%d parameter %d: '%s %s' can be an out"
|
||||||
@@ -552,8 +507,7 @@ check_types(const char* filename, document_item_type* items)
|
|||||||
int err = 0;
|
int err = 0;
|
||||||
while (items) {
|
while (items) {
|
||||||
// (nothing to check for USER_DATA_TYPE)
|
// (nothing to check for USER_DATA_TYPE)
|
||||||
if (items->item_type == INTERFACE_TYPE_BINDER
|
if (items->item_type == INTERFACE_TYPE_BINDER) {
|
||||||
|| items->item_type == INTERFACE_TYPE_RPC) {
|
|
||||||
map<string,method_type*> methodNames;
|
map<string,method_type*> methodNames;
|
||||||
interface_type* c = (interface_type*)items;
|
interface_type* c = (interface_type*)items;
|
||||||
|
|
||||||
@@ -562,7 +516,7 @@ check_types(const char* filename, document_item_type* items)
|
|||||||
if (member->item_type == METHOD_TYPE) {
|
if (member->item_type == METHOD_TYPE) {
|
||||||
method_type* m = (method_type*)member;
|
method_type* m = (method_type*)member;
|
||||||
|
|
||||||
err |= check_method(filename, items->item_type, m);
|
err |= check_method(filename, m);
|
||||||
|
|
||||||
// prevent duplicate methods
|
// prevent duplicate methods
|
||||||
if (methodNames.find(m->name.data) == methodNames.end()) {
|
if (methodNames.find(m->name.data) == methodNames.end()) {
|
||||||
@@ -603,9 +557,6 @@ exactly_one_interface(const char* filename, const document_item_type* items, con
|
|||||||
if (next->item_type == INTERFACE_TYPE_BINDER) {
|
if (next->item_type == INTERFACE_TYPE_BINDER) {
|
||||||
lineno = ((interface_type*)next)->interface_token.lineno;
|
lineno = ((interface_type*)next)->interface_token.lineno;
|
||||||
}
|
}
|
||||||
else if (next->item_type == INTERFACE_TYPE_RPC) {
|
|
||||||
lineno = ((interface_type*)next)->interface_token.lineno;
|
|
||||||
}
|
|
||||||
fprintf(stderr, "%s:%d aidl can only handle one interface per file\n",
|
fprintf(stderr, "%s:%d aidl can only handle one interface per file\n",
|
||||||
filename, lineno);
|
filename, lineno);
|
||||||
return 1;
|
return 1;
|
||||||
@@ -615,9 +566,9 @@ exactly_one_interface(const char* filename, const document_item_type* items, con
|
|||||||
*onlyParcelable = true;
|
*onlyParcelable = true;
|
||||||
if (options.failOnParcelable) {
|
if (options.failOnParcelable) {
|
||||||
fprintf(stderr, "%s:%d aidl can only generate code for interfaces, not"
|
fprintf(stderr, "%s:%d aidl can only generate code for interfaces, not"
|
||||||
" parcelables or flattenables,\n", filename,
|
" parcelables,\n", filename,
|
||||||
((user_data_type*)items)->keyword_token.lineno);
|
((user_data_type*)items)->keyword_token.lineno);
|
||||||
fprintf(stderr, "%s:%d .aidl files that only declare parcelables or flattenables"
|
fprintf(stderr, "%s:%d .aidl files that only declare parcelables"
|
||||||
"may not go in the Makefile.\n", filename,
|
"may not go in the Makefile.\n", filename,
|
||||||
((user_data_type*)items)->keyword_token.lineno);
|
((user_data_type*)items)->keyword_token.lineno);
|
||||||
return 1;
|
return 1;
|
||||||
@@ -654,7 +605,7 @@ generate_dep_file(const Options& options, const document_item_type* items)
|
|||||||
slash = "";
|
slash = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (items->item_type == INTERFACE_TYPE_BINDER || items->item_type == INTERFACE_TYPE_RPC) {
|
if (items->item_type == INTERFACE_TYPE_BINDER) {
|
||||||
fprintf(to, "%s: \\\n", options.outputFileName.c_str());
|
fprintf(to, "%s: \\\n", options.outputFileName.c_str());
|
||||||
} else {
|
} else {
|
||||||
// parcelable: there's no output file.
|
// parcelable: there's no output file.
|
||||||
@@ -728,7 +679,7 @@ static string
|
|||||||
generate_outputFileName(const Options& options, const document_item_type* items)
|
generate_outputFileName(const Options& options, const document_item_type* items)
|
||||||
{
|
{
|
||||||
// items has already been checked to have only one interface.
|
// items has already been checked to have only one interface.
|
||||||
if (items->item_type == INTERFACE_TYPE_BINDER || items->item_type == INTERFACE_TYPE_RPC) {
|
if (items->item_type == INTERFACE_TYPE_BINDER) {
|
||||||
interface_type* type = (interface_type*)items;
|
interface_type* type = (interface_type*)items;
|
||||||
|
|
||||||
return generate_outputFileName2(options, type->name, type->package);
|
return generate_outputFileName2(options, type->name, type->package);
|
||||||
@@ -815,22 +766,7 @@ parse_preprocessed_file(const string& filename)
|
|||||||
parcl->name.data = strdup(classname);
|
parcl->name.data = strdup(classname);
|
||||||
parcl->semicolon_token.lineno = lineno;
|
parcl->semicolon_token.lineno = lineno;
|
||||||
parcl->semicolon_token.data = strdup(";");
|
parcl->semicolon_token.data = strdup(";");
|
||||||
parcl->flattening_methods = PARCELABLE_DATA;
|
parcl->parcelable = true;
|
||||||
doc = (document_item_type*)parcl;
|
|
||||||
}
|
|
||||||
else if (0 == strcmp("flattenable", type)) {
|
|
||||||
user_data_type* parcl = (user_data_type*)malloc(
|
|
||||||
sizeof(user_data_type));
|
|
||||||
memset(parcl, 0, sizeof(user_data_type));
|
|
||||||
parcl->document_item.item_type = USER_DATA_TYPE;
|
|
||||||
parcl->keyword_token.lineno = lineno;
|
|
||||||
parcl->keyword_token.data = strdup(type);
|
|
||||||
parcl->package = packagename ? strdup(packagename) : NULL;
|
|
||||||
parcl->name.lineno = lineno;
|
|
||||||
parcl->name.data = strdup(classname);
|
|
||||||
parcl->semicolon_token.lineno = lineno;
|
|
||||||
parcl->semicolon_token.data = strdup(";");
|
|
||||||
parcl->flattening_methods = RPC_DATA;
|
|
||||||
doc = (document_item_type*)parcl;
|
doc = (document_item_type*)parcl;
|
||||||
}
|
}
|
||||||
else if (0 == strcmp("interface", type)) {
|
else if (0 == strcmp("interface", type)) {
|
||||||
@@ -1084,12 +1020,9 @@ preprocess_aidl(const Options& options)
|
|||||||
string line;
|
string line;
|
||||||
if (doc->item_type == USER_DATA_TYPE) {
|
if (doc->item_type == USER_DATA_TYPE) {
|
||||||
user_data_type* parcelable = (user_data_type*)doc;
|
user_data_type* parcelable = (user_data_type*)doc;
|
||||||
if ((parcelable->flattening_methods & PARCELABLE_DATA) != 0) {
|
if (parcelable->parcelable) {
|
||||||
line = "parcelable ";
|
line = "parcelable ";
|
||||||
}
|
}
|
||||||
if ((parcelable->flattening_methods & RPC_DATA) != 0) {
|
|
||||||
line = "flattenable ";
|
|
||||||
}
|
|
||||||
if (parcelable->package) {
|
if (parcelable->package) {
|
||||||
line += parcelable->package;
|
line += parcelable->package;
|
||||||
line += '.';
|
line += '.';
|
||||||
|
|||||||
@@ -68,8 +68,7 @@ typedef struct method_type {
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
USER_DATA_TYPE = 12,
|
USER_DATA_TYPE = 12,
|
||||||
INTERFACE_TYPE_BINDER,
|
INTERFACE_TYPE_BINDER
|
||||||
INTERFACE_TYPE_RPC
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct document_item_type {
|
typedef struct document_item_type {
|
||||||
@@ -78,19 +77,13 @@ typedef struct document_item_type {
|
|||||||
} document_item_type;
|
} document_item_type;
|
||||||
|
|
||||||
|
|
||||||
// for user_data_type.flattening_methods
|
|
||||||
enum {
|
|
||||||
PARCELABLE_DATA = 0x1,
|
|
||||||
RPC_DATA = 0x2
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct user_data_type {
|
typedef struct user_data_type {
|
||||||
document_item_type document_item;
|
document_item_type document_item;
|
||||||
buffer_type keyword_token; // only the first one
|
buffer_type keyword_token; // only the first one
|
||||||
char* package;
|
char* package;
|
||||||
buffer_type name;
|
buffer_type name;
|
||||||
buffer_type semicolon_token;
|
buffer_type semicolon_token;
|
||||||
int flattening_methods;
|
bool parcelable;
|
||||||
} user_data_type;
|
} user_data_type;
|
||||||
|
|
||||||
typedef struct interface_type {
|
typedef struct interface_type {
|
||||||
|
|||||||
@@ -83,8 +83,6 @@ idvalue (0|[1-9][0-9]*)
|
|||||||
/* keywords */
|
/* keywords */
|
||||||
parcelable { SET_BUFFER(PARCELABLE); return PARCELABLE; }
|
parcelable { SET_BUFFER(PARCELABLE); return PARCELABLE; }
|
||||||
interface { SET_BUFFER(INTERFACE); return INTERFACE; }
|
interface { SET_BUFFER(INTERFACE); return INTERFACE; }
|
||||||
flattenable { SET_BUFFER(FLATTENABLE); return FLATTENABLE; }
|
|
||||||
rpc { SET_BUFFER(INTERFACE); return RPC; }
|
|
||||||
in { SET_BUFFER(IN); return IN; }
|
in { SET_BUFFER(IN); return IN; }
|
||||||
out { SET_BUFFER(OUT); return OUT; }
|
out { SET_BUFFER(OUT); return OUT; }
|
||||||
inout { SET_BUFFER(INOUT); return INOUT; }
|
inout { SET_BUFFER(INOUT); return INOUT; }
|
||||||
|
|||||||
@@ -20,8 +20,6 @@ static int count_brackets(const char*);
|
|||||||
%token ARRAY
|
%token ARRAY
|
||||||
%token PARCELABLE
|
%token PARCELABLE
|
||||||
%token INTERFACE
|
%token INTERFACE
|
||||||
%token FLATTENABLE
|
|
||||||
%token RPC
|
|
||||||
%token IN
|
%token IN
|
||||||
%token OUT
|
%token OUT
|
||||||
%token INOUT
|
%token INOUT
|
||||||
@@ -88,7 +86,7 @@ parcelable_decl:
|
|||||||
b->name = $2.buffer;
|
b->name = $2.buffer;
|
||||||
b->package = g_currentPackage ? strdup(g_currentPackage) : NULL;
|
b->package = g_currentPackage ? strdup(g_currentPackage) : NULL;
|
||||||
b->semicolon_token = $3.buffer;
|
b->semicolon_token = $3.buffer;
|
||||||
b->flattening_methods = PARCELABLE_DATA;
|
b->parcelable = true;
|
||||||
$$.user_data = b;
|
$$.user_data = b;
|
||||||
}
|
}
|
||||||
| PARCELABLE ';' {
|
| PARCELABLE ';' {
|
||||||
@@ -101,28 +99,6 @@ parcelable_decl:
|
|||||||
g_currentFilename, $2.buffer.lineno, $2.buffer.data);
|
g_currentFilename, $2.buffer.lineno, $2.buffer.data);
|
||||||
$$.user_data = NULL;
|
$$.user_data = NULL;
|
||||||
}
|
}
|
||||||
| FLATTENABLE IDENTIFIER ';' {
|
|
||||||
user_data_type* b = (user_data_type*)malloc(sizeof(user_data_type));
|
|
||||||
b->document_item.item_type = USER_DATA_TYPE;
|
|
||||||
b->document_item.next = NULL;
|
|
||||||
b->keyword_token = $1.buffer;
|
|
||||||
b->name = $2.buffer;
|
|
||||||
b->package = g_currentPackage ? strdup(g_currentPackage) : NULL;
|
|
||||||
b->semicolon_token = $3.buffer;
|
|
||||||
b->flattening_methods = PARCELABLE_DATA | RPC_DATA;
|
|
||||||
$$.user_data = b;
|
|
||||||
}
|
|
||||||
| FLATTENABLE ';' {
|
|
||||||
fprintf(stderr, "%s:%d syntax error in flattenable declaration. Expected type name.\n",
|
|
||||||
g_currentFilename, $1.buffer.lineno);
|
|
||||||
$$.user_data = NULL;
|
|
||||||
}
|
|
||||||
| FLATTENABLE error ';' {
|
|
||||||
fprintf(stderr, "%s:%d syntax error in flattenable declaration. Expected type name, saw \"%s\".\n",
|
|
||||||
g_currentFilename, $2.buffer.lineno, $2.buffer.data);
|
|
||||||
$$.user_data = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
interface_header:
|
interface_header:
|
||||||
@@ -146,21 +122,6 @@ interface_header:
|
|||||||
c->comments_token = &c->oneway_token;
|
c->comments_token = &c->oneway_token;
|
||||||
$$.interface_obj = c;
|
$$.interface_obj = c;
|
||||||
}
|
}
|
||||||
| RPC {
|
|
||||||
interface_type* c = (interface_type*)malloc(sizeof(interface_type));
|
|
||||||
c->document_item.item_type = INTERFACE_TYPE_RPC;
|
|
||||||
c->document_item.next = NULL;
|
|
||||||
c->interface_token = $1.buffer;
|
|
||||||
c->oneway = false;
|
|
||||||
memset(&c->oneway_token, 0, sizeof(buffer_type));
|
|
||||||
c->comments_token = &c->interface_token;
|
|
||||||
$$.interface_obj = c;
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
interface_keywords:
|
|
||||||
INTERFACE
|
|
||||||
| RPC
|
|
||||||
;
|
;
|
||||||
|
|
||||||
interface_decl:
|
interface_decl:
|
||||||
@@ -173,12 +134,12 @@ interface_decl:
|
|||||||
c->close_brace_token = $5.buffer;
|
c->close_brace_token = $5.buffer;
|
||||||
$$.interface_obj = c;
|
$$.interface_obj = c;
|
||||||
}
|
}
|
||||||
| interface_keywords error '{' interface_items '}' {
|
| INTERFACE error '{' interface_items '}' {
|
||||||
fprintf(stderr, "%s:%d: syntax error in interface declaration. Expected type name, saw \"%s\"\n",
|
fprintf(stderr, "%s:%d: syntax error in interface declaration. Expected type name, saw \"%s\"\n",
|
||||||
g_currentFilename, $2.buffer.lineno, $2.buffer.data);
|
g_currentFilename, $2.buffer.lineno, $2.buffer.data);
|
||||||
$$.document_item = NULL;
|
$$.document_item = NULL;
|
||||||
}
|
}
|
||||||
| interface_keywords error '}' {
|
| INTERFACE error '}' {
|
||||||
fprintf(stderr, "%s:%d: syntax error in interface declaration. Expected type name, saw \"%s\"\n",
|
fprintf(stderr, "%s:%d: syntax error in interface declaration. Expected type name, saw \"%s\"\n",
|
||||||
g_currentFilename, $2.buffer.lineno, $2.buffer.data);
|
g_currentFilename, $2.buffer.lineno, $2.buffer.data);
|
||||||
$$.document_item = NULL;
|
$$.document_item = NULL;
|
||||||
|
|||||||
@@ -66,9 +66,6 @@ generate_java(const string& filename, const string& originalSrc,
|
|||||||
if (iface->document_item.item_type == INTERFACE_TYPE_BINDER) {
|
if (iface->document_item.item_type == INTERFACE_TYPE_BINDER) {
|
||||||
cl = generate_binder_interface_class(iface);
|
cl = generate_binder_interface_class(iface);
|
||||||
}
|
}
|
||||||
else if (iface->document_item.item_type == INTERFACE_TYPE_RPC) {
|
|
||||||
cl = generate_rpc_interface_class(iface);
|
|
||||||
}
|
|
||||||
|
|
||||||
Document* document = new Document;
|
Document* document = new Document;
|
||||||
document->comment = "";
|
document->comment = "";
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ int generate_java(const string& filename, const string& originalSrc,
|
|||||||
interface_type* iface);
|
interface_type* iface);
|
||||||
|
|
||||||
Class* generate_binder_interface_class(const interface_type* iface);
|
Class* generate_binder_interface_class(const interface_type* iface);
|
||||||
Class* generate_rpc_interface_class(const interface_type* iface);
|
|
||||||
|
|
||||||
string gather_comments(extra_text_type* extra);
|
string gather_comments(extra_text_type* extra);
|
||||||
string append(const char* a, const char* b);
|
string append(const char* a, const char* b);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user