summaryrefslogtreecommitdiff
path: root/source4/build/pidl
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2005-05-27 18:14:43 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:17:07 -0500
commit55781cdce67bdba9c6f37024ae1c76c74a8881de (patch)
tree7ade50546655331b30e5ed9ba042617c4f8dd6ff /source4/build/pidl
parent50d2bf00660c8c2c12cd1ea40b2212aa8250e611 (diff)
downloadsamba-55781cdce67bdba9c6f37024ae1c76c74a8881de.tar.gz
samba-55781cdce67bdba9c6f37024ae1c76c74a8881de.tar.bz2
samba-55781cdce67bdba9c6f37024ae1c76c74a8881de.zip
r7036: Allow more operations in several properties (such as size_is, length_is,
switch_is, etc) and simplify the code involved (This used to be commit 86de98ee09348297f2c30ce15888ba5e5637c078)
Diffstat (limited to 'source4/build/pidl')
-rw-r--r--source4/build/pidl/idl.pm901
-rw-r--r--source4/build/pidl/idl.yp1
-rw-r--r--source4/build/pidl/ndr_parser.pm32
3 files changed, 491 insertions, 443 deletions
diff --git a/source4/build/pidl/idl.pm b/source4/build/pidl/idl.pm
index 1e15db18c8..21c06ab200 100644
--- a/source4/build/pidl/idl.pm
+++ b/source4/build/pidl/idl.pm
@@ -559,7 +559,7 @@ sub new {
}
},
{#State 9
- DEFAULT => -85
+ DEFAULT => -86
},
{#State 10
ACTIONS => {
@@ -643,7 +643,7 @@ sub new {
}
},
{#State 22
- DEFAULT => -87
+ DEFAULT => -88
},
{#State 23
DEFAULT => -71
@@ -655,29 +655,30 @@ sub new {
ACTIONS => {
"-" => 34,
"<" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
- "|" => 40,
+ "+" => 37,
+ "~" => 36,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
"(" => 41,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "|" => 42,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
},
DEFAULT => -66
},
{#State 26
ACTIONS => {
- "," => 45,
- ")" => 46
+ "," => 46,
+ ")" => 47
}
},
{#State 27
DEFAULT => -72
},
{#State 28
- DEFAULT => -86
+ DEFAULT => -87
},
{#State 29
DEFAULT => -63
@@ -687,28 +688,28 @@ sub new {
},
{#State 31
ACTIONS => {
- "typedef" => 47,
- "declare" => 52,
- "const" => 55
+ "typedef" => 48,
+ "declare" => 53,
+ "const" => 56
},
DEFAULT => -60,
GOTOS => {
- 'const' => 54,
- 'declare' => 53,
- 'function' => 48,
- 'typedef' => 56,
- 'definitions' => 49,
- 'definition' => 51,
- 'property_list' => 50
+ 'const' => 55,
+ 'declare' => 54,
+ 'function' => 49,
+ 'typedef' => 57,
+ 'definitions' => 50,
+ 'definition' => 52,
+ 'property_list' => 51
}
},
{#State 32
ACTIONS => {
- ";" => 58
+ ";" => 59
},
- DEFAULT => -88,
+ DEFAULT => -89,
GOTOS => {
- 'optional_semicolon' => 57
+ 'optional_semicolon' => 58
}
},
{#State 33
@@ -716,7 +717,7 @@ sub new {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 59
+ 'identifier' => 60
}
},
{#State 34
@@ -729,7 +730,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 60,
+ 'anytext' => 61,
'constant' => 27
}
},
@@ -743,7 +744,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 61,
+ 'anytext' => 62,
'constant' => 27
}
},
@@ -757,7 +758,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 62,
+ 'anytext' => 63,
'constant' => 27
}
},
@@ -771,9 +772,8 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 63,
- 'constant' => 27,
- 'commalisttext' => 64
+ 'anytext' => 64,
+ 'constant' => 27
}
},
{#State 38
@@ -787,7 +787,8 @@ sub new {
'identifier' => 23,
'text' => 24,
'anytext' => 65,
- 'constant' => 27
+ 'constant' => 27,
+ 'commalisttext' => 66
}
},
{#State 39
@@ -800,7 +801,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 66,
+ 'anytext' => 67,
'constant' => 27
}
},
@@ -814,7 +815,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 67,
+ 'anytext' => 68,
'constant' => 27
}
},
@@ -828,9 +829,9 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 63,
+ 'anytext' => 65,
'constant' => 27,
- 'commalisttext' => 68
+ 'commalisttext' => 69
}
},
{#State 42
@@ -843,7 +844,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 69,
+ 'anytext' => 70,
'constant' => 27
}
},
@@ -857,7 +858,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 70,
+ 'anytext' => 71,
'constant' => 27
}
},
@@ -871,7 +872,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 71,
+ 'anytext' => 72,
'constant' => 27
}
},
@@ -885,312 +886,354 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 72,
+ 'anytext' => 73,
'constant' => 27
}
},
{#State 46
- DEFAULT => -65
+ ACTIONS => {
+ 'CONSTANT' => 28,
+ 'TEXT' => 22,
+ 'IDENTIFIER' => 9
+ },
+ DEFAULT => -70,
+ GOTOS => {
+ 'identifier' => 23,
+ 'text' => 24,
+ 'anytext' => 74,
+ 'constant' => 27
+ }
},
{#State 47
+ DEFAULT => -65
+ },
+ {#State 48
DEFAULT => -60,
GOTOS => {
- 'property_list' => 73
+ 'property_list' => 75
}
},
- {#State 48
+ {#State 49
DEFAULT => -12
},
- {#State 49
+ {#State 50
ACTIONS => {
- "}" => 74,
- "typedef" => 47,
- "declare" => 52,
- "const" => 55
+ "}" => 76,
+ "typedef" => 48,
+ "declare" => 53,
+ "const" => 56
},
DEFAULT => -60,
GOTOS => {
- 'const' => 54,
- 'declare' => 53,
- 'function' => 48,
- 'typedef' => 56,
- 'definition' => 75,
- 'property_list' => 50
+ 'const' => 55,
+ 'declare' => 54,
+ 'function' => 49,
+ 'typedef' => 57,
+ 'definition' => 77,
+ 'property_list' => 51
}
},
- {#State 50
+ {#State 51
ACTIONS => {
'IDENTIFIER' => 9,
- "union" => 76,
- "enum" => 77,
+ "union" => 78,
+ "enum" => 79,
"[" => 7,
- 'void' => 79,
- "bitmap" => 78,
- "struct" => 86
+ 'void' => 81,
+ "bitmap" => 80,
+ "struct" => 88
},
GOTOS => {
- 'identifier' => 81,
- 'struct' => 82,
- 'enum' => 83,
- 'type' => 84,
- 'union' => 85,
- 'bitmap' => 80
+ 'identifier' => 83,
+ 'struct' => 84,
+ 'enum' => 85,
+ 'type' => 86,
+ 'union' => 87,
+ 'bitmap' => 82
}
},
- {#State 51
+ {#State 52
DEFAULT => -10
},
- {#State 52
+ {#State 53
DEFAULT => -60,
GOTOS => {
- 'property_list' => 87
+ 'property_list' => 89
}
},
- {#State 53
+ {#State 54
DEFAULT => -15
},
- {#State 54
+ {#State 55
DEFAULT => -13
},
- {#State 55
+ {#State 56
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 88
+ 'identifier' => 90
}
},
- {#State 56
- DEFAULT => -14
- },
{#State 57
- DEFAULT => -4
+ DEFAULT => -14
},
{#State 58
- DEFAULT => -89
+ DEFAULT => -4
},
{#State 59
+ DEFAULT => -90
+ },
+ {#State 60
ACTIONS => {
- ";" => 89
+ ";" => 91
}
},
- {#State 60
+ {#State 61
ACTIONS => {
"<" => 35,
- "{" => 37
+ "~" => 36,
+ "{" => 38
},
DEFAULT => -74
},
- {#State 61
+ {#State 62
ACTIONS => {
"-" => 34,
"<" => 35,
- "+" => 36,
- "*" => 42,
- "{" => 37,
- "&" => 38,
- "/" => 39,
- "|" => 40,
+ "+" => 37,
+ "~" => 36,
+ "*" => 43,
+ "{" => 38,
+ "&" => 39,
+ "/" => 40,
+ "|" => 42,
"(" => 41,
- "." => 43,
- ">" => 44
+ "." => 44,
+ ">" => 45
},
DEFAULT => -78
},
- {#State 62
+ {#State 63
ACTIONS => {
+ "-" => 34,
"<" => 35,
- "{" => 37
+ "+" => 37,
+ "~" => 36,
+ "*" => 43,
+ "{" => 38,
+ "&" => 39,
+ "/" => 40,
+ "|" => 42,
+ "(" => 41,
+ "." => 44,
+ ">" => 45
+ },
+ DEFAULT => -83
+ },
+ {#State 64
+ ACTIONS => {
+ "<" => 35,
+ "~" => 36,
+ "{" => 38
},
DEFAULT => -82
},
- {#State 63
+ {#State 65
ACTIONS => {
"-" => 34,
"<" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
+ "+" => 37,
+ "~" => 36,
+ "*" => 43,
+ "{" => 38,
+ "&" => 39,
+ "/" => 40,
+ "|" => 42,
"(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "." => 44,
+ ">" => 45
},
DEFAULT => -68
},
- {#State 64
+ {#State 66
ACTIONS => {
- "}" => 90,
- "," => 91
+ "}" => 92,
+ "," => 93
}
},
- {#State 65
+ {#State 67
ACTIONS => {
"<" => 35,
- "{" => 37
+ "~" => 36,
+ "{" => 38
},
DEFAULT => -80
},
- {#State 66
+ {#State 68
ACTIONS => {
"<" => 35,
- "{" => 37
+ "~" => 36,
+ "{" => 38
},
DEFAULT => -81
},
- {#State 67
+ {#State 69
+ ACTIONS => {
+ "," => 93,
+ ")" => 94
+ }
+ },
+ {#State 70
ACTIONS => {
"<" => 35,
- "{" => 37
+ "~" => 36,
+ "{" => 38
},
DEFAULT => -79
},
- {#State 68
- ACTIONS => {
- "," => 91,
- ")" => 92
- }
- },
- {#State 69
+ {#State 71
ACTIONS => {
"<" => 35,
- "{" => 37
+ "~" => 36,
+ "{" => 38
},
DEFAULT => -76
},
- {#State 70
+ {#State 72
ACTIONS => {
"<" => 35,
- "{" => 37
+ "~" => 36,
+ "{" => 38
},
DEFAULT => -75
},
- {#State 71
+ {#State 73
ACTIONS => {
"<" => 35,
- "{" => 37
+ "~" => 36,
+ "{" => 38
},
DEFAULT => -77
},
- {#State 72
+ {#State 74
ACTIONS => {
"-" => 34,
"<" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
+ "+" => 37,
+ "~" => 36,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
"(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "|" => 42,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
},
DEFAULT => -67
},
- {#State 73
+ {#State 75
ACTIONS => {
'IDENTIFIER' => 9,
- "union" => 76,
- "enum" => 77,
+ "union" => 78,
+ "enum" => 79,
"[" => 7,
- 'void' => 79,
- "bitmap" => 78,
- "struct" => 86
+ 'void' => 81,
+ "bitmap" => 80,
+ "struct" => 88
},
GOTOS => {
- 'identifier' => 81,
- 'struct' => 82,
- 'enum' => 83,
- 'type' => 93,
- 'union' => 85,
- 'bitmap' => 80
+ 'identifier' => 83,
+ 'struct' => 84,
+ 'enum' => 85,
+ 'type' => 95,
+ 'union' => 87,
+ 'bitmap' => 82
}
},
- {#State 74
+ {#State 76
ACTIONS => {
- ";" => 58
+ ";" => 59
},
- DEFAULT => -88,
+ DEFAULT => -89,
GOTOS => {
- 'optional_semicolon' => 94
+ 'optional_semicolon' => 96
}
},
- {#State 75
+ {#State 77
DEFAULT => -11
},
- {#State 76
+ {#State 78
ACTIONS => {
- "{" => 95
+ "{" => 97
}
},
- {#State 77
+ {#State 79
ACTIONS => {
- "{" => 96
+ "{" => 98
}
},
- {#State 78
+ {#State 80
ACTIONS => {
- "{" => 97
+ "{" => 99
}
},
- {#State 79
+ {#State 81
DEFAULT => -30
},
- {#State 80
+ {#State 82
DEFAULT => -28
},
- {#State 81
+ {#State 83
DEFAULT => -29
},
- {#State 82
+ {#State 84
DEFAULT => -25
},
- {#State 83
+ {#State 85
DEFAULT => -27
},
- {#State 84
+ {#State 86
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 98
+ 'identifier' => 100
}
},
- {#State 85
+ {#State 87
DEFAULT => -26
},
- {#State 86
+ {#State 88
ACTIONS => {
- "{" => 99
+ "{" => 101
}
},
- {#State 87
+ {#State 89
ACTIONS => {
- "enum" => 100,
+ "enum" => 102,
"[" => 7,
- "bitmap" => 101
+ "bitmap" => 103
},
GOTOS => {
- 'decl_enum' => 102,
- 'decl_bitmap' => 103,
- 'decl_type' => 104
+ 'decl_enum' => 104,
+ 'decl_bitmap' => 105,
+ 'decl_type' => 106
}
},
- {#State 88
+ {#State 90
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 105
+ 'identifier' => 107
}
},
- {#State 89
+ {#State 91
DEFAULT => -6
},
- {#State 90
+ {#State 92
ACTIONS => {
'CONSTANT' => 28,
'TEXT' => 22,
@@ -1200,11 +1243,11 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 106,
+ 'anytext' => 108,
'constant' => 27
}
},
- {#State 91
+ {#State 93
ACTIONS => {
'CONSTANT' => 28,
'TEXT' => 22,
@@ -1214,11 +1257,11 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 107,
+ 'anytext' => 109,
'constant' => 27
}
},
- {#State 92
+ {#State 94
ACTIONS => {
'CONSTANT' => 28,
'TEXT' => 22,
@@ -1228,260 +1271,263 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 108,
+ 'anytext' => 110,
'constant' => 27
}
},
- {#State 93
+ {#State 95
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 109
+ 'identifier' => 111
}
},
- {#State 94
+ {#State 96
DEFAULT => -7
},
- {#State 95
+ {#State 97
DEFAULT => -45,
GOTOS => {
- 'union_elements' => 110
+ 'union_elements' => 112
}
},
- {#State 96
+ {#State 98
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 111,
- 'enum_element' => 112,
- 'enum_elements' => 113
+ 'identifier' => 113,
+ 'enum_element' => 114,
+ 'enum_elements' => 115
}
},
- {#State 97
+ {#State 99
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 116,
- 'bitmap_elements' => 115,
- 'bitmap_element' => 114
+ 'identifier' => 118,
+ 'bitmap_elements' => 117,
+ 'bitmap_element' => 116
}
},
- {#State 98
+ {#State 100
ACTIONS => {
- "(" => 117
+ "(" => 119
}
},
- {#State 99
+ {#State 101
DEFAULT => -51,
GOTOS => {
- 'element_list1' => 118
+ 'element_list1' => 120
}
},
- {#State 100
+ {#State 102
DEFAULT => -22
},
- {#State 101
+ {#State 103
DEFAULT => -23
},
- {#State 102
+ {#State 104
DEFAULT => -20
},
- {#State 103
+ {#State 105
DEFAULT => -21
},
- {#State 104
+ {#State 106
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 119
+ 'identifier' => 121
}
},
- {#State 105
+ {#State 107
ACTIONS => {
- "[" => 122,
- "=" => 121
+ "[" => 124,
+ "=" => 123
},
GOTOS => {
- 'array_len' => 120
+ 'array_len' => 122
}
},
- {#State 106
+ {#State 108
ACTIONS => {
"-" => 34,
"<" => 35,
- "+" => 36,
- "*" => 42,
- "{" => 37,
- "&" => 38,
- "/" => 39,
- "|" => 40,
+ "+" => 37,
+ "~" => 36,
+ "*" => 43,
+ "{" => 38,
+ "&" => 39,
+ "/" => 40,
+ "|" => 42,
"(" => 41,
- "." => 43,
- ">" => 44
+ "." => 44,
+ ">" => 45
},
- DEFAULT => -84
+ DEFAULT => -85
},
- {#State 107
+ {#State 109
ACTIONS => {
"-" => 34,
"<" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
+ "+" => 37,
+ "~" => 36,
+ "*" => 43,
+ "{" => 38,
+ "&" => 39,
+ "/" => 40,
+ "|" => 42,
"(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "." => 44,
+ ">" => 45
},
DEFAULT => -69
},
- {#State 108
+ {#State 110
ACTIONS => {
"<" => 35,
- "{" => 37
+ "~" => 36,
+ "{" => 38
},
- DEFAULT => -83
+ DEFAULT => -84
},
- {#State 109
+ {#State 111
ACTIONS => {
- "[" => 122
+ "[" => 124
},
DEFAULT => -57,
GOTOS => {
- 'array_len' => 123
+ 'array_len' => 125
}
},
- {#State 110
+ {#State 112
ACTIONS => {
- "}" => 124
+ "}" => 126
},
DEFAULT => -60,
GOTOS => {
- 'optional_base_element' => 126,
- 'property_list' => 125
+ 'optional_base_element' => 128,
+ 'property_list' => 127
}
},
- {#State 111
+ {#State 113
ACTIONS => {
- "=" => 127
+ "=" => 129
},
DEFAULT => -34
},
- {#State 112
+ {#State 114
DEFAULT => -32
},
- {#State 113
+ {#State 115
ACTIONS => {
- "}" => 128,
- "," => 129
+ "}" => 130,
+ "," => 131
}
},
- {#State 114
+ {#State 116
DEFAULT => -37
},
- {#State 115
+ {#State 117
ACTIONS => {
- "}" => 130,
- "," => 131
+ "}" => 132,
+ "," => 133
}
},
- {#State 116
+ {#State 118
ACTIONS => {
- "=" => 132
+ "=" => 134
}
},
- {#State 117
+ {#State 119
ACTIONS => {
"," => -53,
- "void" => 135,
+ "void" => 137,
")" => -53
},
DEFAULT => -60,
GOTOS => {
- 'base_element' => 133,
- 'element_list2' => 136,
- 'property_list' => 134
+ 'base_element' => 135,
+ 'element_list2' => 138,
+ 'property_list' => 136
}
},
- {#State 118
+ {#State 120
ACTIONS => {
- "}" => 137
+ "}" => 139
},
DEFAULT => -60,
GOTOS => {
- 'base_element' => 138,
- 'property_list' => 134
+ 'base_element' => 140,
+ 'property_list' => 136
}
},
- {#State 119
+ {#State 121
ACTIONS => {
- ";" => 139
+ ";" => 141
}
},
- {#State 120
+ {#State 122
ACTIONS => {
- "=" => 140
+ "=" => 142
}
},
- {#State 121
+ {#State 123
ACTIONS => {
- 'IDENTIFIER' => 9,
'CONSTANT' => 28,
- 'TEXT' => 22
+ 'TEXT' => 22,
+ 'IDENTIFIER' => 9
},
DEFAULT => -70,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 141,
+ 'anytext' => 143,
'constant' => 27
}
},
- {#State 122
+ {#State 124
ACTIONS => {
- 'IDENTIFIER' => 9,
'CONSTANT' => 28,
'TEXT' => 22,
- "]" => 143
+ "]" => 145,
+ 'IDENTIFIER' => 9
},
DEFAULT => -70,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 142,
+ 'anytext' => 144,
'constant' => 27
}
},
- {#State 123
+ {#State 125
ACTIONS => {
- ";" => 144
+ ";" => 146
}
},
- {#State 124
+ {#State 126
DEFAULT => -47
},
- {#State 125
+ {#State 127
ACTIONS => {
"[" => 7
},
DEFAULT => -60,
GOTOS => {
- 'base_or_empty' => 145,
- 'base_element' => 146,
- 'empty_element' => 147,
- 'property_list' => 148
+ 'base_or_empty' => 147,
+ 'base_element' => 148,
+ 'empty_element' => 149,
+ 'property_list' => 150
}
},
- {#State 126
+ {#State 128
DEFAULT => -46
},
- {#State 127
+ {#State 129
ACTIONS => {
'CONSTANT' => 28,
'TEXT' => 22,
@@ -1491,35 +1537,35 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 149,
+ 'anytext' => 151,
'constant' => 27
}
},
- {#State 128
+ {#State 130
DEFAULT => -31
},
- {#State 129
+ {#State 131
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 111,
- 'enum_element' => 150
+ 'identifier' => 113,
+ 'enum_element' => 152
}
},
- {#State 130
+ {#State 132
DEFAULT => -36
},
- {#State 131
+ {#State 133
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 116,
- 'bitmap_element' => 151
+ 'identifier' => 118,
+ 'bitmap_element' => 153
}
},
- {#State 132
+ {#State 134
ACTIONS => {
'CONSTANT' => 28,
'TEXT' => 22,
@@ -1529,271 +1575,276 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 152,
+ 'anytext' => 154,
'constant' => 27
}
},
- {#State 133
+ {#State 135
DEFAULT => -55
},
- {#State 134
+ {#State 136
ACTIONS => {
'IDENTIFIER' => 9,
- "union" => 76,
- "enum" => 77,
+ "union" => 78,
+ "enum" => 79,
"[" => 7,
- 'void' => 79,
- "bitmap" => 78,
- "struct" => 86
+ 'void' => 81,
+ "bitmap" => 80,
+ "struct" => 88
},
GOTOS => {
- 'identifier' => 81,
- 'struct' => 82,
- 'enum' => 83,
- 'type' => 153,
- 'union' => 85,
- 'bitmap' => 80
+ 'identifier' => 83,
+ 'struct' => 84,
+ 'enum' => 85,
+ 'type' => 155,
+ 'union' => 87,
+ 'bitmap' => 82
}
},
- {#State 135
+ {#State 137
DEFAULT => -54
},
- {#State 136
+ {#State 138
ACTIONS => {
- "," => 154,
- ")" => 155
+ "," => 156,
+ ")" => 157
}
},
- {#State 137
+ {#State 139
DEFAULT => -40
},
- {#State 138
+ {#State 140
ACTIONS => {
- ";" => 156
+ ";" => 158
}
},
- {#State 139
+ {#State 141
DEFAULT => -19
},
- {#State 140
+ {#State 142
ACTIONS => {
- 'IDENTIFIER' => 9,
'CONSTANT' => 28,
- 'TEXT' => 22
+ 'TEXT' => 22,
+ 'IDENTIFIER' => 9
},
DEFAULT => -70,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 157,
+ 'anytext' => 159,
'constant' => 27
}
},
- {#State 141
+ {#State 143
ACTIONS => {
"-" => 34,
"<" => 35,
- ";" => 158,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
+ ";" => 160,
+ "+" => 37,
+ "~" => 36,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
"(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "|" => 42,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
}
},
- {#State 142
+ {#State 144
ACTIONS => {
"-" => 34,
"<" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
+ "+" => 37,
+ "~" => 36,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
"(" => 41,
- "|" => 40,
- "*" => 42,
- "]" => 159,
- "." => 43,
- ">" => 44
+ "|" => 42,
+ "*" => 43,
+ "]" => 161,
+ "." => 44,
+ ">" => 45
}
},
- {#State 143
+ {#State 145
ACTIONS => {
- "[" => 122
+ "[" => 124
},
DEFAULT => -57,
GOTOS => {
- 'array_len' => 160
+ 'array_len' => 162
}
},
- {#State 144
+ {#State 146
DEFAULT => -24
},
- {#State 145
+ {#State 147
DEFAULT => -44
},
- {#State 146
+ {#State 148
ACTIONS => {
- ";" => 161
+ ";" => 163
}
},
- {#State 147
+ {#State 149
DEFAULT => -43
},
- {#State 148
+ {#State 150
ACTIONS => {
'IDENTIFIER' => 9,
- "union" => 76,
- ";" => 162,
- "enum" => 77,
+ "union" => 78,
+ ";" => 164,
+ "enum" => 79,
"[" => 7,
- 'void' => 79,
- "bitmap" => 78,
- "struct" => 86
+ 'void' => 81,
+ "bitmap" => 80,
+ "struct" => 88
},
GOTOS => {
- 'identifier' => 81,
- 'struct' => 82,
- 'enum' => 83,
- 'type' => 153,
- 'union' => 85,
- 'bitmap' => 80
+ 'identifier' => 83,
+ 'struct' => 84,
+ 'enum' => 85,
+ 'type' => 155,
+ 'union' => 87,
+ 'bitmap' => 82
}
},
- {#State 149
+ {#State 151
ACTIONS => {
"-" => 34,
"<" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
+ "+" => 37,
+ "~" => 36,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
"(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "|" => 42,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
},
DEFAULT => -35
},
- {#State 150
+ {#State 152
DEFAULT => -33
},
- {#State 151
+ {#State 153
DEFAULT => -38
},
- {#State 152
+ {#State 154
ACTIONS => {
"-" => 34,
"<" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
+ "+" => 37,
+ "~" => 36,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
"(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "|" => 42,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
},
DEFAULT => -39
},
- {#State 153
+ {#State 155
DEFAULT => -49,
GOTOS => {
- 'pointers' => 163
+ 'pointers' => 165
}
},
- {#State 154
+ {#State 156
DEFAULT => -60,
GOTOS => {
- 'base_element' => 164,
- 'property_list' => 134
+ 'base_element' => 166,
+ 'property_list' => 136
}
},
- {#State 155
+ {#State 157
ACTIONS => {
- ";" => 165
+ ";" => 167
}
},
- {#State 156
+ {#State 158
DEFAULT => -52
},
- {#State 157
+ {#State 159
ACTIONS => {
"-" => 34,
"<" => 35,
- ";" => 166,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
+ ";" => 168,
+ "+" => 37,
+ "~" => 36,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
"(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "|" => 42,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
}
},
- {#State 158
+ {#State 160
DEFAULT => -16
},
- {#State 159
+ {#State 161
ACTIONS => {
- "[" => 122
+ "[" => 124
},
DEFAULT => -57,
GOTOS => {
- 'array_len' => 167
+ 'array_len' => 169
}
},
- {#State 160
+ {#State 162
DEFAULT => -58
},
- {#State 161
+ {#State 163
DEFAULT => -42
},
- {#State 162
+ {#State 164
DEFAULT => -41
},
- {#State 163
+ {#State 165
ACTIONS => {
'IDENTIFIER' => 9,
- "*" => 169
+ "*" => 171
},
GOTOS => {
- 'identifier' => 168
+ 'identifier' => 170
}
},
- {#State 164
+ {#State 166
DEFAULT => -56
},
- {#State 165
+ {#State 167
DEFAULT => -18
},
- {#State 166
+ {#State 168
DEFAULT => -17
},
- {#State 167
+ {#State 169
DEFAULT => -59
},
- {#State 168
+ {#State 170
ACTIONS => {
- "[" => 122
+ "[" => 124
},
DEFAULT => -57,
GOTOS => {
- 'array_len' => 170
+ 'array_len' => 172
}
},
- {#State 169
+ {#State 171
DEFAULT => -50
},
- {#State 170
+ {#State 172
DEFAULT => -48
}
],
@@ -2296,10 +2347,10 @@ sub
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 83
- 'anytext', 5,
+ 'anytext', 3,
sub
#line 283 "build/pidl/idl.yp"
-{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
+{ "$_[1]$_[2]$_[3]" }
],
[#Rule 84
'anytext', 5,
@@ -2308,21 +2359,27 @@ sub
{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
],
[#Rule 85
- 'identifier', 1, undef
+ 'anytext', 5,
+sub
+#line 285 "build/pidl/idl.yp"
+{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
],
[#Rule 86
- 'constant', 1, undef
+ 'identifier', 1, undef
],
[#Rule 87
+ 'constant', 1, undef
+ ],
+ [#Rule 88
'text', 1,
sub
-#line 293 "build/pidl/idl.yp"
+#line 294 "build/pidl/idl.yp"
{ "\"$_[1]\"" }
],
- [#Rule 88
+ [#Rule 89
'optional_semicolon', 0, undef
],
- [#Rule 89
+ [#Rule 90
'optional_semicolon', 1, undef
]
],
@@ -2330,7 +2387,7 @@ sub
bless($self,$class);
}
-#line 304 "build/pidl/idl.yp"
+#line 305 "build/pidl/idl.yp"
use util;
diff --git a/source4/build/pidl/idl.yp b/source4/build/pidl/idl.yp
index f81316cd9f..2b839b0e21 100644
--- a/source4/build/pidl/idl.yp
+++ b/source4/build/pidl/idl.yp
@@ -280,6 +280,7 @@ anytext: #empty
| anytext '&' anytext { "$_[1]$_[2]$_[3]" }
| anytext '/' anytext { "$_[1]$_[2]$_[3]" }
| anytext '+' anytext { "$_[1]$_[2]$_[3]" }
+ | anytext '~' anytext { "$_[1]$_[2]$_[3]" }
| anytext '(' commalisttext ')' anytext { "$_[1]$_[2]$_[3]$_[4]$_[5]" }
| anytext '{' commalisttext '}' anytext { "$_[1]$_[2]$_[3]$_[4]$_[5]" }
;
diff --git a/source4/build/pidl/ndr_parser.pm b/source4/build/pidl/ndr_parser.pm
index 1abf8f7006..f94de5e2be 100644
--- a/source4/build/pidl/ndr_parser.pm
+++ b/source4/build/pidl/ndr_parser.pm
@@ -116,33 +116,23 @@ sub deindent()
# work out the name of a size_is() variable
sub ParseExpr($$)
{
- my($orig_expr) = shift;
+ my($expr) = shift;
my $varlist = shift;
- die("Undefined value in ParseExpr") if not defined($orig_expr);
+ die("Undefined value in ParseExpr") if not defined($expr);
- my $expr = $orig_expr;
+ my @tokens = split /((?:[A-Za-z_])(?:(?:(?:[A-Za-z0-9_.])|(?:->))+))/, $expr;
+ my $ret = "";
- return $expr if (util::is_constant($expr));
-
- my $prefix = "";
- my $postfix = "";
-
- if ($expr =~ /\*(.*)/) {
- $expr = $1;
- $prefix = "*";
- }
-
- if ($expr =~ /^(.*)([\&\|\/+])(.*)$/) {
- $postfix = $2.$3;
- $expr = $1;
- }
-
- if (defined($varlist->{$expr})) {
- return $prefix.$varlist->{$expr}.$postfix;
+ foreach my $t (@tokens) {
+ if (defined($varlist->{$t})) {
+ $ret .= $varlist->{$t};
+ } else {
+ $ret .= $t;
+ }
}
- return $prefix.$expr.$postfix;
+ return $ret;
}
#####################################################################