summaryrefslogtreecommitdiff
path: root/source4
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
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')
-rw-r--r--source4/pidl/idl.yp32
-rw-r--r--source4/pidl/lib/Parse/Pidl/IDL.pm2664
-rw-r--r--source4/pidl/lib/Parse/Pidl/NDR.pm11
-rw-r--r--source4/pidl/lib/Parse/Pidl/ODL.pm22
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm17
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba4/Header.pm25
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm33
-rw-r--r--source4/pidl/lib/Parse/Pidl/Wireshark/NDR.pm33
8 files changed, 1528 insertions, 1309 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);
diff --git a/source4/pidl/lib/Parse/Pidl/IDL.pm b/source4/pidl/lib/Parse/Pidl/IDL.pm
index 87b4ccb5e5..e400862795 100644
--- a/source4/pidl/lib/Parse/Pidl/IDL.pm
+++ b/source4/pidl/lib/Parse/Pidl/IDL.pm
@@ -507,12 +507,17 @@ sub new {
},
{#State 1
ACTIONS => {
- '' => 2
+ '' => 2,
+ "importlib" => 3,
+ "import" => 6
},
- DEFAULT => -84,
+ DEFAULT => -90,
GOTOS => {
- 'interface' => 3,
- 'coclass' => 4,
+ 'importlib' => 9,
+ 'interface' => 8,
+ 'include' => 4,
+ 'coclass' => 10,
+ 'import' => 7,
'property_list' => 5
}
},
@@ -520,1678 +525,1735 @@ sub new {
DEFAULT => 0
},
{#State 3
- DEFAULT => -2
+ ACTIONS => {
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
+ },
+ DEFAULT => -100,
+ GOTOS => {
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 12,
+ 'constant' => 13,
+ 'commalisttext' => 15
+ }
},
{#State 4
- DEFAULT => -3
+ DEFAULT => -5
},
{#State 5
ACTIONS => {
- "coclass" => 6,
- "interface" => 8,
- "[" => 7
+ "coclass" => 19,
+ "[" => 21,
+ "interface" => 20
}
},
{#State 6
ACTIONS => {
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 10
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 12,
+ 'constant' => 13,
+ 'commalisttext' => 22
}
},
{#State 7
- ACTIONS => {
- 'IDENTIFIER' => 9
- },
- GOTOS => {
- 'identifier' => 11,
- 'properties' => 13,
- 'property' => 12
- }
+ DEFAULT => -4
},
{#State 8
- ACTIONS => {
- 'IDENTIFIER' => 9
- },
- GOTOS => {
- 'identifier' => 14
- }
+ DEFAULT => -2
},
{#State 9
- DEFAULT => -113
+ DEFAULT => -6
},
{#State 10
- ACTIONS => {
- "{" => 15
- }
+ DEFAULT => -3
},
{#State 11
- ACTIONS => {
- "(" => 16
- },
- DEFAULT => -88
+ DEFAULT => -119
},
{#State 12
- DEFAULT => -86
+ ACTIONS => {
+ "-" => 24,
+ ":" => 23,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "*" => 35,
+ "?" => 25,
+ "{" => 29,
+ "&" => 30,
+ "/" => 31,
+ "=" => 32,
+ "(" => 33,
+ "|" => 34,
+ "." => 36,
+ ">" => 37
+ },
+ DEFAULT => -98
},
{#State 13
- ACTIONS => {
- "," => 17,
- "]" => 18
- }
+ DEFAULT => -102
},
{#State 14
- ACTIONS => {
- ":" => 19
- },
- DEFAULT => -8,
- GOTOS => {
- 'base_interface' => 20
- }
+ DEFAULT => -122
},
{#State 15
- DEFAULT => -5,
- GOTOS => {
- 'interface_names' => 21
+ ACTIONS => {
+ ";" => 38,
+ "," => 39
}
},
{#State 16
- ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
- },
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'listtext' => 26,
- 'anytext' => 25,
- 'text' => 24,
- 'constant' => 27
- }
+ DEFAULT => -123
},
{#State 17
- ACTIONS => {
- 'IDENTIFIER' => 9
- },
- GOTOS => {
- 'identifier' => 11,
- 'property' => 29
- }
+ DEFAULT => -101
},
{#State 18
- DEFAULT => -85
+ DEFAULT => -103
},
{#State 19
ACTIONS => {
- 'IDENTIFIER' => 9
+ 'IDENTIFIER' => 11
},
GOTOS => {
- 'identifier' => 30
+ 'identifier' => 40
}
},
{#State 20
ACTIONS => {
- "{" => 31
+ 'IDENTIFIER' => 11
+ },
+ GOTOS => {
+ 'identifier' => 41
}
},
{#State 21
ACTIONS => {
- "}" => 32,
- "interface" => 33
+ 'IDENTIFIER' => 11
+ },
+ GOTOS => {
+ 'identifier' => 43,
+ 'property' => 44,
+ 'properties' => 42
}
},
{#State 22
- DEFAULT => -117
+ ACTIONS => {
+ ";" => 45,
+ "," => 39
+ }
},
{#State 23
- DEFAULT => -95
+ ACTIONS => {
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
+ },
+ DEFAULT => -100,
+ GOTOS => {
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 46,
+ 'constant' => 13
+ }
},
{#State 24
- DEFAULT => -97
+ ACTIONS => {
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
+ },
+ DEFAULT => -100,
+ GOTOS => {
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 47,
+ 'constant' => 13
+ }
},
{#State 25
ACTIONS => {
- "-" => 35,
- ":" => 34,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "*" => 46,
- "?" => 36,
- "{" => 40,
- "&" => 41,
- "/" => 42,
- "=" => 43,
- "(" => 44,
- "|" => 45,
- "." => 47,
- ">" => 48
- },
- DEFAULT => -90
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
+ },
+ DEFAULT => -100,
+ GOTOS => {
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 48,
+ 'constant' => 13
+ }
},
{#State 26
ACTIONS => {
- "," => 49,
- ")" => 50
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
+ },
+ DEFAULT => -100,
+ GOTOS => {
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 49,
+ 'constant' => 13
}
},
{#State 27
- DEFAULT => -96
+ ACTIONS => {
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
+ },
+ DEFAULT => -100,
+ GOTOS => {
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 50,
+ 'constant' => 13
+ }
},
{#State 28
- DEFAULT => -116
+ ACTIONS => {
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
+ },
+ DEFAULT => -100,
+ GOTOS => {
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 51,
+ 'constant' => 13
+ }
},
{#State 29
- DEFAULT => -87
+ ACTIONS => {
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
+ },
+ DEFAULT => -100,
+ GOTOS => {
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 12,
+ 'constant' => 13,
+ 'commalisttext' => 52
+ }
},
{#State 30
- DEFAULT => -9
+ ACTIONS => {
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
+ },
+ DEFAULT => -100,
+ GOTOS => {
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 53,
+ 'constant' => 13
+ }
},
{#State 31
ACTIONS => {
- "typedef" => 51,
- "union" => 52,
- "enum" => 65,
- "bitmap" => 66,
- "declare" => 58,
- "const" => 60,
- "struct" => 63
- },
- DEFAULT => -84,
- GOTOS => {
- 'typedecl' => 64,
- 'function' => 53,
- 'bitmap' => 67,
- 'definitions' => 54,
- 'definition' => 57,
- 'property_list' => 56,
- 'usertype' => 55,
- 'declare' => 69,
- 'const' => 68,
- 'struct' => 59,
- 'enum' => 61,
- 'typedef' => 62,
- 'union' => 70
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
+ },
+ DEFAULT => -100,
+ GOTOS => {
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 54,
+ 'constant' => 13
}
},
{#State 32
ACTIONS => {
- ";" => 71
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
- DEFAULT => -118,
+ DEFAULT => -100,
GOTOS => {
- 'optional_semicolon' => 72
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 55,
+ 'constant' => 13
}
},
{#State 33
ACTIONS => {
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 73
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 12,
+ 'constant' => 13,
+ 'commalisttext' => 56
}
},
{#State 34
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
- DEFAULT => -94,
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 23,
- 'anytext' => 74,
- 'text' => 24,
- 'constant' => 27
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 57,
+ 'constant' => 13
}
},
{#State 35
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
- DEFAULT => -94,
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 23,
- 'anytext' => 75,
- 'text' => 24,
- 'constant' => 27
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 58,
+ 'constant' => 13
}
},
{#State 36
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
- DEFAULT => -94,
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 23,
- 'anytext' => 76,
- 'text' => 24,
- 'constant' => 27
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 59,
+ 'constant' => 13
}
},
{#State 37
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
- DEFAULT => -94,
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 23,
- 'anytext' => 77,
- 'text' => 24,
- 'constant' => 27
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 60,
+ 'constant' => 13
}
},
{#State 38
- ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
- },
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 78,
- 'text' => 24,
- 'constant' => 27
- }
+ DEFAULT => -9
},
{#State 39
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
- DEFAULT => -94,
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 23,
- 'anytext' => 79,
- 'text' => 24,
- 'constant' => 27
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 61,
+ 'constant' => 13
}
},
{#State 40
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
- },
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 80,
- 'text' => 24,
- 'constant' => 27,
- 'commalisttext' => 81
+ "{" => 62
}
},
{#State 41
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ ":" => 63
},
- DEFAULT => -94,
+ DEFAULT => -14,
GOTOS => {
- 'identifier' => 23,
- 'anytext' => 82,
- 'text' => 24,
- 'constant' => 27
+ 'base_interface' => 64
}
},
{#State 42
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
- },
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 83,
- 'text' => 24,
- 'constant' => 27
+ "," => 65,
+ "]" => 66
}
},
{#State 43
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ "(" => 67
},
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 84,
- 'text' => 24,
- 'constant' => 27
- }
+ DEFAULT => -94
},
{#State 44
- ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
- },
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 80,
- 'text' => 24,
- 'constant' => 27,
- 'commalisttext' => 85
- }
+ DEFAULT => -92
},
{#State 45
- ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
- },
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 86,
- 'text' => 24,
- 'constant' => 27
- }
+ DEFAULT => -7
},
{#State 46
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ "-" => 24,
+ ":" => 23,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "*" => 35,
+ "?" => 25,
+ "{" => 29,
+ "&" => 30,
+ "/" => 31,
+ "=" => 32,
+ "(" => 33,
+ "|" => 34,
+ "." => 36,
+ ">" => 37
},
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 87,
- 'text' => 24,
- 'constant' => 27
- }
+ DEFAULT => -113
},
{#State 47
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ ":" => 23,
+ "<" => 26,
+ "~" => 27,
+ "?" => 25,
+ "{" => 29,
+ "=" => 32
},
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 88,
- 'text' => 24,
- 'constant' => 27
- }
+ DEFAULT => -104
},
{#State 48
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ "-" => 24,
+ ":" => 23,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "*" => 35,
+ "?" => 25,
+ "{" => 29,
+ "&" => 30,
+ "/" => 31,
+ "=" => 32,
+ "(" => 33,
+ "|" => 34,
+ "." => 36,
+ ">" => 37
},
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 89,
- 'text' => 24,
- 'constant' => 27
- }
+ DEFAULT => -112
},
{#State 49
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ "-" => 24,
+ ":" => 23,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "*" => 35,
+ "?" => 25,
+ "{" => 29,
+ "&" => 30,
+ "/" => 31,
+ "=" => 32,
+ "(" => 33,
+ "|" => 34,
+ "." => 36,
+ ">" => 37
},
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 90,
- 'text' => 24,
- 'constant' => 27
- }
+ DEFAULT => -108
},
{#State 50
- DEFAULT => -89
+ ACTIONS => {
+ "-" => 24,
+ ":" => 23,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "*" => 35,
+ "?" => 25,
+ "{" => 29,
+ "&" => 30,
+ "/" => 31,
+ "=" => 32,
+ "(" => 33,
+ "|" => 34,
+ "." => 36,
+ ">" => 37
+ },
+ DEFAULT => -116
},
{#State 51
- DEFAULT => -84,
- GOTOS => {
- 'property_list' => 91
- }
+ ACTIONS => {
+ ":" => 23,
+ "<" => 26,
+ "~" => 27,
+ "?" => 25,
+ "{" => 29,
+ "=" => 32
+ },
+ DEFAULT => -115
},
{#State 52
ACTIONS => {
- 'IDENTIFIER' => 92
- },
- DEFAULT => -115,
- GOTOS => {
- 'optional_identifier' => 93
+ "}" => 68,
+ "," => 39
}
},
{#State 53
- DEFAULT => -12
+ ACTIONS => {
+ ":" => 23,
+ "<" => 26,
+ "~" => 27,
+ "?" => 25,
+ "{" => 29,
+ "=" => 32
+ },
+ DEFAULT => -110
},
{#State 54
ACTIONS => {
- "}" => 94,
- "typedef" => 51,
- "union" => 52,
- "enum" => 65,
- "bitmap" => 66,
- "declare" => 58,
- "const" => 60,
- "struct" => 63
- },
- DEFAULT => -84,
- GOTOS => {
- 'typedecl' => 64,
- 'function' => 53,
- 'bitmap' => 67,
- 'definition' => 95,
- 'property_list' => 56,
- 'usertype' => 55,
- 'const' => 68,
- 'struct' => 59,
- 'declare' => 69,
- 'enum' => 61,
- 'typedef' => 62,
- 'union' => 70
- }
+ ":" => 23,
+ "<" => 26,
+ "~" => 27,
+ "?" => 25,
+ "{" => 29,
+ "=" => 32
+ },
+ DEFAULT => -111
},
{#State 55
ACTIONS => {
- ";" => 96
- }
+ "-" => 24,
+ ":" => 23,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "*" => 35,
+ "?" => 25,
+ "{" => 29,
+ "&" => 30,
+ "/" => 31,
+ "=" => 32,
+ "(" => 33,
+ "|" => 34,
+ "." => 36,
+ ">" => 37
+ },
+ DEFAULT => -114
},
{#State 56
ACTIONS => {
- 'IDENTIFIER' => 9,
- "signed" => 102,
- "union" => 52,
- "enum" => 65,
- "bitmap" => 66,
- 'void' => 97,
- "unsigned" => 103,
- "[" => 7,
- "struct" => 63
- },
- GOTOS => {
- 'existingtype' => 101,
- 'bitmap' => 67,
- 'usertype' => 98,
- 'identifier' => 99,
- 'struct' => 59,
- 'enum' => 61,
- 'type' => 104,
- 'union' => 70,
- 'sign' => 100
+ "," => 39,
+ ")" => 69
}
},
{#State 57
- DEFAULT => -10
+ ACTIONS => {
+ ":" => 23,
+ "<" => 26,
+ "~" => 27,
+ "?" => 25,
+ "{" => 29,
+ "=" => 32
+ },
+ DEFAULT => -109
},
{#State 58
- DEFAULT => -84,
- GOTOS => {
- 'property_list' => 105
- }
+ ACTIONS => {
+ ":" => 23,
+ "<" => 26,
+ "~" => 27,
+ "?" => 25,
+ "{" => 29,
+ "=" => 32
+ },
+ DEFAULT => -106
},
{#State 59
- DEFAULT => -28
+ ACTIONS => {
+ ":" => 23,
+ "<" => 26,
+ "~" => 27,
+ "?" => 25,
+ "{" => 29,
+ "=" => 32
+ },
+ DEFAULT => -105
},
{#State 60
ACTIONS => {
- 'IDENTIFIER' => 9
+ ":" => 23,
+ "<" => 26,
+ "~" => 27,
+ "?" => 25,
+ "{" => 29,
+ "=" => 32
},
- GOTOS => {
- 'identifier' => 106
- }
+ DEFAULT => -107
},
{#State 61
- DEFAULT => -30
+ ACTIONS => {
+ "-" => 24,
+ ":" => 23,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "*" => 35,
+ "?" => 25,
+ "{" => 29,
+ "&" => 30,
+ "/" => 31,
+ "=" => 32,
+ "(" => 33,
+ "|" => 34,
+ "." => 36,
+ ">" => 37
+ },
+ DEFAULT => -99
},
{#State 62
- DEFAULT => -14
+ DEFAULT => -11,
+ GOTOS => {
+ 'interface_names' => 70
+ }
},
{#State 63
ACTIONS => {
- 'IDENTIFIER' => 92
+ 'IDENTIFIER' => 11
},
- DEFAULT => -115,
GOTOS => {
- 'optional_identifier' => 107
+ 'identifier' => 71
}
},
{#State 64
- DEFAULT => -16
+ ACTIONS => {
+ "{" => 72
+ }
},
{#State 65
ACTIONS => {
- 'IDENTIFIER' => 92
+ 'IDENTIFIER' => 11
},
- DEFAULT => -115,
GOTOS => {
- 'optional_identifier' => 108
+ 'identifier' => 43,
+ 'property' => 73
}
},
{#State 66
+ DEFAULT => -91
+ },
+ {#State 67
ACTIONS => {
- 'IDENTIFIER' => 92
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
- DEFAULT => -115,
+ DEFAULT => -100,
GOTOS => {
- 'optional_identifier' => 109
+ 'identifier' => 17,
+ 'text' => 18,
+ 'listtext' => 75,
+ 'anytext' => 74,
+ 'constant' => 13
}
},
- {#State 67
- DEFAULT => -31
- },
{#State 68
- DEFAULT => -13
+ ACTIONS => {
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
+ },
+ DEFAULT => -100,
+ GOTOS => {
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 76,
+ 'constant' => 13
+ }
},
{#State 69
- DEFAULT => -15
+ ACTIONS => {
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
+ },
+ DEFAULT => -100,
+ GOTOS => {
+ 'identifier' => 17,
+ 'text' => 18,
+ 'anytext' => 77,
+ 'constant' => 13
+ }
},
{#State 70
- DEFAULT => -29
+ ACTIONS => {
+ "}" => 78,
+ "interface" => 79
+ }
},
{#State 71
- DEFAULT => -119
+ DEFAULT => -15
},
{#State 72
- DEFAULT => -4
- },
- {#State 73
ACTIONS => {
- ";" => 110
+ "typedef" => 80,
+ "union" => 81,
+ "enum" => 94,
+ "bitmap" => 95,
+ "declare" => 87,
+ "const" => 89,
+ "struct" => 92
+ },
+ DEFAULT => -90,
+ GOTOS => {
+ 'typedecl' => 93,
+ 'function' => 82,
+ 'bitmap' => 96,
+ 'definitions' => 83,
+ 'definition' => 86,
+ 'property_list' => 85,
+ 'usertype' => 84,
+ 'declare' => 98,
+ 'const' => 97,
+ 'struct' => 88,
+ 'enum' => 90,
+ 'typedef' => 91,
+ 'union' => 99
}
},
+ {#State 73
+ DEFAULT => -93
+ },
{#State 74
ACTIONS => {
- "-" => 35,
- ":" => 34,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "*" => 46,
- "?" => 36,
- "{" => 40,
- "&" => 41,
- "/" => 42,
- "=" => 43,
- "(" => 44,
- "|" => 45,
- "." => 47,
- ">" => 48
+ "-" => 24,
+ ":" => 23,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "*" => 35,
+ "?" => 25,
+ "{" => 29,
+ "&" => 30,
+ "/" => 31,
+ "=" => 32,
+ "(" => 33,
+ "|" => 34,
+ "." => 36,
+ ">" => 37
},
- DEFAULT => -107
+ DEFAULT => -96
},
{#State 75
ACTIONS => {
- ":" => 34,
- "<" => 37,
- "~" => 38,
- "?" => 36,
- "{" => 40,
- "=" => 43
- },
- DEFAULT => -98
+ "," => 100,
+ ")" => 101
+ }
},
{#State 76
ACTIONS => {
- "-" => 35,
- ":" => 34,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "*" => 46,
- "?" => 36,
- "{" => 40,
- "&" => 41,
- "/" => 42,
- "=" => 43,
- "(" => 44,
- "|" => 45,
- "." => 47,
- ">" => 48
- },
- DEFAULT => -106
+ "-" => 24,
+ ":" => 23,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "*" => 35,
+ "?" => 25,
+ "{" => 29,
+ "&" => 30,
+ "/" => 31,
+ "=" => 32,
+ "(" => 33,
+ "|" => 34,
+ "." => 36,
+ ">" => 37
+ },
+ DEFAULT => -118
},
{#State 77
ACTIONS => {
- "-" => 35,
- ":" => 34,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "*" => 46,
- "?" => 36,
- "{" => 40,
- "&" => 41,
- "/" => 42,
- "=" => 43,
- "(" => 44,
- "|" => 45,
- "." => 47,
- ">" => 48
+ ":" => 23,
+ "<" => 26,
+ "~" => 27,
+ "?" => 25,
+ "{" => 29,
+ "=" => 32
},
- DEFAULT => -102
+ DEFAULT => -117
},
{#State 78
ACTIONS => {
- "-" => 35,
- ":" => 34,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "*" => 46,
- "?" => 36,
- "{" => 40,
- "&" => 41,
- "/" => 42,
- "=" => 43,
- "(" => 44,
- "|" => 45,
- "." => 47,
- ">" => 48
+ ";" => 102
},
- DEFAULT => -110
+ DEFAULT => -124,
+ GOTOS => {
+ 'optional_semicolon' => 103
+ }
},
{#State 79
ACTIONS => {
- ":" => 34,
- "<" => 37,
- "~" => 38,
- "?" => 36,
- "{" => 40,
- "=" => 43
+ 'IDENTIFIER' => 11
},
- DEFAULT => -109
+ GOTOS => {
+ 'identifier' => 104
+ }
},
{#State 80
- ACTIONS => {
- "-" => 35,
- ":" => 34,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "*" => 46,
- "?" => 36,
- "{" => 40,
- "&" => 41,
- "/" => 42,
- "=" => 43,
- "(" => 44,
- "|" => 45,
- "." => 47,
- ">" => 48
- },
- DEFAULT => -92
+ DEFAULT => -90,
+ GOTOS => {
+ 'property_list' => 105
+ }
},
{#State 81
ACTIONS => {
- "}" => 111,
- "," => 112
+ 'IDENTIFIER' => 106
+ },
+ DEFAULT => -121,
+ GOTOS => {
+ 'optional_identifier' => 107
}
},
{#State 82
- ACTIONS => {
- ":" => 34,
- "<" => 37,
- "~" => 38,
- "?" => 36,
- "{" => 40,
- "=" => 43
- },
- DEFAULT => -104
+ DEFAULT => -18
},
{#State 83
ACTIONS => {
- ":" => 34,
- "<" => 37,
- "~" => 38,
- "?" => 36,
- "{" => 40,
- "=" => 43
- },
- DEFAULT => -105
+ "}" => 108,
+ "typedef" => 80,
+ "union" => 81,
+ "enum" => 94,
+ "bitmap" => 95,
+ "declare" => 87,
+ "const" => 89,
+ "struct" => 92
+ },
+ DEFAULT => -90,
+ GOTOS => {
+ 'typedecl' => 93,
+ 'function' => 82,
+ 'bitmap' => 96,
+ 'definition' => 109,
+ 'property_list' => 85,
+ 'usertype' => 84,
+ 'const' => 97,
+ 'struct' => 88,
+ 'declare' => 98,
+ 'enum' => 90,
+ 'typedef' => 91,
+ 'union' => 99
+ }
},
{#State 84
ACTIONS => {
- "-" => 35,
- ":" => 34,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "*" => 46,
- "?" => 36,
- "{" => 40,
- "&" => 41,
- "/" => 42,
- "=" => 43,
- "(" => 44,
- "|" => 45,
- "." => 47,
- ">" => 48
- },
- DEFAULT => -108
+ ";" => 110
+ }
},
{#State 85
ACTIONS => {
- "," => 112,
- ")" => 113
+ 'IDENTIFIER' => 11,
+ "signed" => 116,
+ "union" => 81,
+ "enum" => 94,
+ "bitmap" => 95,
+ 'void' => 111,
+ "unsigned" => 117,
+ "[" => 21,
+ "struct" => 92
+ },
+ GOTOS => {
+ 'existingtype' => 115,
+ 'bitmap' => 96,
+ 'usertype' => 112,
+ 'identifier' => 113,
+ 'struct' => 88,
+ 'enum' => 90,
+ 'type' => 118,
+ 'union' => 99,
+ 'sign' => 114
}
},
{#State 86
- ACTIONS => {
- ":" => 34,
- "<" => 37,
- "~" => 38,
- "?" => 36,
- "{" => 40,
- "=" => 43
- },
- DEFAULT => -103
+ DEFAULT => -16
},
{#State 87
- ACTIONS => {
- ":" => 34,
- "<" => 37,
- "~" => 38,
- "?" => 36,
- "{" => 40,
- "=" => 43
- },
- DEFAULT => -100
+ DEFAULT => -90,
+ GOTOS => {
+ 'property_list' => 119
+ }
},
{#State 88
- ACTIONS => {
- ":" => 34,
- "<" => 37,
- "~" => 38,
- "?" => 36,
- "{" => 40,
- "=" => 43
- },
- DEFAULT => -99
+ DEFAULT => -34
},
{#State 89
ACTIONS => {
- ":" => 34,
- "<" => 37,
- "~" => 38,
- "?" => 36,
- "{" => 40,
- "=" => 43
+ 'IDENTIFIER' => 11
},
- DEFAULT => -101
+ GOTOS => {
+ 'identifier' => 120
+ }
},
{#State 90
- ACTIONS => {
- "-" => 35,
- ":" => 34,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "*" => 46,
- "?" => 36,
- "{" => 40,
- "&" => 41,
- "/" => 42,
- "=" => 43,
- "(" => 44,
- "|" => 45,
- "." => 47,
- ">" => 48
- },
- DEFAULT => -91
+ DEFAULT => -36
},
{#State 91
+ DEFAULT => -20
+ },
+ {#State 92
ACTIONS => {
- 'IDENTIFIER' => 9,
- "signed" => 102,
- "union" => 52,
- "enum" => 65,
- "bitmap" => 66,
- 'void' => 97,
- "unsigned" => 103,
- "[" => 7,
- "struct" => 63
+ 'IDENTIFIER' => 106
},
+ DEFAULT => -121,
GOTOS => {
- 'existingtype' => 101,
- 'bitmap' => 67,
- 'usertype' => 98,
- 'identifier' => 99,
- 'struct' => 59,
- 'enum' => 61,
- 'type' => 114,
- 'union' => 70,
- 'sign' => 100
+ 'optional_identifier' => 121
}
},
- {#State 92
- DEFAULT => -114
- },
{#State 93
+ DEFAULT => -22
+ },
+ {#State 94
ACTIONS => {
- "{" => 116
+ 'IDENTIFIER' => 106
},
- DEFAULT => -69,
+ DEFAULT => -121,
GOTOS => {
- 'union_body' => 117,
- 'opt_union_body' => 115
+ 'optional_identifier' => 122
}
},
- {#State 94
+ {#State 95
ACTIONS => {
- ";" => 71
+ 'IDENTIFIER' => 106
},
- DEFAULT => -118,
+ DEFAULT => -121,
GOTOS => {
- 'optional_semicolon' => 118
+ 'optional_identifier' => 123
}
},
- {#State 95
- DEFAULT => -11
- },
{#State 96
- DEFAULT => -32
+ DEFAULT => -37
},
{#State 97
- DEFAULT => -40
+ DEFAULT => -19
},
{#State 98
- DEFAULT => -38
+ DEFAULT => -21
},
{#State 99
- DEFAULT => -37
+ DEFAULT => -35
},
{#State 100
ACTIONS => {
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 119
+ 'identifier' => 17,
+ 'anytext' => 124,
+ 'text' => 18,
+ 'constant' => 13
}
},
{#State 101
- DEFAULT => -39
+ DEFAULT => -95
},
{#State 102
- DEFAULT => -33
+ DEFAULT => -125
},
{#State 103
- DEFAULT => -34
+ DEFAULT => -10
},
{#State 104
ACTIONS => {
- 'IDENTIFIER' => 9
- },
- GOTOS => {
- 'identifier' => 120
+ ";" => 125
}
},
{#State 105
ACTIONS => {
- "union" => 121,
- "enum" => 126,
- "bitmap" => 127,
- "[" => 7
+ 'IDENTIFIER' => 11,
+ "signed" => 116,
+ "union" => 81,
+ "enum" => 94,
+ "bitmap" => 95,
+ 'void' => 111,
+ "unsigned" => 117,
+ "[" => 21,
+ "struct" => 92
},
GOTOS => {
- 'decl_enum' => 122,
- 'decl_bitmap' => 123,
- 'decl_type' => 125,
- 'decl_union' => 124
+ 'existingtype' => 115,
+ 'bitmap' => 96,
+ 'usertype' => 112,
+ 'identifier' => 113,
+ 'struct' => 88,
+ 'enum' => 90,
+ 'type' => 126,
+ 'union' => 99,
+ 'sign' => 114
}
},
{#State 106
- DEFAULT => -73,
- GOTOS => {
- 'pointers' => 128
- }
+ DEFAULT => -120
},
{#State 107
ACTIONS => {
- "{" => 130
+ "{" => 128
},
- DEFAULT => -59,
+ DEFAULT => -75,
GOTOS => {
- 'struct_body' => 129,
- 'opt_struct_body' => 131
+ 'union_body' => 129,
+ 'opt_union_body' => 127
}
},
{#State 108
ACTIONS => {
- "{" => 132
+ ";" => 102
},
- DEFAULT => -42,
+ DEFAULT => -124,
GOTOS => {
- 'opt_enum_body' => 134,
- 'enum_body' => 133
+ 'optional_semicolon' => 130
}
},
{#State 109
- ACTIONS => {
- "{" => 136
- },
- DEFAULT => -50,
- GOTOS => {
- 'bitmap_body' => 137,
- 'opt_bitmap_body' => 135
- }
+ DEFAULT => -17
},
{#State 110
- DEFAULT => -6
+ DEFAULT => -38
},
{#State 111
- ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
- },
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 138,
- 'text' => 24,
- 'constant' => 27
- }
+ DEFAULT => -46
},
{#State 112
- ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
- },
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 139,
- 'text' => 24,
- 'constant' => 27
- }
+ DEFAULT => -44
},
{#State 113
- ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
- },
- DEFAULT => -94,
- GOTOS => {
- 'identifier' => 23,
- 'anytext' => 140,
- 'text' => 24,
- 'constant' => 27
- }
+ DEFAULT => -43
},
{#State 114
ACTIONS => {
- 'IDENTIFIER' => 9
+ 'IDENTIFIER' => 11
},
GOTOS => {
- 'identifier' => 141
+ 'identifier' => 131
}
},
{#State 115
- DEFAULT => -71
+ DEFAULT => -45
},
{#State 116
- DEFAULT => -66,
- GOTOS => {
- 'union_elements' => 142
- }
+ DEFAULT => -39
},
{#State 117
- DEFAULT => -70
+ DEFAULT => -40
},
{#State 118
- DEFAULT => -7
+ ACTIONS => {
+ 'IDENTIFIER' => 11
+ },
+ GOTOS => {
+ 'identifier' => 132
+ }
},
{#State 119
- DEFAULT => -36
+ ACTIONS => {
+ "union" => 133,
+ "enum" => 138,
+ "bitmap" => 139,
+ "[" => 21
+ },
+ GOTOS => {
+ 'decl_enum' => 134,
+ 'decl_bitmap' => 135,
+ 'decl_type' => 137,
+ 'decl_union' => 136
+ }
},
{#State 120
- ACTIONS => {
- "(" => 143
+ DEFAULT => -79,
+ GOTOS => {
+ 'pointers' => 140
}
},
{#State 121
- DEFAULT => -26
+ ACTIONS => {
+ "{" => 142
+ },
+ DEFAULT => -65,
+ GOTOS => {
+ 'struct_body' => 141,
+ 'opt_struct_body' => 143
+ }
},
{#State 122
- DEFAULT => -21
+ ACTIONS => {
+ "{" => 144
+ },
+ DEFAULT => -48,
+ GOTOS => {
+ 'opt_enum_body' => 146,
+ 'enum_body' => 145
+ }
},
{#State 123
- DEFAULT => -22
+ ACTIONS => {
+ "{" => 148
+ },
+ DEFAULT => -56,
+ GOTOS => {
+ 'bitmap_body' => 149,
+ 'opt_bitmap_body' => 147
+ }
},
{#State 124
- DEFAULT => -23
+ ACTIONS => {
+ "-" => 24,
+ ":" => 23,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "*" => 35,
+ "?" => 25,
+ "{" => 29,
+ "&" => 30,
+ "/" => 31,
+ "=" => 32,
+ "(" => 33,
+ "|" => 34,
+ "." => 36,
+ ">" => 37
+ },
+ DEFAULT => -97
},
{#State 125
+ DEFAULT => -12
+ },
+ {#State 126
ACTIONS => {
- 'IDENTIFIER' => 9
+ 'IDENTIFIER' => 11
},
GOTOS => {
- 'identifier' => 144
+ 'identifier' => 150
}
},
- {#State 126
- DEFAULT => -24
- },
{#State 127
- DEFAULT => -25
+ DEFAULT => -77
},
{#State 128
- ACTIONS => {
- 'IDENTIFIER' => 9,
- "*" => 146
- },
+ DEFAULT => -72,
GOTOS => {
- 'identifier' => 145
+ 'union_elements' => 151
}
},
{#State 129
- DEFAULT => -60
+ DEFAULT => -76
},
{#State 130
- DEFAULT => -75,
- GOTOS => {
- 'element_list1' => 147
- }
+ DEFAULT => -13
},
{#State 131
- DEFAULT => -61
+ DEFAULT => -42
},
{#State 132
ACTIONS => {
- 'IDENTIFIER' => 9
- },
- GOTOS => {
- 'identifier' => 148,
- 'enum_element' => 149,
- 'enum_elements' => 150
+ "(" => 152
}
},
{#State 133
- DEFAULT => -43
+ DEFAULT => -32
},
{#State 134
- DEFAULT => -44
+ DEFAULT => -27
},
{#State 135
- DEFAULT => -52
+ DEFAULT => -28
},
{#State 136
+ DEFAULT => -29
+ },
+ {#State 137
ACTIONS => {
- 'IDENTIFIER' => 9
+ 'IDENTIFIER' => 11
},
- DEFAULT => -55,
GOTOS => {
- 'identifier' => 153,
- 'bitmap_element' => 152,
- 'bitmap_elements' => 151,
- 'opt_bitmap_elements' => 154
+ 'identifier' => 153
}
},
- {#State 137
- DEFAULT => -51
- },
{#State 138
+ DEFAULT => -30
+ },
+ {#State 139
+ DEFAULT => -31
+ },
+ {#State 140
ACTIONS => {
- "-" => 35,
- ":" => 34,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "*" => 46,
- "?" => 36,
- "{" => 40,
- "&" => 41,
- "/" => 42,
- "=" => 43,
- "(" => 44,
- "|" => 45,
- "." => 47,
- ">" => 48
+ 'IDENTIFIER' => 11,
+ "*" => 155
},
- DEFAULT => -112
+ GOTOS => {
+ 'identifier' => 154
+ }
},
- {#State 139
+ {#State 141
+ DEFAULT => -66
+ },
+ {#State 142
+ DEFAULT => -81,
+ GOTOS => {
+ 'element_list1' => 156
+ }
+ },
+ {#State 143
+ DEFAULT => -67
+ },
+ {#State 144
ACTIONS => {
- "-" => 35,
- ":" => 34,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "*" => 46,
- "?" => 36,
- "{" => 40,
- "&" => 41,
- "/" => 42,
- "=" => 43,
- "(" => 44,
- "|" => 45,
- "." => 47,
- ">" => 48
+ 'IDENTIFIER' => 11
},
- DEFAULT => -93
+ GOTOS => {
+ 'identifier' => 157,
+ 'enum_element' => 158,
+ 'enum_elements' => 159
+ }
},
- {#State 140
+ {#State 145
+ DEFAULT => -49
+ },
+ {#State 146
+ DEFAULT => -50
+ },
+ {#State 147
+ DEFAULT => -58
+ },
+ {#State 148
ACTIONS => {
- ":" => 34,
- "<" => 37,
- "~" => 38,
- "?" => 36,
- "{" => 40,
- "=" => 43
+ 'IDENTIFIER' => 11
},
- DEFAULT => -111
+ DEFAULT => -61,
+ GOTOS => {
+ 'identifier' => 162,
+ 'bitmap_element' => 161,
+ 'bitmap_elements' => 160,
+ 'opt_bitmap_elements' => 163
+ }
},
- {#State 141
+ {#State 149
+ DEFAULT => -57
+ },
+ {#State 150
ACTIONS => {
- "[" => 155
+ "[" => 164
},
- DEFAULT => -81,
+ DEFAULT => -87,
GOTOS => {
- 'array_len' => 156
+ 'array_len' => 165
}
},
- {#State 142
+ {#State 151
ACTIONS => {
- "}" => 157
+ "}" => 166
},
- DEFAULT => -84,
+ DEFAULT => -90,
GOTOS => {
- 'optional_base_element' => 159,
- 'property_list' => 158
+ 'optional_base_element' => 168,
+ 'property_list' => 167
}
},
- {#State 143
+ {#State 152
ACTIONS => {
- "," => -77,
- "void" => 163,
- ")" => -77
+ "," => -83,
+ "void" => 172,
+ ")" => -83
},
- DEFAULT => -84,
+ DEFAULT => -90,
GOTOS => {
- 'base_element' => 160,
- 'element_list2' => 162,
- 'property_list' => 161
+ 'base_element' => 169,
+ 'element_list2' => 171,
+ 'property_list' => 170
}
},
- {#State 144
+ {#State 153
ACTIONS => {
- ";" => 164
+ ";" => 173
}
},
- {#State 145
+ {#State 154
ACTIONS => {
- "[" => 155,
- "=" => 166
+ "[" => 164,
+ "=" => 175
},
GOTOS => {
- 'array_len' => 165
+ 'array_len' => 174
}
},
- {#State 146
- DEFAULT => -74
+ {#State 155
+ DEFAULT => -80
},
- {#State 147
+ {#State 156
ACTIONS => {
- "}" => 167
+ "}" => 176
},
- DEFAULT => -84,
+ DEFAULT => -90,
GOTOS => {
- 'base_element' => 168,
- 'property_list' => 161
+ 'base_element' => 177,
+ 'property_list' => 170
}
},
- {#State 148
+ {#State 157
ACTIONS => {
- "=" => 169
+ "=" => 178
},
- DEFAULT => -47
+ DEFAULT => -53
},
- {#State 149
- DEFAULT => -45
+ {#State 158
+ DEFAULT => -51
},
- {#State 150
+ {#State 159
ACTIONS => {
- "}" => 170,
- "," => 171
+ "}" => 179,
+ "," => 180
}
},
- {#State 151
+ {#State 160
ACTIONS => {
- "," => 172
+ "," => 181
},
- DEFAULT => -56
+ DEFAULT => -62
},
- {#State 152
- DEFAULT => -53
+ {#State 161
+ DEFAULT => -59
},
- {#State 153
+ {#State 162
ACTIONS => {
- "=" => 173
+ "=" => 182
}
},
- {#State 154
+ {#State 163
ACTIONS => {
- "}" => 174
+ "}" => 183
}
},
- {#State 155
+ {#State 164
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- "]" => 175,
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ "]" => 184,
+ 'IDENTIFIER' => 11
},
- DEFAULT => -94,
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 23,
- 'anytext' => 176,
- 'text' => 24,
- 'constant' => 27
+ 'identifier' => 17,
+ 'anytext' => 185,
+ 'text' => 18,
+ 'constant' => 13
}
},
- {#State 156
+ {#State 165
ACTIONS => {
- ";" => 177
+ ";" => 186
}
},
- {#State 157
- DEFAULT => -68
+ {#State 166
+ DEFAULT => -74
},
- {#State 158
+ {#State 167
ACTIONS => {
- "[" => 7
+ "[" => 21
},
- DEFAULT => -84,
+ DEFAULT => -90,
GOTOS => {
- 'base_or_empty' => 178,
- 'base_element' => 179,
- 'empty_element' => 180,
- 'property_list' => 181
+ 'base_or_empty' => 187,
+ 'base_element' => 188,
+ 'empty_element' => 189,
+ 'property_list' => 190
}
},
- {#State 159
- DEFAULT => -67
+ {#State 168
+ DEFAULT => -73
},
- {#State 160
- DEFAULT => -79
+ {#State 169
+ DEFAULT => -85
},
- {#State 161
+ {#State 170
ACTIONS => {
- 'IDENTIFIER' => 9,
- "signed" => 102,
- "union" => 52,
- "enum" => 65,
- "bitmap" => 66,
- 'void' => 97,
- "unsigned" => 103,
- "[" => 7,
- "struct" => 63
- },
- DEFAULT => -35,
- GOTOS => {
- 'existingtype' => 101,
- 'bitmap' => 67,
- 'usertype' => 98,
- 'identifier' => 99,
- 'struct' => 59,
- 'enum' => 61,
- 'type' => 182,
- 'union' => 70,
- 'sign' => 100
+ 'IDENTIFIER' => 11,
+ "signed" => 116,
+ "union" => 81,
+ "enum" => 94,
+ "bitmap" => 95,
+ 'void' => 111,
+ "unsigned" => 117,
+ "[" => 21,
+ "struct" => 92
+ },
+ DEFAULT => -41,
+ GOTOS => {
+ 'existingtype' => 115,
+ 'bitmap' => 96,
+ 'usertype' => 112,
+ 'identifier' => 113,
+ 'struct' => 88,
+ 'enum' => 90,
+ 'type' => 191,
+ 'union' => 99,
+ 'sign' => 114
}
},
- {#State 162
+ {#State 171
ACTIONS => {
- "," => 183,
- ")" => 184
+ "," => 192,
+ ")" => 193
}
},
- {#State 163
- DEFAULT => -78
+ {#State 172
+ DEFAULT => -84
},
- {#State 164
- DEFAULT => -20
+ {#State 173
+ DEFAULT => -26
},
- {#State 165
+ {#State 174
ACTIONS => {
- "=" => 185
+ "=" => 194
}
},
- {#State 166
+ {#State 175
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
- DEFAULT => -94,
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 23,
- 'anytext' => 186,
- 'text' => 24,
- 'constant' => 27
+ 'identifier' => 17,
+ 'anytext' => 195,
+ 'text' => 18,
+ 'constant' => 13
}
},
- {#State 167
- DEFAULT => -58
+ {#State 176
+ DEFAULT => -64
},
- {#State 168
+ {#State 177
ACTIONS => {
- ";" => 187
+ ";" => 196
}
},
- {#State 169
+ {#State 178
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
- DEFAULT => -94,
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 23,
- 'anytext' => 188,
- 'text' => 24,
- 'constant' => 27
+ 'identifier' => 17,
+ 'anytext' => 197,
+ 'text' => 18,
+ 'constant' => 13
}
},
- {#State 170
- DEFAULT => -41
+ {#State 179
+ DEFAULT => -47
},
- {#State 171
+ {#State 180
ACTIONS => {
- 'IDENTIFIER' => 9
+ 'IDENTIFIER' => 11
},
GOTOS => {
- 'identifier' => 148,
- 'enum_element' => 189
+ 'identifier' => 157,
+ 'enum_element' => 198
}
},
- {#State 172
+ {#State 181
ACTIONS => {
- 'IDENTIFIER' => 9
+ 'IDENTIFIER' => 11
},
GOTOS => {
- 'identifier' => 153,
- 'bitmap_element' => 190
+ 'identifier' => 162,
+ 'bitmap_element' => 199
}
},
- {#State 173
+ {#State 182
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
- DEFAULT => -94,
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 23,
- 'anytext' => 191,
- 'text' => 24,
- 'constant' => 27
+ 'identifier' => 17,
+ 'anytext' => 200,
+ 'text' => 18,
+ 'constant' => 13
}
},
- {#State 174
- DEFAULT => -49
+ {#State 183
+ DEFAULT => -55
},
- {#State 175
+ {#State 184
ACTIONS => {
- "[" => 155
+ "[" => 164
},
- DEFAULT => -81,
+ DEFAULT => -87,
GOTOS => {
- 'array_len' => 192
+ 'array_len' => 201
}
},
- {#State 176
+ {#State 185
ACTIONS => {
- "-" => 35,
- ":" => 34,
- "?" => 36,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "&" => 41,
- "{" => 40,
- "/" => 42,
- "=" => 43,
- "|" => 45,
- "(" => 44,
- "*" => 46,
- "." => 47,
- "]" => 193,
- ">" => 48
+ "-" => 24,
+ ":" => 23,
+ "?" => 25,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "&" => 30,
+ "{" => 29,
+ "/" => 31,
+ "=" => 32,
+ "|" => 34,
+ "(" => 33,
+ "*" => 35,
+ "." => 36,
+ "]" => 202,
+ ">" => 37
}
},
- {#State 177
- DEFAULT => -27
+ {#State 186
+ DEFAULT => -33
},
- {#State 178
- DEFAULT => -65
+ {#State 187
+ DEFAULT => -71
},
- {#State 179
+ {#State 188
ACTIONS => {
- ";" => 194
+ ";" => 203
}
},
- {#State 180
- DEFAULT => -64
+ {#State 189
+ DEFAULT => -70
},
- {#State 181
+ {#State 190
ACTIONS => {
- 'IDENTIFIER' => 9,
- "signed" => 102,
- "union" => 52,
- ";" => 195,
- "enum" => 65,
- "bitmap" => 66,
- 'void' => 97,
- "unsigned" => 103,
- "[" => 7,
- "struct" => 63
- },
- DEFAULT => -35,
- GOTOS => {
- 'existingtype' => 101,
- 'bitmap' => 67,
- 'usertype' => 98,
- 'identifier' => 99,
- 'struct' => 59,
- 'enum' => 61,
- 'type' => 182,
- 'union' => 70,
- 'sign' => 100
+ 'IDENTIFIER' => 11,
+ "signed" => 116,
+ "union" => 81,
+ ";" => 204,
+ "enum" => 94,
+ "bitmap" => 95,
+ 'void' => 111,
+ "unsigned" => 117,
+ "[" => 21,
+ "struct" => 92
+ },
+ DEFAULT => -41,
+ GOTOS => {
+ 'existingtype' => 115,
+ 'bitmap' => 96,
+ 'usertype' => 112,
+ 'identifier' => 113,
+ 'struct' => 88,
+ 'enum' => 90,
+ 'type' => 191,
+ 'union' => 99,
+ 'sign' => 114
}
},
- {#State 182
- DEFAULT => -73,
+ {#State 191
+ DEFAULT => -79,
GOTOS => {
- 'pointers' => 196
+ 'pointers' => 205
}
},
- {#State 183
- DEFAULT => -84,
+ {#State 192
+ DEFAULT => -90,
GOTOS => {
- 'base_element' => 197,
- 'property_list' => 161
+ 'base_element' => 206,
+ 'property_list' => 170
}
},
- {#State 184
+ {#State 193
ACTIONS => {
- ";" => 198
+ ";" => 207
}
},
- {#State 185
+ {#State 194
ACTIONS => {
- 'CONSTANT' => 28,
- 'TEXT' => 22,
- 'IDENTIFIER' => 9
+ 'CONSTANT' => 14,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 11
},
- DEFAULT => -94,
+ DEFAULT => -100,
GOTOS => {
- 'identifier' => 23,
- 'anytext' => 199,
- 'text' => 24,
- 'constant' => 27
+ 'identifier' => 17,
+ 'anytext' => 208,
+ 'text' => 18,
+ 'constant' => 13
}
},
- {#State 186
+ {#State 195
ACTIONS => {
- "-" => 35,
- ":" => 34,
- "?" => 36,
- "<" => 37,
- ";" => 200,
- "+" => 39,
- "~" => 38,
- "&" => 41,
- "{" => 40,
- "/" => 42,
- "=" => 43,
- "|" => 45,
- "(" => 44,
- "*" => 46,
- "." => 47,
- ">" => 48
+ "-" => 24,
+ ":" => 23,
+ "?" => 25,
+ "<" => 26,
+ ";" => 209,
+ "+" => 28,
+ "~" => 27,
+ "&" => 30,
+ "{" => 29,
+ "/" => 31,
+ "=" => 32,
+ "|" => 34,
+ "(" => 33,
+ "*" => 35,
+ "." => 36,
+ ">" => 37
}
},
- {#State 187
- DEFAULT => -76
+ {#State 196
+ DEFAULT => -82
},
- {#State 188
+ {#State 197
ACTIONS => {
- "-" => 35,
- ":" => 34,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "*" => 46,
- "?" => 36,
- "{" => 40,
- "&" => 41,
- "/" => 42,
- "=" => 43,
- "(" => 44,
- "|" => 45,
- "." => 47,
- ">" => 48
- },
- DEFAULT => -48
+ "-" => 24,
+ ":" => 23,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "*" => 35,
+ "?" => 25,
+ "{" => 29,
+ "&" => 30,
+ "/" => 31,
+ "=" => 32,
+ "(" => 33,
+ "|" => 34,
+ "." => 36,
+ ">" => 37
+ },
+ DEFAULT => -54
},
- {#State 189
- DEFAULT => -46
+ {#State 198
+ DEFAULT => -52
},
- {#State 190
- DEFAULT => -54
+ {#State 199
+ DEFAULT => -60
},
- {#State 191
+ {#State 200
ACTIONS => {
- "-" => 35,
- ":" => 34,
- "<" => 37,
- "+" => 39,
- "~" => 38,
- "*" => 46,
- "?" => 36,
- "{" => 40,
- "&" => 41,
- "/" => 42,
- "=" => 43,
- "(" => 44,
- "|" => 45,
- "." => 47,
- ">" => 48
+ "-" => 24,
+ ":" => 23,
+ "<" => 26,
+ "+" => 28,
+ "~" => 27,
+ "*" => 35,
+ "?" => 25,
+ "{" => 29,
+ "&" => 30,
+ "/" => 31,
+ "=" => 32,
+ "(" => 33,
+ "|" => 34,
+ "." => 36,
+ ">" => 37
},
- DEFAULT => -57
+ DEFAULT => -63
},
- {#State 192
- DEFAULT => -82
+ {#State 201
+ DEFAULT => -88
},
- {#State 193
+ {#State 202
ACTIONS => {
- "[" => 155
+ "[" => 164
},
- DEFAULT => -81,
+ DEFAULT => -87,
GOTOS => {
- 'array_len' => 201
+ 'array_len' => 210
}
},
- {#State 194
- DEFAULT => -63
+ {#State 203
+ DEFAULT => -69
},
- {#State 195
- DEFAULT => -62
+ {#State 204
+ DEFAULT => -68
},
- {#State 196
+ {#State 205
ACTIONS => {
- 'IDENTIFIER' => 9,
- "*" => 146
+ 'IDENTIFIER' => 11,
+ "*" => 155
},
GOTOS => {
- 'identifier' => 202
+ 'identifier' => 211
}
},
- {#State 197
- DEFAULT => -80
- },
- {#State 198
- DEFAULT => -19
+ {#State 206
+ DEFAULT => -86
},
- {#State 199
- ACTIONS => {
- "-" => 35,
- ":" => 34,
- "?" => 36,
- "<" => 37,
- ";" => 203,
- "+" => 39,
- "~" => 38,
- "&" => 41,
- "{" => 40,
- "/" => 42,
- "=" => 43,
- "|" => 45,
- "(" => 44,
- "*" => 46,
- "." => 47,
- ">" => 48
- }
+ {#State 207
+ DEFAULT => -25
},
- {#State 200
- DEFAULT => -17
+ {#State 208
+ ACTIONS => {
+ "-" => 24,
+ ":" => 23,
+ "?" => 25,
+ "<" => 26,
+ ";" => 212,
+ "+" => 28,
+ "~" => 27,
+ "&" => 30,
+ "{" => 29,
+ "/" => 31,
+ "=" => 32,
+ "|" => 34,
+ "(" => 33,
+ "*" => 35,
+ "." => 36,
+ ">" => 37
+ }
+ },
+ {#State 209
+ DEFAULT => -23
},
- {#State 201
- DEFAULT => -83
+ {#State 210
+ DEFAULT => -89
},
- {#State 202
+ {#State 211
ACTIONS => {
- "[" => 155
+ "[" => 164
},
- DEFAULT => -81,
+ DEFAULT => -87,
GOTOS => {
- 'array_len' => 204
+ 'array_len' => 213
}
},
- {#State 203
- DEFAULT => -18
+ {#State 212
+ DEFAULT => -24
},
- {#State 204
- DEFAULT => -72
+ {#State 213
+ DEFAULT => -78
}
],
yyrules =>
@@ -2205,20 +2267,71 @@ sub new {
[#Rule 2
'idl', 2,
sub
-#line 19 "idl.yp"
+#line 19 "pidl/idl.yp"
{ push(@{$_[1]}, $_[2]); $_[1] }
],
[#Rule 3
'idl', 2,
sub
-#line 20 "idl.yp"
+#line 20 "pidl/idl.yp"
{ push(@{$_[1]}, $_[2]); $_[1] }
],
[#Rule 4
+ 'idl', 2,
+sub
+#line 21 "pidl/idl.yp"
+{ push(@{$_[1]}, $_[2]); $_[1] }
+ ],
+ [#Rule 5
+ 'idl', 2,
+sub
+#line 22 "pidl/idl.yp"
+{ push(@{$_[1]}, $_[2]); $_[1] }
+ ],
+ [#Rule 6
+ 'idl', 2,
+sub
+#line 23 "pidl/idl.yp"
+{ push(@{$_[1]}, $_[2]); $_[1] }
+ ],
+ [#Rule 7
+ 'import', 3,
+sub
+#line 26 "pidl/idl.yp"
+{{
+ "TYPE" => "IMPORT",
+ "PATHS" => [ $_[2] ],
+ "FILE" => $_[0]->YYData->{INPUT_FILENAME},
+ "LINE" => $_[0]->YYData->{LINE}
+ }}
+ ],
+ [#Rule 8
+ 'include', 3,
+sub
+#line 33 "pidl/idl.yp"
+{{
+ "TYPE" => "INCLUDE",
+ "PATHS" => [ $_[2] ],
+ "FILE" => $_[0]->YYData->{INPUT_FILENAME},
+ "LINE" => $_[0]->YYData->{LINE}
+ }}
+ ],
+ [#Rule 9
+ 'importlib', 3,
+sub
+#line 40 "pidl/idl.yp"
+{{
+ "TYPE" => "IMPORTLIB",
+ "PATHS" => [ $_[2] ],
+ "FILE" => $_[0]->YYData->{INPUT_FILENAME},
+ "LINE" => $_[0]->YYData->{LINE}
+ }}
+ ],
+ [#Rule 10
'coclass', 7,
sub
-#line 24 "idl.yp"
-{$_[3] => {
+#line 49 "pidl/idl.yp"
+{{
"TYPE" => "COCLASS",
"PROPERTIES" => $_[1],
"NAME" => $_[3],
@@ -2227,20 +2340,20 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 5
+ [#Rule 11
'interface_names', 0, undef
],
- [#Rule 6
+ [#Rule 12
'interface_names', 4,
sub
-#line 36 "idl.yp"
+#line 61 "pidl/idl.yp"
{ push(@{$_[1]}, $_[2]); $_[1] }
],
- [#Rule 7
+ [#Rule 13
'interface', 8,
sub
-#line 40 "idl.yp"
-{$_[3] => {
+#line 65 "pidl/idl.yp"
+{{
"TYPE" => "INTERFACE",
"PROPERTIES" => $_[1],
"NAME" => $_[3],
@@ -2250,46 +2363,46 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 8
+ [#Rule 14
'base_interface', 0, undef
],
- [#Rule 9
+ [#Rule 15
'base_interface', 2,
sub
-#line 53 "idl.yp"
+#line 78 "pidl/idl.yp"
{ $_[2] }
],
- [#Rule 10
+ [#Rule 16
'definitions', 1,
sub
-#line 57 "idl.yp"
+#line 82 "pidl/idl.yp"
{ [ $_[1] ] }
],
- [#Rule 11
+ [#Rule 17
'definitions', 2,
sub
-#line 58 "idl.yp"
+#line 83 "pidl/idl.yp"
{ push(@{$_[1]}, $_[2]); $_[1] }
],
- [#Rule 12
+ [#Rule 18
'definition', 1, undef
],
- [#Rule 13
+ [#Rule 19
'definition', 1, undef
],
- [#Rule 14
+ [#Rule 20
'definition', 1, undef
],
- [#Rule 15
+ [#Rule 21
'definition', 1, undef
],
- [#Rule 16
+ [#Rule 22
'definition', 1, undef
],
- [#Rule 17
+ [#Rule 23
'const', 7,
sub
-#line 66 "idl.yp"
+#line 91 "pidl/idl.yp"
{{
"TYPE" => "CONST",
"DTYPE" => $_[2],
@@ -2300,10 +2413,10 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 18
+ [#Rule 24
'const', 8,
sub
-#line 76 "idl.yp"
+#line 101 "pidl/idl.yp"
{{
"TYPE" => "CONST",
"DTYPE" => $_[2],
@@ -2315,10 +2428,10 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 19
+ [#Rule 25
'function', 7,
sub
-#line 90 "idl.yp"
+#line 115 "pidl/idl.yp"
{{
"TYPE" => "FUNCTION",
"NAME" => $_[3],
@@ -2329,10 +2442,10 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 20
+ [#Rule 26
'declare', 5,
sub
-#line 102 "idl.yp"
+#line 127 "pidl/idl.yp"
{{
"TYPE" => "DECLARE",
"PROPERTIES" => $_[2],
@@ -2342,43 +2455,43 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 21
+ [#Rule 27
'decl_type', 1, undef
],
- [#Rule 22
+ [#Rule 28
'decl_type', 1, undef
],
- [#Rule 23
+ [#Rule 29
'decl_type', 1, undef
],
- [#Rule 24
+ [#Rule 30
'decl_enum', 1,
sub
-#line 116 "idl.yp"
+#line 141 "pidl/idl.yp"
{{
"TYPE" => "ENUM"
}}
],
- [#Rule 25
+ [#Rule 31
'decl_bitmap', 1,
sub
-#line 122 "idl.yp"
+#line 147 "pidl/idl.yp"
{{
"TYPE" => "BITMAP"
}}
],
- [#Rule 26
+ [#Rule 32
'decl_union', 1,
sub
-#line 128 "idl.yp"
+#line 153 "pidl/idl.yp"
{{
"TYPE" => "UNION"
}}
],
- [#Rule 27
+ [#Rule 33
'typedef', 6,
sub
-#line 134 "idl.yp"
+#line 159 "pidl/idl.yp"
{{
"TYPE" => "TYPEDEF",
"PROPERTIES" => $_[2],
@@ -2389,169 +2502,169 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 28
+ [#Rule 34
'usertype', 1, undef
],
- [#Rule 29
+ [#Rule 35
'usertype', 1, undef
],
- [#Rule 30
+ [#Rule 36
'usertype', 1, undef
],
- [#Rule 31
+ [#Rule 37
'usertype', 1, undef
],
- [#Rule 32
+ [#Rule 38
'typedecl', 2,
sub
-#line 147 "idl.yp"
+#line 172 "pidl/idl.yp"
{ $_[1] }
],
- [#Rule 33
+ [#Rule 39
'sign', 1, undef
],
- [#Rule 34
+ [#Rule 40
'sign', 1, undef
],
- [#Rule 35
+ [#Rule 41
'existingtype', 0, undef
],
- [#Rule 36
+ [#Rule 42
'existingtype', 2,
sub
-#line 152 "idl.yp"
+#line 177 "pidl/idl.yp"
{ "$_[1] $_[2]" }
],
- [#Rule 37
+ [#Rule 43
'existingtype', 1, undef
],
- [#Rule 38
+ [#Rule 44
'type', 1, undef
],
- [#Rule 39
+ [#Rule 45
'type', 1, undef
],
- [#Rule 40
+ [#Rule 46
'type', 1,
sub
-#line 156 "idl.yp"
+#line 181 "pidl/idl.yp"
{ "void" }
],
- [#Rule 41
+ [#Rule 47
'enum_body', 3,
sub
-#line 158 "idl.yp"
+#line 183 "pidl/idl.yp"
{ $_[2] }
],
- [#Rule 42
+ [#Rule 48
'opt_enum_body', 0, undef
],
- [#Rule 43
+ [#Rule 49
'opt_enum_body', 1, undef
],
- [#Rule 44
+ [#Rule 50
'enum', 3,
sub
-#line 161 "idl.yp"
+#line 186 "pidl/idl.yp"
{{
"TYPE" => "ENUM",
"NAME" => $_[2],
"ELEMENTS" => $_[3]
}}
],
- [#Rule 45
+ [#Rule 51
'enum_elements', 1,
sub
-#line 169 "idl.yp"
+#line 194 "pidl/idl.yp"
{ [ $_[1] ] }
],
- [#Rule 46
+ [#Rule 52
'enum_elements', 3,
sub
-#line 170 "idl.yp"
+#line 195 "pidl/idl.yp"
{ push(@{$_[1]}, $_[3]); $_[1] }
],
- [#Rule 47
+ [#Rule 53
'enum_element', 1, undef
],
- [#Rule 48
+ [#Rule 54
'enum_element', 3,
sub
-#line 174 "idl.yp"
+#line 199 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 49
+ [#Rule 55
'bitmap_body', 3,
sub
-#line 177 "idl.yp"
+#line 202 "pidl/idl.yp"
{ $_[2] }
],
- [#Rule 50
+ [#Rule 56
'opt_bitmap_body', 0, undef
],
- [#Rule 51
+ [#Rule 57
'opt_bitmap_body', 1, undef
],
- [#Rule 52
+ [#Rule 58
'bitmap', 3,
sub
-#line 180 "idl.yp"
+#line 205 "pidl/idl.yp"
{{
"TYPE" => "BITMAP",
"NAME" => $_[2],
"ELEMENTS" => $_[3]
}}
],
- [#Rule 53
+ [#Rule 59
'bitmap_elements', 1,
sub
-#line 188 "idl.yp"
+#line 213 "pidl/idl.yp"
{ [ $_[1] ] }
],
- [#Rule 54
+ [#Rule 60
'bitmap_elements', 3,
sub
-#line 189 "idl.yp"
+#line 214 "pidl/idl.yp"
{ push(@{$_[1]}, $_[3]); $_[1] }
],
- [#Rule 55
+ [#Rule 61
'opt_bitmap_elements', 0, undef
],
- [#Rule 56
+ [#Rule 62
'opt_bitmap_elements', 1, undef
],
- [#Rule 57
+ [#Rule 63
'bitmap_element', 3,
sub
-#line 194 "idl.yp"
+#line 219 "pidl/idl.yp"
{ "$_[1] ( $_[3] )" }
],
- [#Rule 58
+ [#Rule 64
'struct_body', 3,
sub
-#line 197 "idl.yp"
+#line 222 "pidl/idl.yp"
{ $_[2] }
],
- [#Rule 59
+ [#Rule 65
'opt_struct_body', 0, undef
],
- [#Rule 60
+ [#Rule 66
'opt_struct_body', 1, undef
],
- [#Rule 61
+ [#Rule 67
'struct', 3,
sub
-#line 201 "idl.yp"
+#line 226 "pidl/idl.yp"
{{
"TYPE" => "STRUCT",
"NAME" => $_[2],
"ELEMENTS" => $_[3]
}}
],
- [#Rule 62
+ [#Rule 68
'empty_element', 2,
sub
-#line 209 "idl.yp"
+#line 234 "pidl/idl.yp"
{{
"NAME" => "",
"TYPE" => "EMPTY",
@@ -2562,53 +2675,53 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 63
+ [#Rule 69
'base_or_empty', 2, undef
],
- [#Rule 64
+ [#Rule 70
'base_or_empty', 1, undef
],
- [#Rule 65
+ [#Rule 71
'optional_base_element', 2,
sub
-#line 223 "idl.yp"
+#line 248 "pidl/idl.yp"
{ $_[2]->{PROPERTIES} = FlattenHash([$_[1],$_[2]->{PROPERTIES}]); $_[2] }
],
- [#Rule 66
+ [#Rule 72
'union_elements', 0, undef
],
- [#Rule 67
+ [#Rule 73
'union_elements', 2,
sub
-#line 228 "idl.yp"
+#line 253 "pidl/idl.yp"
{ push(@{$_[1]}, $_[2]); $_[1] }
],
- [#Rule 68
+ [#Rule 74
'union_body', 3,
sub
-#line 231 "idl.yp"
+#line 256 "pidl/idl.yp"
{ $_[2] }
],
- [#Rule 69
+ [#Rule 75
'opt_union_body', 0, undef
],
- [#Rule 70
+ [#Rule 76
'opt_union_body', 1, undef
],
- [#Rule 71
+ [#Rule 77
'union', 3,
sub
-#line 235 "idl.yp"
+#line 260 "pidl/idl.yp"
{{
"TYPE" => "UNION",
"NAME" => $_[2],
"ELEMENTS" => $_[3]
}}
],
- [#Rule 72
+ [#Rule 78
'base_element', 5,
sub
-#line 243 "idl.yp"
+#line 268 "pidl/idl.yp"
{{
"NAME" => $_[4],
"TYPE" => $_[2],
@@ -2619,238 +2732,238 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 73
+ [#Rule 79
'pointers', 0,
sub
-#line 257 "idl.yp"
+#line 282 "pidl/idl.yp"
{ 0 }
],
- [#Rule 74
+ [#Rule 80
'pointers', 2,
sub
-#line 258 "idl.yp"
+#line 283 "pidl/idl.yp"
{ $_[1]+1 }
],
- [#Rule 75
+ [#Rule 81
'element_list1', 0, undef
],
- [#Rule 76
+ [#Rule 82
'element_list1', 3,
sub
-#line 263 "idl.yp"
+#line 288 "pidl/idl.yp"
{ push(@{$_[1]}, $_[2]); $_[1] }
],
- [#Rule 77
+ [#Rule 83
'element_list2', 0, undef
],
- [#Rule 78
+ [#Rule 84
'element_list2', 1, undef
],
- [#Rule 79
+ [#Rule 85
'element_list2', 1,
sub
-#line 269 "idl.yp"
+#line 294 "pidl/idl.yp"
{ [ $_[1] ] }
],
- [#Rule 80
+ [#Rule 86
'element_list2', 3,
sub
-#line 270 "idl.yp"
+#line 295 "pidl/idl.yp"
{ push(@{$_[1]}, $_[3]); $_[1] }
],
- [#Rule 81
+ [#Rule 87
'array_len', 0, undef
],
- [#Rule 82
+ [#Rule 88
'array_len', 3,
sub
-#line 275 "idl.yp"
+#line 300 "pidl/idl.yp"
{ push(@{$_[3]}, "*"); $_[3] }
],
- [#Rule 83
+ [#Rule 89
'array_len', 4,
sub
-#line 276 "idl.yp"
+#line 301 "pidl/idl.yp"
{ push(@{$_[4]}, "$_[2]"); $_[4] }
],
- [#Rule 84
+ [#Rule 90
'property_list', 0, undef
],
- [#Rule 85
+ [#Rule 91
'property_list', 4,
sub
-#line 282 "idl.yp"
+#line 307 "pidl/idl.yp"
{ FlattenHash([$_[1],$_[3]]); }
],
- [#Rule 86
+ [#Rule 92
'properties', 1,
sub
-#line 285 "idl.yp"
+#line 310 "pidl/idl.yp"
{ $_[1] }
],
- [#Rule 87
+ [#Rule 93
'properties', 3,
sub
-#line 286 "idl.yp"
+#line 311 "pidl/idl.yp"
{ FlattenHash([$_[1], $_[3]]); }
],
- [#Rule 88
+ [#Rule 94
'property', 1,
sub
-#line 289 "idl.yp"
+#line 314 "pidl/idl.yp"
{{ "$_[1]" => "1" }}
],
- [#Rule 89
+ [#Rule 95
'property', 4,
sub
-#line 290 "idl.yp"
+#line 315 "pidl/idl.yp"
{{ "$_[1]" => "$_[3]" }}
],
- [#Rule 90
+ [#Rule 96
'listtext', 1, undef
],
- [#Rule 91
+ [#Rule 97
'listtext', 3,
sub
-#line 295 "idl.yp"
+#line 320 "pidl/idl.yp"
{ "$_[1] $_[3]" }
],
- [#Rule 92
+ [#Rule 98
'commalisttext', 1, undef
],
- [#Rule 93
+ [#Rule 99
'commalisttext', 3,
sub
-#line 300 "idl.yp"
+#line 325 "pidl/idl.yp"
{ "$_[1],$_[3]" }
],
- [#Rule 94
+ [#Rule 100
'anytext', 0,
sub
-#line 304 "idl.yp"
+#line 329 "pidl/idl.yp"
{ "" }
],
- [#Rule 95
+ [#Rule 101
'anytext', 1, undef
],
- [#Rule 96
+ [#Rule 102
'anytext', 1, undef
],
- [#Rule 97
+ [#Rule 103
'anytext', 1, undef
],
- [#Rule 98
+ [#Rule 104
'anytext', 3,
sub
-#line 306 "idl.yp"
+#line 331 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 99
+ [#Rule 105
'anytext', 3,
sub
-#line 307 "idl.yp"
+#line 332 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 100
+ [#Rule 106
'anytext', 3,
sub
-#line 308 "idl.yp"
+#line 333 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 101
+ [#Rule 107
'anytext', 3,
sub
-#line 309 "idl.yp"
+#line 334 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 102
+ [#Rule 108
'anytext', 3,
sub
-#line 310 "idl.yp"
+#line 335 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 103
+ [#Rule 109
'anytext', 3,
sub
-#line 311 "idl.yp"
+#line 336 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 104
+ [#Rule 110
'anytext', 3,
sub
-#line 312 "idl.yp"
+#line 337 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 105
+ [#Rule 111
'anytext', 3,
sub
-#line 313 "idl.yp"
+#line 338 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 106
+ [#Rule 112
'anytext', 3,
sub
-#line 314 "idl.yp"
+#line 339 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 107
+ [#Rule 113
'anytext', 3,
sub
-#line 315 "idl.yp"
+#line 340 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 108
+ [#Rule 114
'anytext', 3,
sub
-#line 316 "idl.yp"
+#line 341 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 109
+ [#Rule 115
'anytext', 3,
sub
-#line 317 "idl.yp"
+#line 342 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 110
+ [#Rule 116
'anytext', 3,
sub
-#line 318 "idl.yp"
+#line 343 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 111
+ [#Rule 117
'anytext', 5,
sub
-#line 319 "idl.yp"
+#line 344 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
],
- [#Rule 112
+ [#Rule 118
'anytext', 5,
sub
-#line 320 "idl.yp"
+#line 345 "pidl/idl.yp"
{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
],
- [#Rule 113
+ [#Rule 119
'identifier', 1, undef
],
- [#Rule 114
+ [#Rule 120
'optional_identifier', 1, undef
],
- [#Rule 115
+ [#Rule 121
'optional_identifier', 0, undef
],
- [#Rule 116
+ [#Rule 122
'constant', 1, undef
],
- [#Rule 117
+ [#Rule 123
'text', 1,
sub
-#line 334 "idl.yp"
+#line 359 "pidl/idl.yp"
{ "\"$_[1]\"" }
],
- [#Rule 118
+ [#Rule 124
'optional_semicolon', 0, undef
],
- [#Rule 119
+ [#Rule 125
'optional_semicolon', 1, undef
]
],
@@ -2858,7 +2971,7 @@ sub
bless($self,$class);
}
-#line 345 "idl.yp"
+#line 370 "pidl/idl.yp"
#####################################################################
@@ -2959,7 +3072,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);
diff --git a/source4/pidl/lib/Parse/Pidl/NDR.pm b/source4/pidl/lib/Parse/Pidl/NDR.pm
index 6a3698a920..86bd62044b 100644
--- a/source4/pidl/lib/Parse/Pidl/NDR.pm
+++ b/source4/pidl/lib/Parse/Pidl/NDR.pm
@@ -661,6 +661,7 @@ sub Parse($)
foreach (@{$idl}) {
($_->{TYPE} eq "INTERFACE") && push(@ndr, ParseInterface($_));
+ ($_->{TYPE} eq "IMPORT") && push(@ndr, $_);
}
return \@ndr;
@@ -1044,6 +1045,14 @@ sub ValidInterface($)
my($interface) = shift;
my($data) = $interface->{DATA};
+ if (has_property($interface, "depends")) {
+ nonfatal $interface, "depends() is pidl-specific and deprecated. Use `import' instead";
+ }
+
+ if (has_property($interface, "helper")) {
+ nonfatal $interface, "helper() is pidl-specific and deprecated. Use `include' instead";
+ }
+
ValidProperties($interface,"INTERFACE");
if (has_property($interface, "pointer_default") &&
@@ -1081,6 +1090,8 @@ sub Validate($)
foreach my $x (@{$idl}) {
($x->{TYPE} eq "INTERFACE") &&
ValidInterface($x);
+ ($x->{TYPE} eq "IMPORTLIB") &&
+ nonfatal($x, "importlib() not supported");
}
}
diff --git a/source4/pidl/lib/Parse/Pidl/ODL.pm b/source4/pidl/lib/Parse/Pidl/ODL.pm
index c8d1de3d43..ee8d030a37 100644
--- a/source4/pidl/lib/Parse/Pidl/ODL.pm
+++ b/source4/pidl/lib/Parse/Pidl/ODL.pm
@@ -18,6 +18,7 @@ sub get_interface($$)
my($if,$n) = @_;
foreach(@$if) {
+ next if ($_->{TYPE} ne "INTERFACE");
return $_ if($_->{NAME} eq $n);
}
@@ -62,8 +63,10 @@ sub ReplaceInterfacePointers($)
sub ODL2IDL($)
{
my $odl = shift;
-
- foreach my $x (@{$odl}) {
+ my $addedorpc = 0;
+
+ foreach my $x (@$odl) {
+ next if ($x->{TYPE} ne "INTERFACE");
# Add [in] ORPCTHIS *this, [out] ORPCTHAT *that
# and replace interfacepointers with MInterfacePointer
# for 'object' interfaces
@@ -72,13 +75,7 @@ sub ODL2IDL($)
($e->{TYPE} eq "FUNCTION") && FunctionAddObjArgs($e);
ReplaceInterfacePointers($e);
}
- # Object interfaces use ORPC
- my @depends = ();
- if(has_property($x, "depends")) {
- @depends = split /,/, $x->{PROPERTIES}->{depends};
- }
- push @depends, "orpc";
- $x->{PROPERTIES}->{depends} = join(',',@depends);
+ $addedorpc = 1;
}
if ($x->{BASE}) {
@@ -92,6 +89,13 @@ sub ODL2IDL($)
}
}
+ unshift (@$odl, {
+ TYPE => "IMPORT",
+ PATHS => [ "\"orpc.idl\"" ],
+ FILE => undef,
+ LINE => undef
+ }) if ($addedorpc);
+
return $odl;
}
diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm b/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm
index 218b882323..bb3b36dca4 100644
--- a/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm
+++ b/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm
@@ -730,6 +730,16 @@ sub EjsConst($)
$constants{$const->{NAME}} = $const->{VALUE};
}
+sub EjsImport
+{
+ my @imports = @_;
+ foreach (@imports) {
+ s/\.idl\"$//;
+ s/^\"//;
+ pidl_hdr "#include \"librpc/gen_ndr/ndr_$_\_ejs\.h\"\n";
+ }
+}
+
#####################################################################
# parse the interface definitions
sub EjsInterface($$)
@@ -744,9 +754,7 @@ sub EjsInterface($$)
pidl_hdr "#define _HEADER_EJS_$interface->{NAME}\n\n";
if (has_property($interface, "depends")) {
- foreach (split / /, $interface->{PROPERTIES}->{depends}) {
- pidl_hdr "#include \"librpc/gen_ndr/ndr_$_\_ejs\.h\"\n";
- }
+ EjsImport(split / /, $interface->{PROPERTIES}->{depends});
}
pidl_hdr "\n";
@@ -834,8 +842,9 @@ sub Parse($$)
($x->{TYPE} eq "INTERFACE") && NeededInterface($x, \%needed);
}
- foreach my $x (@{$ndr}) {
+ foreach my $x (@$ndr) {
($x->{TYPE} eq "INTERFACE") && EjsInterface($x, \%needed);
+ ($x->{TYPE} eq "IMPORT") && EjsImport(@{$x->{PATHS}});
}
return ($res_hdr, $res);
diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/Header.pm b/source4/pidl/lib/Parse/Pidl/Samba4/Header.pm
index 6fb3ee2eec..94346efe4b 100644
--- a/source4/pidl/lib/Parse/Pidl/Samba4/Header.pm
+++ b/source4/pidl/lib/Parse/Pidl/Samba4/Header.pm
@@ -307,6 +307,24 @@ sub HeaderFunction($)
pidl "};\n\n";
}
+sub HeaderImport
+{
+ my @imports = @_;
+ foreach (@imports) {
+ s/\.idl\"$//;
+ s/^\"//;
+ pidl "#include \"librpc/gen_ndr/$_\.h\"\n";
+ }
+}
+
+sub HeaderInclude
+{
+ my @includes = @_;
+ foreach (@includes) {
+ pidl "#include \"$_\"\n";
+ }
+}
+
#####################################################################
# parse the interface definitions
sub HeaderInterface($)
@@ -317,10 +335,7 @@ sub HeaderInterface($)
pidl "#define _HEADER_$interface->{NAME}\n\n";
if (defined $interface->{PROPERTIES}->{depends}) {
- my @d = split / /, $interface->{PROPERTIES}->{depends};
- foreach my $i (@d) {
- pidl "#include \"librpc/gen_ndr/$i\.h\"\n";
- }
+ HeaderImport(split / /, $interface->{PROPERTIES}->{depends});
}
foreach my $d (@{$interface->{DATA}}) {
@@ -358,6 +373,8 @@ sub Parse($)
foreach (@{$idl}) {
($_->{TYPE} eq "INTERFACE") && HeaderInterface($_);
+ ($_->{TYPE} eq "IMPORT") && HeaderImport(@{$_->{PATHS}});
+ ($_->{TYPE} eq "INCLUDE") && HeaderInclude(@{$_->{PATHS}});
}
return $res;
}
diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
index 1bb277fd0e..80d02cb533 100644
--- a/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
+++ b/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
@@ -2221,6 +2221,28 @@ sub FunctionTable($)
}
#####################################################################
+# generate include statements for imported idl files
+sub HeaderImport
+{
+ my @imports = @_;
+ foreach (@imports) {
+ s/\.idl\"$//;
+ s/^\"//;
+ pidl choose_header("librpc/gen_ndr/ndr_$_\.h", "gen_ndr/ndr_$_.h");
+ }
+}
+
+#####################################################################
+# generate include statements for included header files
+sub HeaderInclude
+{
+ my @includes = @_;
+ foreach (@includes) {
+ pidl_hdr "#include $_";
+ }
+}
+
+#####################################################################
# generate prototypes and defines for the interface definitions
# FIXME: these prototypes are for the DCE/RPC client functions, not the
# NDR parser and so do not belong here, technically speaking
@@ -2237,16 +2259,11 @@ sub HeaderInterface($)
}
if (defined $interface->{PROPERTIES}->{depends}) {
- my @d = split / /, $interface->{PROPERTIES}->{depends};
- foreach my $i (@d) {
- pidl choose_header("librpc/gen_ndr/ndr_$i\.h", "gen_ndr/ndr_$i.h");
- }
+ HeaderImport(split / /, $interface->{PROPERTIES}->{depends});
}
if (defined $interface->{PROPERTIES}->{helper}) {
- foreach (split / /, $interface->{PROPERTIES}->{helper}) {
- pidl_hdr "#include $_";
- }
+ HeaderInclude(split / /, $interface->{PROPERTIES}->{helper});
}
if (defined $interface->{PROPERTIES}->{uuid}) {
@@ -2390,6 +2407,8 @@ sub Parse($$$)
foreach (@{$ndr}) {
($_->{TYPE} eq "INTERFACE") && ParseInterface($_, \%needed);
+ ($_->{TYPE} eq "IMPORT") && HeaderImport(@{$_->{PATHS}});
+ ($_->{TYPE} eq "INCLUDE") && HeaderInclude(@{$_->{PATHS}});
}
return ($res_hdr, $res);
diff --git a/source4/pidl/lib/Parse/Pidl/Wireshark/NDR.pm b/source4/pidl/lib/Parse/Pidl/Wireshark/NDR.pm
index 8c75d590e0..7b8691e044 100644
--- a/source4/pidl/lib/Parse/Pidl/Wireshark/NDR.pm
+++ b/source4/pidl/lib/Parse/Pidl/Wireshark/NDR.pm
@@ -717,6 +717,25 @@ sub RegisterInterfaceHandoff($)
}
}
+sub ProcessInclude
+{
+ my @includes = @_;
+ foreach (@includes) {
+ pidl_hdr "#include \"$_\"\n";
+ }
+}
+
+sub ProcessImport
+{
+ my @imports = @_;
+ foreach (@imports) {
+ next if($_ eq "security");
+ s/\.idl\"$//;
+ s/^\"//;
+ pidl_hdr "#include \"packet-dcerpc-$_\.h\"\n";
+ }
+}
+
sub ProcessInterface($)
{
my ($x) = @_;
@@ -728,12 +747,8 @@ sub ProcessInterface($)
pidl_hdr "#define $define";
pidl_hdr "";
- if (defined $x->{PROPERTIES}->{depends}) {
- foreach (split / /, $x->{PROPERTIES}->{depends}) {
- next if($_ eq "security");
- pidl_hdr "#include \"packet-dcerpc-$_\.h\"\n";
- }
- }
+ ProcessImport(split / /, $x->{PROPERTIES}->{depends}) if
+ (defined $x->{PROPERTIES}->{depends});
pidl_def "static gint proto_dcerpc_$x->{NAME} = -1;";
register_ett("ett_dcerpc_$x->{NAME}");
@@ -897,7 +912,11 @@ sub Parse($$$$)
# Wireshark protocol registration
- ProcessInterface($_) foreach (@$ndr);
+ foreach (@$ndr) {
+ ProcessInterface($_) if ($_->{TYPE} eq "INTERFACE");
+ ProcessImport(@{$_->{PATHS}}) if ($_->{TYPE} eq "IMPORT");
+ ProcessInclude(@{$_->{PATHS}}) if ($_->{TYPE} eq "INCLUDE");
+ }
$res{ett} = DumpEttDeclaration();
$res{hf} = DumpHfDeclaration();