summaryrefslogtreecommitdiffstats
path: root/tools/aidl/aidl_language_y.y
diff options
context:
space:
mode:
authorJoe Onorato <joeo@google.com>2011-08-30 17:24:17 -0700
committerMike Lockwood <lockwood@google.com>2012-02-10 10:51:20 -0800
commitfdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20 (patch)
tree33ff6ed8e57f31aebadd5e04c7f97dae01917ea9 /tools/aidl/aidl_language_y.y
parenta8f767a2395c0127b7f5adb9e207fdd994144e17 (diff)
downloadframeworks_base-fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20.zip
frameworks_base-fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20.tar.gz
frameworks_base-fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20.tar.bz2
Checkpoint adding @home RPC support to aidl
Diffstat (limited to 'tools/aidl/aidl_language_y.y')
-rw-r--r--tools/aidl/aidl_language_y.y26
1 files changed, 22 insertions, 4 deletions
diff --git a/tools/aidl/aidl_language_y.y b/tools/aidl/aidl_language_y.y
index 3d65f17..965d936 100644
--- a/tools/aidl/aidl_language_y.y
+++ b/tools/aidl/aidl_language_y.y
@@ -19,6 +19,7 @@ static int count_brackets(const char*);
%token ARRAY
%token PARCELABLE
%token INTERFACE
+%token RPC
%token IN
%token OUT
%token INOUT
@@ -102,6 +103,8 @@ parcelable_decl:
interface_header:
INTERFACE {
interface_type* c = (interface_type*)malloc(sizeof(interface_type));
+ c->document_item.item_type = INTERFACE_TYPE_BINDER;
+ c->document_item.next = NULL;
c->interface_token = $1.buffer;
c->oneway = false;
memset(&c->oneway_token, 0, sizeof(buffer_type));
@@ -110,19 +113,34 @@ interface_header:
}
| ONEWAY INTERFACE {
interface_type* c = (interface_type*)malloc(sizeof(interface_type));
+ c->document_item.item_type = INTERFACE_TYPE_BINDER;
+ c->document_item.next = NULL;
c->interface_token = $2.buffer;
c->oneway = true;
c->oneway_token = $1.buffer;
c->comments_token = &c->oneway_token;
$$.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_header IDENTIFIER '{' interface_items '}' {
interface_type* c = $1.interface_obj;
- c->document_item.item_type = INTERFACE_TYPE;
- c->document_item.next = NULL;
c->name = $2.buffer;
c->package = g_currentPackage ? strdup(g_currentPackage) : NULL;
c->open_brace_token = $3.buffer;
@@ -130,12 +148,12 @@ interface_decl:
c->close_brace_token = $5.buffer;
$$.interface_obj = c;
}
- | INTERFACE error '{' interface_items '}' {
+ | interface_keywords error '{' interface_items '}' {
fprintf(stderr, "%s:%d: syntax error in interface declaration. Expected type name, saw \"%s\"\n",
g_currentFilename, $2.buffer.lineno, $2.buffer.data);
$$.document_item = NULL;
}
- | INTERFACE error '}' {
+ | interface_keywords error '}' {
fprintf(stderr, "%s:%d: syntax error in interface declaration. Expected type name, saw \"%s\"\n",
g_currentFilename, $2.buffer.lineno, $2.buffer.data);
$$.document_item = NULL;