diff options
Diffstat (limited to 'source4/build')
-rw-r--r-- | source4/build/pidl/idl.yp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/source4/build/pidl/idl.yp b/source4/build/pidl/idl.yp index a98dbd9104..f512985ea0 100644 --- a/source4/build/pidl/idl.yp +++ b/source4/build/pidl/idl.yp @@ -16,9 +16,22 @@ %% idl: #empty { {} } - | idl interface { - push(@{$_[1]}, $_[2]); $_[1] - } + | idl interface { push(@{$_[1]}, $_[2]); $_[1] } + | idl coclass { push(@{$_[1]}, $_[2]); $_[1] } +; + +coclass: property_list 'coclass' identifier '{' interfaces '}' optional_semicolon + {$_[3] => { + "TYPE" => "COCLASS", + "PROPERTIES" => $_[1], + "NAME" => $_[3], + "DATA" => $_[5], + }} +; + +interfaces: + #empty { {} } + | interfaces interface { push(@{$_[1]}, $_[2]); $_[1] } ; interface: property_list 'interface' identifier base_interface '{' definitions '}' optional_semicolon @@ -291,7 +304,7 @@ again: if (s/^([\w_]+)//) { $parser->YYData->{LAST_TOKEN} = $1; if ($1 =~ - /^(interface|const|typedef|union + /^(coclass|interface|const|typedef|union |struct|enum|void|case|default)$/x) { return $1; } |