summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-01-21 06:46:07 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:09:01 -0500
commite0d2080219c7d52559a5bbcc7294995fccbd5e52 (patch)
treeaf6f408f2aae45a64a4cdd20c7d0619ac22d21e9
parent84b5890a960a74462ca593fcc4d113e96a77a051 (diff)
downloadsamba-e0d2080219c7d52559a5bbcc7294995fccbd5e52.tar.gz
samba-e0d2080219c7d52559a5bbcc7294995fccbd5e52.tar.bz2
samba-e0d2080219c7d52559a5bbcc7294995fccbd5e52.zip
r4884: - 2nd part of support ndr_size_ generation on unions as well as structures
- added "nopull" and "nopush" flags, to allow for externally written parsers for sub-structures (This used to be commit f65f239978425de795a0e188aaad3d5d1167da32)
-rw-r--r--source4/build/pidl/idl.pm908
-rw-r--r--source4/build/pidl/idl.yp1
-rw-r--r--source4/build/pidl/needed.pm11
-rw-r--r--source4/build/pidl/parser.pm20
4 files changed, 514 insertions, 426 deletions
diff --git a/source4/build/pidl/idl.pm b/source4/build/pidl/idl.pm
index e1600b5b40..cbfe8e10e3 100644
--- a/source4/build/pidl/idl.pm
+++ b/source4/build/pidl/idl.pm
@@ -559,7 +559,7 @@ sub new {
}
},
{#State 9
- DEFAULT => -84
+ DEFAULT => -85
},
{#State 10
ACTIONS => {
@@ -647,7 +647,7 @@ sub new {
}
},
{#State 22
- DEFAULT => -86
+ DEFAULT => -87
},
{#State 23
DEFAULT => -71
@@ -658,29 +658,30 @@ sub new {
{#State 25
ACTIONS => {
"-" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
- "|" => 40,
- "(" => 41,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "<" => 36,
+ "+" => 37,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
+ "|" => 41,
+ "(" => 42,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
},
DEFAULT => -66
},
{#State 26
ACTIONS => {
- "," => 45,
- ")" => 46
+ "," => 46,
+ ")" => 47
}
},
{#State 27
DEFAULT => -72
},
{#State 28
- DEFAULT => -85
+ DEFAULT => -86
},
{#State 29
DEFAULT => -63
@@ -690,28 +691,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 => -87,
+ DEFAULT => -88,
GOTOS => {
- 'optional_semicolon' => 57
+ 'optional_semicolon' => 58
}
},
{#State 33
@@ -733,7 +734,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 59,
+ 'anytext' => 60,
'constant' => 27
}
},
@@ -747,7 +748,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 60,
+ 'anytext' => 61,
'constant' => 27
}
},
@@ -761,9 +762,8 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 61,
- 'constant' => 27,
- 'commalisttext' => 62
+ 'anytext' => 62,
+ 'constant' => 27
}
},
{#State 38
@@ -777,7 +777,8 @@ sub new {
'identifier' => 23,
'text' => 24,
'anytext' => 63,
- 'constant' => 27
+ 'constant' => 27,
+ 'commalisttext' => 64
}
},
{#State 39
@@ -790,7 +791,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 64,
+ 'anytext' => 65,
'constant' => 27
}
},
@@ -804,7 +805,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 65,
+ 'anytext' => 66,
'constant' => 27
}
},
@@ -818,9 +819,8 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 61,
- 'constant' => 27,
- 'commalisttext' => 66
+ 'anytext' => 67,
+ 'constant' => 27
}
},
{#State 42
@@ -833,8 +833,9 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 67,
- 'constant' => 27
+ 'anytext' => 63,
+ 'constant' => 27,
+ 'commalisttext' => 68
}
},
{#State 43
@@ -847,7 +848,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 68,
+ 'anytext' => 69,
'constant' => 27
}
},
@@ -861,7 +862,7 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 69,
+ 'anytext' => 70,
'constant' => 27
}
},
@@ -875,278 +876,318 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 70,
+ 'anytext' => 71,
'constant' => 27
}
},
{#State 46
- DEFAULT => -65
+ ACTIONS => {
+ 'CONSTANT' => 28,
+ 'TEXT' => 22,
+ 'IDENTIFIER' => 9
+ },
+ DEFAULT => -70,
+ GOTOS => {
+ 'identifier' => 23,
+ 'text' => 24,
+ 'anytext' => 72,
+ 'constant' => 27
+ }
},
{#State 47
+ DEFAULT => -65
+ },
+ {#State 48
DEFAULT => -60,
GOTOS => {
- 'property_list' => 71
+ 'property_list' => 73
}
},
- {#State 48
+ {#State 49
DEFAULT => -12
},
- {#State 49
+ {#State 50
ACTIONS => {
- "}" => 72,
- "typedef" => 47,
- "declare" => 52,
- "const" => 55
+ "}" => 74,
+ "typedef" => 48,
+ "declare" => 53,
+ "const" => 56
},
DEFAULT => -60,
GOTOS => {
- 'const' => 54,
- 'declare' => 53,
- 'function' => 48,
- 'typedef' => 56,
- 'definition' => 73,
- 'property_list' => 50
+ 'const' => 55,
+ 'declare' => 54,
+ 'function' => 49,
+ 'typedef' => 57,
+ 'definition' => 75,
+ 'property_list' => 51
}
},
- {#State 50
+ {#State 51
ACTIONS => {
'IDENTIFIER' => 9,
- "union" => 74,
- "enum" => 75,
+ "union" => 76,
+ "enum" => 77,
"[" => 7,
- 'void' => 77,
- "bitmap" => 76,
- "struct" => 84
+ 'void' => 79,
+ "bitmap" => 78,
+ "struct" => 86
},
GOTOS => {
- 'identifier' => 79,
- 'struct' => 80,
- 'enum' => 81,
- 'type' => 82,
- 'union' => 83,
- 'bitmap' => 78
+ 'identifier' => 81,
+ 'struct' => 82,
+ 'enum' => 83,
+ 'type' => 84,
+ 'union' => 85,
+ 'bitmap' => 80
}
},
- {#State 51
+ {#State 52
DEFAULT => -10
},
- {#State 52
+ {#State 53
DEFAULT => -60,
GOTOS => {
- 'property_list' => 85
+ 'property_list' => 87
}
},
- {#State 53
+ {#State 54
DEFAULT => -15
},
- {#State 54
+ {#State 55
DEFAULT => -13
},
- {#State 55
+ {#State 56
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 86
+ 'identifier' => 88
}
},
- {#State 56
- DEFAULT => -14
- },
{#State 57
- DEFAULT => -4
+ DEFAULT => -14
},
{#State 58
- DEFAULT => -88
+ DEFAULT => -4
},
{#State 59
- ACTIONS => {
- "{" => 37
- },
- DEFAULT => -74
+ DEFAULT => -89
},
{#State 60
ACTIONS => {
- "{" => 37
+ "<" => 36,
+ "{" => 38
},
- DEFAULT => -81
+ DEFAULT => -74
},
{#State 61
ACTIONS => {
"-" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
- "(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "<" => 36,
+ "+" => 37,
+ "*" => 43,
+ "{" => 38,
+ "&" => 39,
+ "/" => 40,
+ "|" => 41,
+ "(" => 42,
+ "." => 44,
+ ">" => 45
},
- DEFAULT => -68
+ DEFAULT => -78
},
{#State 62
ACTIONS => {
- "}" => 87,
- "," => 88
- }
+ "<" => 36,
+ "{" => 38
+ },
+ DEFAULT => -82
},
{#State 63
ACTIONS => {
- "{" => 37
+ "-" => 35,
+ "<" => 36,
+ "+" => 37,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
+ "(" => 42,
+ "|" => 41,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
},
- DEFAULT => -79
+ DEFAULT => -68
},
{#State 64
ACTIONS => {
- "{" => 37
- },
- DEFAULT => -80
+ "}" => 89,
+ "," => 90
+ }
},
{#State 65
ACTIONS => {
- "{" => 37
+ "<" => 36,
+ "{" => 38
},
- DEFAULT => -78
+ DEFAULT => -80
},
{#State 66
ACTIONS => {
- "," => 88,
- ")" => 89
- }
+ "<" => 36,
+ "{" => 38
+ },
+ DEFAULT => -81
},
{#State 67
ACTIONS => {
- "{" => 37
+ "<" => 36,
+ "{" => 38
},
- DEFAULT => -76
+ DEFAULT => -79
},
{#State 68
ACTIONS => {
- "{" => 37
+ "," => 90,
+ ")" => 91
+ }
+ },
+ {#State 69
+ ACTIONS => {
+ "<" => 36,
+ "{" => 38
+ },
+ DEFAULT => -76
+ },
+ {#State 70
+ ACTIONS => {
+ "<" => 36,
+ "{" => 38
},
DEFAULT => -75
},
- {#State 69
+ {#State 71
ACTIONS => {
- "{" => 37
+ "<" => 36,
+ "{" => 38
},
DEFAULT => -77
},
- {#State 70
+ {#State 72
ACTIONS => {
"-" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
- "(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "<" => 36,
+ "+" => 37,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
+ "(" => 42,
+ "|" => 41,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
},
DEFAULT => -67
},
- {#State 71
+ {#State 73
ACTIONS => {
'IDENTIFIER' => 9,
- "union" => 74,
- "enum" => 75,
+ "union" => 76,
+ "enum" => 77,
"[" => 7,
- 'void' => 77,
- "bitmap" => 76,
- "struct" => 84
+ 'void' => 79,
+ "bitmap" => 78,
+ "struct" => 86
},
GOTOS => {
- 'identifier' => 79,
- 'struct' => 80,
- 'enum' => 81,
- 'type' => 90,
- 'union' => 83,
- 'bitmap' => 78
+ 'identifier' => 81,
+ 'struct' => 82,
+ 'enum' => 83,
+ 'type' => 92,
+ 'union' => 85,
+ 'bitmap' => 80
}
},
- {#State 72
+ {#State 74
ACTIONS => {
- ";" => 58
+ ";" => 59
},
- DEFAULT => -87,
+ DEFAULT => -88,
GOTOS => {
- 'optional_semicolon' => 91
+ 'optional_semicolon' => 93
}
},
- {#State 73
+ {#State 75
DEFAULT => -11
},
- {#State 74
+ {#State 76
ACTIONS => {
- "{" => 92
+ "{" => 94
}
},
- {#State 75
+ {#State 77
ACTIONS => {
- "{" => 93
+ "{" => 95
}
},
- {#State 76
+ {#State 78
ACTIONS => {
- "{" => 94
+ "{" => 96
}
},
- {#State 77
+ {#State 79
DEFAULT => -30
},
- {#State 78
+ {#State 80
DEFAULT => -28
},
- {#State 79
+ {#State 81
DEFAULT => -29
},
- {#State 80
+ {#State 82
DEFAULT => -25
},
- {#State 81
+ {#State 83
DEFAULT => -27
},
- {#State 82
+ {#State 84
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 95
+ 'identifier' => 97
}
},
- {#State 83
+ {#State 85
DEFAULT => -26
},
- {#State 84
+ {#State 86
ACTIONS => {
- "{" => 96
+ "{" => 98
}
},
- {#State 85
+ {#State 87
ACTIONS => {
- "enum" => 97,
+ "enum" => 99,
"[" => 7,
- "bitmap" => 98
+ "bitmap" => 100
},
GOTOS => {
- 'decl_enum' => 99,
- 'decl_bitmap' => 100,
- 'decl_type' => 101
+ 'decl_enum' => 101,
+ 'decl_bitmap' => 102,
+ 'decl_type' => 103
}
},
- {#State 86
+ {#State 88
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 102
+ 'identifier' => 104
}
},
- {#State 87
+ {#State 89
ACTIONS => {
'CONSTANT' => 28,
'TEXT' => 22,
@@ -1156,11 +1197,11 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 103,
+ 'anytext' => 105,
'constant' => 27
}
},
- {#State 88
+ {#State 90
ACTIONS => {
'CONSTANT' => 28,
'TEXT' => 22,
@@ -1170,11 +1211,11 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 104,
+ 'anytext' => 106,
'constant' => 27
}
},
- {#State 89
+ {#State 91
ACTIONS => {
'CONSTANT' => 28,
'TEXT' => 22,
@@ -1184,216 +1225,219 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 105,
+ 'anytext' => 107,
'constant' => 27
}
},
- {#State 90
+ {#State 92
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 106
+ 'identifier' => 108
}
},
- {#State 91
+ {#State 93
DEFAULT => -7
},
- {#State 92
+ {#State 94
ACTIONS => {
- "[" => 109
+ "[" => 111
},
GOTOS => {
- 'union_elements' => 107,
- 'union_element' => 108
+ 'union_elements' => 109,
+ 'union_element' => 110
}
},
- {#State 93
+ {#State 95
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 110,
- 'enum_element' => 111,
- 'enum_elements' => 112
+ 'identifier' => 112,
+ 'enum_element' => 113,
+ 'enum_elements' => 114
}
},
- {#State 94
+ {#State 96
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 115,
- 'bitmap_elements' => 114,
- 'bitmap_element' => 113
+ 'identifier' => 117,
+ 'bitmap_elements' => 116,
+ 'bitmap_element' => 115
}
},
- {#State 95
+ {#State 97
ACTIONS => {
- "(" => 116
+ "(" => 118
}
},
- {#State 96
+ {#State 98
DEFAULT => -51,
GOTOS => {
- 'element_list1' => 117
+ 'element_list1' => 119
}
},
- {#State 97
+ {#State 99
DEFAULT => -22
},
- {#State 98
+ {#State 100
DEFAULT => -23
},
- {#State 99
+ {#State 101
DEFAULT => -20
},
- {#State 100
+ {#State 102
DEFAULT => -21
},
- {#State 101
+ {#State 103
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 118
+ 'identifier' => 120
}
},
- {#State 102
+ {#State 104
ACTIONS => {
- "[" => 121,
- "=" => 120
+ "[" => 123,
+ "=" => 122
},
GOTOS => {
- 'array_len' => 119
+ 'array_len' => 121
}
},
- {#State 103
+ {#State 105
ACTIONS => {
"-" => 35,
- "+" => 36,
- "*" => 42,
- "{" => 37,
- "&" => 38,
- "/" => 39,
- "|" => 40,
- "(" => 41,
- "." => 43,
- ">" => 44
+ "<" => 36,
+ "+" => 37,
+ "*" => 43,
+ "{" => 38,
+ "&" => 39,
+ "/" => 40,
+ "|" => 41,
+ "(" => 42,
+ "." => 44,
+ ">" => 45
},
- DEFAULT => -83
+ DEFAULT => -84
},
- {#State 104
+ {#State 106
ACTIONS => {
"-" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
- "(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "<" => 36,
+ "+" => 37,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
+ "(" => 42,
+ "|" => 41,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
},
DEFAULT => -69
},
- {#State 105
+ {#State 107
ACTIONS => {
- "{" => 37
+ "<" => 36,
+ "{" => 38
},
- DEFAULT => -82
+ DEFAULT => -83
},
- {#State 106
+ {#State 108
ACTIONS => {
- "[" => 121
+ "[" => 123
},
DEFAULT => -57,
GOTOS => {
- 'array_len' => 122
+ 'array_len' => 124
}
},
- {#State 107
+ {#State 109
ACTIONS => {
- "}" => 123,
- "[" => 109
+ "}" => 125,
+ "[" => 111
},
GOTOS => {
- 'union_element' => 124
+ 'union_element' => 126
}
},
- {#State 108
+ {#State 110
DEFAULT => -42
},
- {#State 109
+ {#State 111
ACTIONS => {
- "case" => 125,
- "default" => 126
+ "case" => 127,
+ "default" => 128
}
},
- {#State 110
+ {#State 112
ACTIONS => {
- "=" => 127
+ "=" => 129
},
DEFAULT => -34
},
- {#State 111
+ {#State 113
DEFAULT => -32
},
- {#State 112
+ {#State 114
ACTIONS => {
- "}" => 128,
- "," => 129
+ "}" => 130,
+ "," => 131
}
},
- {#State 113
+ {#State 115
DEFAULT => -37
},
- {#State 114
+ {#State 116
ACTIONS => {
- "}" => 130,
- "," => 131
+ "}" => 132,
+ "," => 133
}
},
- {#State 115
+ {#State 117
ACTIONS => {
- "=" => 132
+ "=" => 134
}
},
- {#State 116
+ {#State 118
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 117
+ {#State 119
ACTIONS => {
- "}" => 137
+ "}" => 139
},
DEFAULT => -60,
GOTOS => {
- 'base_element' => 138,
- 'property_list' => 134
+ 'base_element' => 140,
+ 'property_list' => 136
}
},
- {#State 118
+ {#State 120
ACTIONS => {
- ";" => 139
+ ";" => 141
}
},
- {#State 119
+ {#State 121
ACTIONS => {
- "=" => 140
+ "=" => 142
}
},
- {#State 120
+ {#State 122
ACTIONS => {
'IDENTIFIER' => 9,
'CONSTANT' => 28,
@@ -1403,47 +1447,47 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 141,
+ 'anytext' => 143,
'constant' => 27
}
},
- {#State 121
+ {#State 123
ACTIONS => {
'IDENTIFIER' => 9,
'CONSTANT' => 28,
'TEXT' => 22,
- "]" => 143
+ "]" => 145
},
DEFAULT => -70,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 142,
+ 'anytext' => 144,
'constant' => 27
}
},
- {#State 122
+ {#State 124
ACTIONS => {
- ";" => 144
+ ";" => 146
}
},
- {#State 123
+ {#State 125
DEFAULT => -41
},
- {#State 124
+ {#State 126
DEFAULT => -43
},
- {#State 125
+ {#State 127
ACTIONS => {
- "(" => 145
+ "(" => 147
}
},
- {#State 126
+ {#State 128
ACTIONS => {
- "]" => 146
+ "]" => 148
}
},
- {#State 127
+ {#State 129
ACTIONS => {
'CONSTANT' => 28,
'TEXT' => 22,
@@ -1453,35 +1497,35 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 147,
+ 'anytext' => 149,
'constant' => 27
}
},
- {#State 128
+ {#State 130
DEFAULT => -31
},
- {#State 129
+ {#State 131
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 110,
- 'enum_element' => 148
+ 'identifier' => 112,
+ 'enum_element' => 150
}
},
- {#State 130
+ {#State 132
DEFAULT => -36
},
- {#State 131
+ {#State 133
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 115,
- 'bitmap_element' => 149
+ 'identifier' => 117,
+ 'bitmap_element' => 151
}
},
- {#State 132
+ {#State 134
ACTIONS => {
'CONSTANT' => 28,
'TEXT' => 22,
@@ -1491,53 +1535,53 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 150,
+ 'anytext' => 152,
'constant' => 27
}
},
- {#State 133
+ {#State 135
DEFAULT => -55
},
- {#State 134
+ {#State 136
ACTIONS => {
'IDENTIFIER' => 9,
- "union" => 74,
- "enum" => 75,
+ "union" => 76,
+ "enum" => 77,
"[" => 7,
- 'void' => 77,
- "bitmap" => 76,
- "struct" => 84
+ 'void' => 79,
+ "bitmap" => 78,
+ "struct" => 86
},
GOTOS => {
- 'identifier' => 79,
- 'struct' => 80,
- 'enum' => 81,
- 'type' => 151,
- 'union' => 83,
- 'bitmap' => 78
+ 'identifier' => 81,
+ 'struct' => 82,
+ 'enum' => 83,
+ 'type' => 153,
+ 'union' => 85,
+ 'bitmap' => 80
}
},
- {#State 135
+ {#State 137
DEFAULT => -54
},
- {#State 136
+ {#State 138
ACTIONS => {
- "," => 152,
- ")" => 153
+ "," => 154,
+ ")" => 155
}
},
- {#State 137
+ {#State 139
DEFAULT => -40
},
- {#State 138
+ {#State 140
ACTIONS => {
- ";" => 154
+ ";" => 156
}
},
- {#State 139
+ {#State 141
DEFAULT => -19
},
- {#State 140
+ {#State 142
ACTIONS => {
'IDENTIFIER' => 9,
'CONSTANT' => 28,
@@ -1547,47 +1591,49 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 155,
+ 'anytext' => 157,
'constant' => 27
}
},
- {#State 141
+ {#State 143
ACTIONS => {
"-" => 35,
- ";" => 156,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
- "(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "<" => 36,
+ ";" => 158,
+ "+" => 37,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
+ "(" => 42,
+ "|" => 41,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
}
},
- {#State 142
+ {#State 144
ACTIONS => {
"-" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
- "(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- "]" => 157,
- ">" => 44
+ "<" => 36,
+ "+" => 37,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
+ "(" => 42,
+ "|" => 41,
+ "*" => 43,
+ "]" => 159,
+ "." => 44,
+ ">" => 45
}
},
- {#State 143
+ {#State 145
DEFAULT => -58
},
- {#State 144
+ {#State 146
DEFAULT => -24
},
- {#State 145
+ {#State 147
ACTIONS => {
'IDENTIFIER' => 9,
'CONSTANT' => 28,
@@ -1597,181 +1643,185 @@ sub new {
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 158,
+ 'anytext' => 160,
'constant' => 27
}
},
- {#State 146
+ {#State 148
ACTIONS => {
- ";" => 159
+ ";" => 161
},
DEFAULT => -60,
GOTOS => {
- 'base_element' => 160,
- 'property_list' => 134
+ 'base_element' => 162,
+ 'property_list' => 136
}
},
- {#State 147
+ {#State 149
ACTIONS => {
"-" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
- "(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "<" => 36,
+ "+" => 37,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
+ "(" => 42,
+ "|" => 41,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
},
DEFAULT => -35
},
- {#State 148
+ {#State 150
DEFAULT => -33
},
- {#State 149
+ {#State 151
DEFAULT => -38
},
- {#State 150
+ {#State 152
ACTIONS => {
"-" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
- "(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "<" => 36,
+ "+" => 37,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
+ "(" => 42,
+ "|" => 41,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
},
DEFAULT => -39
},
- {#State 151
+ {#State 153
DEFAULT => -49,
GOTOS => {
- 'pointers' => 161
+ 'pointers' => 163
}
},
- {#State 152
+ {#State 154
DEFAULT => -60,
GOTOS => {
- 'base_element' => 162,
- 'property_list' => 134
+ 'base_element' => 164,
+ 'property_list' => 136
}
},
- {#State 153
+ {#State 155
ACTIONS => {
- ";" => 163
+ ";" => 165
}
},
- {#State 154
+ {#State 156
DEFAULT => -52
},
- {#State 155
+ {#State 157
ACTIONS => {
"-" => 35,
- ";" => 164,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
- "(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ">" => 44
+ "<" => 36,
+ ";" => 166,
+ "+" => 37,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
+ "(" => 42,
+ "|" => 41,
+ "*" => 43,
+ "." => 44,
+ ">" => 45
}
},
- {#State 156
+ {#State 158
DEFAULT => -16
},
- {#State 157
+ {#State 159
DEFAULT => -59
},
- {#State 158
+ {#State 160
ACTIONS => {
"-" => 35,
- "+" => 36,
- "&" => 38,
- "{" => 37,
- "/" => 39,
- "(" => 41,
- "|" => 40,
- "*" => 42,
- "." => 43,
- ")" => 165,
- ">" => 44
+ "<" => 36,
+ "+" => 37,
+ "&" => 39,
+ "{" => 38,
+ "/" => 40,
+ "(" => 42,
+ "|" => 41,
+ "*" => 43,
+ ")" => 167,
+ "." => 44,
+ ">" => 45
}
},
- {#State 159
+ {#State 161
DEFAULT => -47
},
- {#State 160
+ {#State 162
ACTIONS => {
- ";" => 166
+ ";" => 168
}
},
- {#State 161
+ {#State 163
ACTIONS => {
'IDENTIFIER' => 9,
- "*" => 168
+ "*" => 170
},
GOTOS => {
- 'identifier' => 167
+ 'identifier' => 169
}
},
- {#State 162
+ {#State 164
DEFAULT => -56
},
- {#State 163
+ {#State 165
DEFAULT => -18
},
- {#State 164
+ {#State 166
DEFAULT => -17
},
- {#State 165
+ {#State 167
ACTIONS => {
- "]" => 169
+ "]" => 171
}
},
- {#State 166
+ {#State 168
DEFAULT => -46
},
- {#State 167
+ {#State 169
ACTIONS => {
- "[" => 121
+ "[" => 123
},
DEFAULT => -57,
GOTOS => {
- 'array_len' => 170
+ 'array_len' => 172
}
},
- {#State 168
+ {#State 170
DEFAULT => -50
},
- {#State 169
+ {#State 171
ACTIONS => {
- ";" => 171
+ ";" => 173
},
DEFAULT => -60,
GOTOS => {
- 'base_element' => 172,
- 'property_list' => 134
+ 'base_element' => 174,
+ 'property_list' => 136
}
},
- {#State 170
+ {#State 172
DEFAULT => -48
},
- {#State 171
+ {#State 173
DEFAULT => -45
},
- {#State 172
+ {#State 174
ACTIONS => {
- ";" => 173
+ ";" => 175
}
},
- {#State 173
+ {#State 175
DEFAULT => -44
}
],
@@ -2267,10 +2317,10 @@ sub
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 82
- 'anytext', 5,
+ 'anytext', 3,
sub
#line 275 "build/pidl/idl.yp"
-{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
+{ "$_[1]$_[2]$_[3]" }
],
[#Rule 83
'anytext', 5,
@@ -2279,21 +2329,27 @@ sub
{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
],
[#Rule 84
- 'identifier', 1, undef
+ 'anytext', 5,
+sub
+#line 277 "build/pidl/idl.yp"
+{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
],
[#Rule 85
- 'constant', 1, undef
+ 'identifier', 1, undef
],
[#Rule 86
+ 'constant', 1, undef
+ ],
+ [#Rule 87
'text', 1,
sub
-#line 285 "build/pidl/idl.yp"
+#line 286 "build/pidl/idl.yp"
{ "\"$_[1]\"" }
],
- [#Rule 87
+ [#Rule 88
'optional_semicolon', 0, undef
],
- [#Rule 88
+ [#Rule 89
'optional_semicolon', 1, undef
]
],
@@ -2301,7 +2357,7 @@ sub
bless($self,$class);
}
-#line 296 "build/pidl/idl.yp"
+#line 297 "build/pidl/idl.yp"
use util;
diff --git a/source4/build/pidl/idl.yp b/source4/build/pidl/idl.yp
index 73b9a44b3f..4e4071d317 100644
--- a/source4/build/pidl/idl.yp
+++ b/source4/build/pidl/idl.yp
@@ -268,6 +268,7 @@ anytext: #empty
| anytext '.' anytext { "$_[1]$_[2]$_[3]" }
| anytext '*' anytext { "$_[1]$_[2]$_[3]" }
| anytext '>' anytext { "$_[1]$_[2]$_[3]" }
+ | anytext '<' anytext { "$_[1]$_[2]$_[3]" }
| anytext '|' anytext { "$_[1]$_[2]$_[3]" }
| anytext '&' anytext { "$_[1]$_[2]$_[3]" }
| anytext '/' anytext { "$_[1]$_[2]$_[3]" }
diff --git a/source4/build/pidl/needed.pm b/source4/build/pidl/needed.pm
index 2f42ce6703..37edbef83b 100644
--- a/source4/build/pidl/needed.pm
+++ b/source4/build/pidl/needed.pm
@@ -31,6 +31,13 @@ sub NeededTypedef($)
$needed{"push_$t->{NAME}"} = 1;
}
+ if (util::has_property($t, "nopull")) {
+ $needed{"pull_$t->{NAME}"} = 0;
+ }
+ if (util::has_property($t, "nopush")) {
+ $needed{"push_$t->{NAME}"} = 0;
+ }
+
if ($t->{DATA}->{TYPE} eq "STRUCT") {
if (util::has_property($t, "gensize")) {
$needed{"ndr_size_$t->{NAME}"} = 1;
@@ -47,6 +54,10 @@ sub NeededTypedef($)
}
}
if ($t->{DATA}->{TYPE} eq "UNION") {
+ if (util::has_property($t, "gensize")) {
+ $needed{"ndr_size_$t->{NAME}"} = 1;
+ }
+
for my $e (@{$t->{DATA}->{DATA}}) {
$e->{PARENT} = $t->{DATA};
if ($e->{TYPE} eq "UNION_ELEMENT") {
diff --git a/source4/build/pidl/parser.pm b/source4/build/pidl/parser.pm
index ac45b4d9bc..1368099403 100644
--- a/source4/build/pidl/parser.pm
+++ b/source4/build/pidl/parser.pm
@@ -1036,6 +1036,23 @@ sub ParseStructNdrSize($)
}
#####################################################################
+# calculate size of ndr struct
+sub ParseUnionNdrSize($)
+{
+ my $t = shift;
+ my $static = fn_prefix($t);
+ my $sizevar;
+
+ pidl "size_t ndr_size_$t->{NAME}(const union $t->{NAME} *r, uint32_t level, int flags)\n";
+ pidl "{\n";
+ if (my $flags = util::has_property($t, "flag")) {
+ pidl "\tflags |= $flags;\n";
+ }
+ pidl "\treturn ndr_size_union(r, flags, level, (ndr_push_union_fn_t)ndr_push_$t->{NAME});\n";
+ pidl "}\n\n";
+}
+
+#####################################################################
# parse a union - push side
sub ParseUnionPush($)
{
@@ -1395,6 +1412,9 @@ sub ParseTypedefNdrSize($)
($t->{DATA}->{TYPE} eq "STRUCT") &&
ParseStructNdrSize($t);
+
+ ($t->{DATA}->{TYPE} eq "UNION") &&
+ ParseUnionNdrSize($t);
}
#####################################################################