summaryrefslogtreecommitdiff
path: root/source4/pidl/idl.yp
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2006-11-06 21:54:19 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:24:57 -0500
commitd8ecabe452f36302105c6412ae5ab93cabfe5cf2 (patch)
treed5f8e1c8d246e6a95a5aa91e1776047104f046f0 /source4/pidl/idl.yp
parent6317ba1cf71faa7b77072649d92205a38f800fd1 (diff)
downloadsamba-d8ecabe452f36302105c6412ae5ab93cabfe5cf2.tar.gz
samba-d8ecabe452f36302105c6412ae5ab93cabfe5cf2.tar.bz2
samba-d8ecabe452f36302105c6412ae5ab93cabfe5cf2.zip
r19585: Add support for some more standard IDL instructions:
- `include' (replaces helper()) - `import' (replaces depends()) Add support for parsing importlib() - importlib() is now ignored (with a warning), but no longer causes syntax errors. helper() and depends() are now marked deprecated and will cause warnings. (This used to be commit 1ccab71cb8a9e3db9448b6679d01ad00e1c1e9a3)
Diffstat (limited to 'source4/pidl/idl.yp')
-rw-r--r--source4/pidl/idl.yp32
1 files changed, 29 insertions, 3 deletions
diff --git a/source4/pidl/idl.yp b/source4/pidl/idl.yp
index 8c2d039ad7..932730d7bf 100644
--- a/source4/pidl/idl.yp
+++ b/source4/pidl/idl.yp
@@ -18,10 +18,35 @@ idl:
#empty { {} }
| idl interface { push(@{$_[1]}, $_[2]); $_[1] }
| idl coclass { push(@{$_[1]}, $_[2]); $_[1] }
+ | idl import { push(@{$_[1]}, $_[2]); $_[1] }
+ | idl include { push(@{$_[1]}, $_[2]); $_[1] }
+ | idl importlib { push(@{$_[1]}, $_[2]); $_[1] }
+;
+
+import: 'import' commalisttext ';' {{
+ "TYPE" => "IMPORT",
+ "PATHS" => [ $_[2] ],
+ "FILE" => $_[0]->YYData->{INPUT_FILENAME},
+ "LINE" => $_[0]->YYData->{LINE}
+ }}
+;
+include: 'import' commalisttext ';' {{
+ "TYPE" => "INCLUDE",
+ "PATHS" => [ $_[2] ],
+ "FILE" => $_[0]->YYData->{INPUT_FILENAME},
+ "LINE" => $_[0]->YYData->{LINE}
+ }}
+;
+importlib: 'importlib' commalisttext ';' {{
+ "TYPE" => "IMPORTLIB",
+ "PATHS" => [ $_[2] ],
+ "FILE" => $_[0]->YYData->{INPUT_FILENAME},
+ "LINE" => $_[0]->YYData->{LINE}
+ }}
;
coclass: property_list 'coclass' identifier '{' interface_names '}' optional_semicolon
- {$_[3] => {
+ {{
"TYPE" => "COCLASS",
"PROPERTIES" => $_[1],
"NAME" => $_[3],
@@ -37,7 +62,7 @@ interface_names:
;
interface: property_list 'interface' identifier base_interface '{' definitions '}' optional_semicolon
- {$_[3] => {
+ {{
"TYPE" => "INTERFACE",
"PROPERTIES" => $_[1],
"NAME" => $_[3],
@@ -442,7 +467,8 @@ again:
$parser->YYData->{LAST_TOKEN} = $1;
if ($1 =~
/^(coclass|interface|const|typedef|declare|union
- |struct|enum|bitmap|void|unsigned|signed)$/x) {
+ |struct|enum|bitmap|void|unsigned|signed|import|include
+ |importlib)$/x) {
return $1;
}
return('IDENTIFIER',$1);