summaryrefslogtreecommitdiff
path: root/source4/pidl/idl.yp
diff options
context:
space:
mode:
Diffstat (limited to 'source4/pidl/idl.yp')
-rw-r--r--source4/pidl/idl.yp20
1 files changed, 16 insertions, 4 deletions
diff --git a/source4/pidl/idl.yp b/source4/pidl/idl.yp
index a0323af8ee..d557590494 100644
--- a/source4/pidl/idl.yp
+++ b/source4/pidl/idl.yp
@@ -67,17 +67,24 @@ interface_names:
| interface_names 'interface' identifier ';' { push(@{$_[1]}, $_[2]); $_[1] }
;
-interface: property_list 'interface' identifier '{' definitions '}' optional_semicolon
+interface: property_list 'interface' identifier base_interface '{' definitions '}' optional_semicolon
{{
"TYPE" => "INTERFACE",
"PROPERTIES" => $_[1],
"NAME" => $_[3],
- "DATA" => $_[5],
+ "BASE" => $_[4],
+ "DATA" => $_[6],
"FILE" => $_[0]->YYData->{FILE},
"LINE" => $_[0]->YYData->{LINE},
}}
;
+base_interface:
+ #empty
+ | ':' identifier { $_[2] }
+;
+
+
cpp_quote: 'cpp_quote' '(' text ')'
{{
"TYPE" => "CPP_QUOTE",
@@ -269,11 +276,16 @@ element_list1:
| element_list1 base_element ';' { push(@{$_[1]}, $_[2]); $_[1] }
;
+optional_const:
+ #empty
+ | 'const'
+;
+
element_list2:
#empty
| 'void'
- | base_element { [ $_[1] ] }
- | element_list2 ',' base_element { push(@{$_[1]}, $_[3]); $_[1] }
+ | optional_const base_element { [ $_[2] ] }
+ | element_list2 ',' optional_const base_element { push(@{$_[1]}, $_[4]); $_[1] }
;
array_len: