summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2004-11-29 11:08:15 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:06:12 -0500
commitee0d68dc30a18b86a9d56e41e84903c2750c0173 (patch)
treee6744949756a3b427f9e8e96a042a3074d3143ca /source4
parent3558d8b40dd2b24a74192bc5fba5312104efe7cd (diff)
downloadsamba-ee0d68dc30a18b86a9d56e41e84903c2750c0173.tar.gz
samba-ee0d68dc30a18b86a9d56e41e84903c2750c0173.tar.bz2
samba-ee0d68dc30a18b86a9d56e41e84903c2750c0173.zip
r3998: allow const arrays (see next commit to drsuapi.idl)
metze (This used to be commit 7264a2227d7a1881db01964d0d713c144eb77152)
Diffstat (limited to 'source4')
-rw-r--r--source4/build/pidl/header.pm8
-rw-r--r--source4/build/pidl/idl.pm1078
-rw-r--r--source4/build/pidl/idl.yp9
3 files changed, 626 insertions, 469 deletions
diff --git a/source4/build/pidl/header.pm b/source4/build/pidl/header.pm
index 5dda18d1b5..31194918ad 100644
--- a/source4/build/pidl/header.pm
+++ b/source4/build/pidl/header.pm
@@ -208,11 +208,15 @@ sub HeaderTypedefProto($)
}
#####################################################################
-# parse a typedef
+# parse a const
sub HeaderConst($)
{
my($const) = shift;
- $res .= "#define $const->{NAME}\t( $const->{VALUE} )\n";
+ if (!defined($const->{ARRAY_LEN})) {
+ $res .= "#define $const->{NAME}\t( $const->{VALUE} )\n";
+ } else {
+ $res .= "#define $const->{NAME}\t $const->{VALUE}\n";
+ }
}
#####################################################################
diff --git a/source4/build/pidl/idl.pm b/source4/build/pidl/idl.pm
index 19525e42f3..487b53160e 100644
--- a/source4/build/pidl/idl.pm
+++ b/source4/build/pidl/idl.pm
@@ -509,7 +509,7 @@ sub new {
ACTIONS => {
'' => 2
},
- DEFAULT => -48,
+ DEFAULT => -49,
GOTOS => {
'interface' => 3,
'coclass' => 4,
@@ -559,7 +559,7 @@ sub new {
}
},
{#State 9
- DEFAULT => -71
+ DEFAULT => -73
},
{#State 10
ACTIONS => {
@@ -570,10 +570,10 @@ sub new {
ACTIONS => {
"(" => 16
},
- DEFAULT => -52
+ DEFAULT => -53
},
{#State 12
- DEFAULT => -50
+ DEFAULT => -51
},
{#State 13
ACTIONS => {
@@ -598,11 +598,11 @@ sub new {
},
{#State 16
ACTIONS => {
- 'IDENTIFIER' => 9,
'CONSTANT' => 28,
- 'TEXT' => 22
+ 'TEXT' => 22,
+ 'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'listtext' => 26,
@@ -621,7 +621,7 @@ sub new {
}
},
{#State 18
- DEFAULT => -49
+ DEFAULT => -50
},
{#State 19
ACTIONS => {
@@ -640,75 +640,76 @@ sub new {
ACTIONS => {
"}" => 32
},
- DEFAULT => -48,
+ DEFAULT => -49,
GOTOS => {
'interface' => 33,
'property_list' => 34
}
},
{#State 22
- DEFAULT => -73
+ DEFAULT => -75
},
{#State 23
- DEFAULT => -59
+ DEFAULT => -60
},
{#State 24
- DEFAULT => -61
+ DEFAULT => -62
},
{#State 25
ACTIONS => {
"-" => 35,
"+" => 36,
- "&" => 37,
- "/" => 38,
- "|" => 39,
- "(" => 40,
- "*" => 41,
- "." => 42,
- ">" => 43
+ "&" => 38,
+ "{" => 37,
+ "/" => 39,
+ "|" => 40,
+ "(" => 41,
+ "*" => 42,
+ "." => 43,
+ ">" => 44
},
- DEFAULT => -54
+ DEFAULT => -55
},
{#State 26
ACTIONS => {
- "," => 44,
- ")" => 45
+ "," => 45,
+ ")" => 46
}
},
{#State 27
- DEFAULT => -60
+ DEFAULT => -61
},
{#State 28
- DEFAULT => -72
+ DEFAULT => -74
},
{#State 29
- DEFAULT => -51
+ DEFAULT => -52
},
{#State 30
DEFAULT => -9
},
{#State 31
ACTIONS => {
- "typedef" => 46,
- "const" => 52
+ "typedef" => 47,
+ "const" => 53
},
- DEFAULT => -48,
+ DEFAULT => -49,
GOTOS => {
- 'const' => 51,
- 'function' => 47,
- 'typedef' => 53,
- 'definitions' => 48,
- 'definition' => 50,
- 'property_list' => 49
+ 'const' => 52,
+ 'function' => 48,
+ 'typedef' => 54,
+ 'definitions' => 49,
+ 'definition' => 51,
+ 'property_list' => 50
}
},
{#State 32
ACTIONS => {
- ";" => 55
+ ";" => 56
},
- DEFAULT => -74,
+ DEFAULT => -76,
GOTOS => {
- 'optional_semicolon' => 54
+ 'optional_semicolon' => 55
}
},
{#State 33
@@ -726,11 +727,11 @@ sub new {
'TEXT' => 22,
'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 56,
+ 'anytext' => 57,
'constant' => 27
}
},
@@ -740,11 +741,11 @@ sub new {
'TEXT' => 22,
'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 57,
+ 'anytext' => 58,
'constant' => 27
}
},
@@ -754,12 +755,13 @@ sub new {
'TEXT' => 22,
'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 58,
- 'constant' => 27
+ 'anytext' => 59,
+ 'constant' => 27,
+ 'commalisttext' => 60
}
},
{#State 38
@@ -768,11 +770,11 @@ sub new {
'TEXT' => 22,
'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 59,
+ 'anytext' => 61,
'constant' => 27
}
},
@@ -782,27 +784,26 @@ sub new {
'TEXT' => 22,
'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 60,
+ 'anytext' => 62,
'constant' => 27
}
},
{#State 40
ACTIONS => {
- 'IDENTIFIER' => 9,
'CONSTANT' => 28,
- 'TEXT' => 22
+ 'TEXT' => 22,
+ 'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 61,
- 'constant' => 27,
- 'commalisttext' => 62
+ 'anytext' => 63,
+ 'constant' => 27
}
},
{#State 41
@@ -811,12 +812,13 @@ sub new {
'TEXT' => 22,
'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 63,
- 'constant' => 27
+ 'anytext' => 59,
+ 'constant' => 27,
+ 'commalisttext' => 64
}
},
{#State 42
@@ -825,11 +827,11 @@ sub new {
'TEXT' => 22,
'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 64,
+ 'anytext' => 65,
'constant' => 27
}
},
@@ -839,679 +841,803 @@ sub new {
'TEXT' => 22,
'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 65,
+ 'anytext' => 66,
'constant' => 27
}
},
{#State 44
ACTIONS => {
- 'IDENTIFIER' => 9,
'CONSTANT' => 28,
- 'TEXT' => 22
+ 'TEXT' => 22,
+ 'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 66,
+ 'anytext' => 67,
'constant' => 27
}
},
{#State 45
- DEFAULT => -53
+ ACTIONS => {
+ 'CONSTANT' => 28,
+ 'TEXT' => 22,
+ 'IDENTIFIER' => 9
+ },
+ DEFAULT => -59,
+ GOTOS => {
+ 'identifier' => 23,
+ 'text' => 24,
+ 'anytext' => 68,
+ 'constant' => 27
+ }
},
{#State 46
+ DEFAULT => -54
+ },
+ {#State 47
ACTIONS => {
'IDENTIFIER' => 9,
- "enum" => 67,
- 'void' => 68
+ "enum" => 69,
+ 'void' => 70
},
- DEFAULT => -48,
+ DEFAULT => -49,
GOTOS => {
- 'identifier' => 70,
- 'struct' => 71,
- 'enum' => 72,
- 'type' => 73,
- 'union' => 74,
- 'property_list' => 69
+ 'identifier' => 72,
+ 'struct' => 73,
+ 'enum' => 74,
+ 'type' => 75,
+ 'union' => 76,
+ 'property_list' => 71
}
},
- {#State 47
+ {#State 48
DEFAULT => -12
},
- {#State 48
+ {#State 49
ACTIONS => {
- "}" => 75,
- "typedef" => 46,
- "const" => 52
+ "}" => 77,
+ "typedef" => 47,
+ "const" => 53
},
- DEFAULT => -48,
+ DEFAULT => -49,
GOTOS => {
- 'const' => 51,
- 'function' => 47,
- 'typedef' => 53,
- 'definition' => 76,
- 'property_list' => 49
+ 'const' => 52,
+ 'function' => 48,
+ 'typedef' => 54,
+ 'definition' => 78,
+ 'property_list' => 50
}
},
- {#State 49
+ {#State 50
ACTIONS => {
'IDENTIFIER' => 9,
- "enum" => 67,
+ "enum" => 69,
"[" => 7,
- 'void' => 68
+ 'void' => 70
},
- DEFAULT => -48,
+ DEFAULT => -49,
GOTOS => {
- 'identifier' => 70,
- 'struct' => 71,
- 'enum' => 72,
- 'type' => 77,
- 'union' => 74,
- 'property_list' => 69
+ 'identifier' => 72,
+ 'struct' => 73,
+ 'enum' => 74,
+ 'type' => 79,
+ 'union' => 76,
+ 'property_list' => 71
}
},
- {#State 50
+ {#State 51
DEFAULT => -10
},
- {#State 51
+ {#State 52
DEFAULT => -13
},
- {#State 52
+ {#State 53
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 78
+ 'identifier' => 80
}
},
- {#State 53
- DEFAULT => -14
- },
{#State 54
- DEFAULT => -4
+ DEFAULT => -14
},
{#State 55
- DEFAULT => -75
+ DEFAULT => -4
},
{#State 56
- DEFAULT => -62
+ DEFAULT => -77
},
{#State 57
- DEFAULT => -69
+ ACTIONS => {
+ "{" => 37
+ },
+ DEFAULT => -63
},
{#State 58
- DEFAULT => -67
+ ACTIONS => {
+ "{" => 37
+ },
+ DEFAULT => -70
},
{#State 59
- DEFAULT => -68
+ ACTIONS => {
+ "-" => 35,
+ "+" => 36,
+ "&" => 38,
+ "{" => 37,
+ "/" => 39,
+ "(" => 41,
+ "|" => 40,
+ "*" => 42,
+ "." => 43,
+ ">" => 44
+ },
+ DEFAULT => -57
},
{#State 60
- DEFAULT => -66
+ ACTIONS => {
+ "}" => 81,
+ "," => 82
+ }
},
{#State 61
ACTIONS => {
- "-" => 35,
- "+" => 36,
- "&" => 37,
- "/" => 38,
- "(" => 40,
- "|" => 39,
- "*" => 41,
- "." => 42,
- ">" => 43
+ "{" => 37
},
- DEFAULT => -56
+ DEFAULT => -68
},
{#State 62
ACTIONS => {
- "," => 79,
- ")" => 80
- }
+ "{" => 37
+ },
+ DEFAULT => -69
},
{#State 63
- DEFAULT => -64
+ ACTIONS => {
+ "{" => 37
+ },
+ DEFAULT => -67
},
{#State 64
- DEFAULT => -63
+ ACTIONS => {
+ "," => 82,
+ ")" => 83
+ }
},
{#State 65
+ ACTIONS => {
+ "{" => 37
+ },
DEFAULT => -65
},
{#State 66
ACTIONS => {
- "-" => 35,
- "+" => 36,
- "&" => 37,
- "/" => 38,
- "(" => 40,
- "|" => 39,
- "*" => 41,
- "." => 42,
- ">" => 43
+ "{" => 37
},
- DEFAULT => -55
+ DEFAULT => -64
},
{#State 67
ACTIONS => {
- "{" => 81
- }
+ "{" => 37
+ },
+ DEFAULT => -66
},
{#State 68
- DEFAULT => -22
+ ACTIONS => {
+ "-" => 35,
+ "+" => 36,
+ "&" => 38,
+ "{" => 37,
+ "/" => 39,
+ "(" => 41,
+ "|" => 40,
+ "*" => 42,
+ "." => 43,
+ ">" => 44
+ },
+ DEFAULT => -56
},
{#State 69
ACTIONS => {
- "union" => 82,
- "[" => 7,
- "struct" => 83
+ "{" => 84
}
},
{#State 70
- DEFAULT => -21
+ DEFAULT => -23
},
{#State 71
- DEFAULT => -18
+ ACTIONS => {
+ "union" => 85,
+ "[" => 7,
+ "struct" => 86
+ }
},
{#State 72
- DEFAULT => -20
+ DEFAULT => -22
},
{#State 73
+ DEFAULT => -19
+ },
+ {#State 74
+ DEFAULT => -21
+ },
+ {#State 75
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 84
+ 'identifier' => 87
}
},
- {#State 74
- DEFAULT => -19
+ {#State 76
+ DEFAULT => -20
},
- {#State 75
+ {#State 77
ACTIONS => {
- ";" => 55
+ ";" => 56
},
- DEFAULT => -74,
+ DEFAULT => -76,
GOTOS => {
- 'optional_semicolon' => 85
+ 'optional_semicolon' => 88
}
},
- {#State 76
+ {#State 78
DEFAULT => -11
},
- {#State 77
+ {#State 79
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 86
+ 'identifier' => 89
}
},
- {#State 78
+ {#State 80
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 87
+ 'identifier' => 90
}
},
- {#State 79
+ {#State 81
ACTIONS => {
- 'IDENTIFIER' => 9,
'CONSTANT' => 28,
- 'TEXT' => 22
+ 'TEXT' => 22,
+ 'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 88,
+ 'anytext' => 91,
'constant' => 27
}
},
- {#State 80
+ {#State 82
ACTIONS => {
'CONSTANT' => 28,
'TEXT' => 22,
'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 89,
+ 'anytext' => 92,
'constant' => 27
}
},
- {#State 81
+ {#State 83
ACTIONS => {
+ 'CONSTANT' => 28,
+ 'TEXT' => 22,
'IDENTIFIER' => 9
},
+ DEFAULT => -59,
GOTOS => {
- 'identifier' => 90,
- 'enum_element' => 91,
- 'enum_elements' => 92
+ 'identifier' => 23,
+ 'text' => 24,
+ 'anytext' => 93,
+ 'constant' => 27
}
},
- {#State 82
+ {#State 84
+ ACTIONS => {
+ 'IDENTIFIER' => 9
+ },
+ GOTOS => {
+ 'identifier' => 94,
+ 'enum_element' => 95,
+ 'enum_elements' => 96
+ }
+ },
+ {#State 85
ACTIONS => {
- "{" => 93
+ "{" => 97
}
},
- {#State 83
+ {#State 86
ACTIONS => {
- "{" => 94
+ "{" => 98
}
},
- {#State 84
+ {#State 87
ACTIONS => {
- "[" => 96
+ "[" => 100
},
- DEFAULT => -45,
+ DEFAULT => -46,
GOTOS => {
- 'array_len' => 95
+ 'array_len' => 99
}
},
- {#State 85
+ {#State 88
DEFAULT => -7
},
- {#State 86
+ {#State 89
ACTIONS => {
- "(" => 97
+ "(" => 101
}
},
- {#State 87
+ {#State 90
ACTIONS => {
- "=" => 98
+ "[" => 100,
+ "=" => 103
+ },
+ GOTOS => {
+ 'array_len' => 102
}
},
- {#State 88
+ {#State 91
ACTIONS => {
"-" => 35,
"+" => 36,
- "&" => 37,
- "/" => 38,
- "(" => 40,
- "|" => 39,
- "*" => 41,
- "." => 42,
- ">" => 43
+ "*" => 42,
+ "{" => 37,
+ "&" => 38,
+ "/" => 39,
+ "|" => 40,
+ "(" => 41,
+ "." => 43,
+ ">" => 44
},
- DEFAULT => -57
+ DEFAULT => -72
},
- {#State 89
- DEFAULT => -70
+ {#State 92
+ ACTIONS => {
+ "-" => 35,
+ "+" => 36,
+ "&" => 38,
+ "{" => 37,
+ "/" => 39,
+ "(" => 41,
+ "|" => 40,
+ "*" => 42,
+ "." => 43,
+ ">" => 44
+ },
+ DEFAULT => -58
},
- {#State 90
+ {#State 93
ACTIONS => {
- "=" => 99
+ "{" => 37
},
- DEFAULT => -26
+ DEFAULT => -71
},
- {#State 91
- DEFAULT => -24
+ {#State 94
+ ACTIONS => {
+ "=" => 104
+ },
+ DEFAULT => -27
},
- {#State 92
+ {#State 95
+ DEFAULT => -25
+ },
+ {#State 96
ACTIONS => {
- "}" => 100,
- "," => 101
+ "}" => 105,
+ "," => 106
}
},
- {#State 93
+ {#State 97
ACTIONS => {
- "[" => 104
+ "[" => 109
},
GOTOS => {
- 'union_elements' => 102,
- 'union_element' => 103
+ 'union_elements' => 107,
+ 'union_element' => 108
}
},
- {#State 94
- DEFAULT => -39,
+ {#State 98
+ DEFAULT => -40,
GOTOS => {
- 'element_list1' => 105
+ 'element_list1' => 110
}
},
- {#State 95
+ {#State 99
ACTIONS => {
- ";" => 106
+ ";" => 111
}
},
- {#State 96
+ {#State 100
ACTIONS => {
'IDENTIFIER' => 9,
'CONSTANT' => 28,
'TEXT' => 22,
- "]" => 108
+ "]" => 113
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 107,
+ 'anytext' => 112,
'constant' => 27
}
},
- {#State 97
+ {#State 101
ACTIONS => {
- "," => -41,
- "void" => 111,
- ")" => -41
+ "," => -42,
+ "void" => 116,
+ ")" => -42
},
- DEFAULT => -48,
+ DEFAULT => -49,
GOTOS => {
- 'base_element' => 109,
- 'element_list2' => 112,
- 'property_list' => 110
+ 'base_element' => 114,
+ 'element_list2' => 117,
+ 'property_list' => 115
}
},
- {#State 98
+ {#State 102
+ ACTIONS => {
+ "=" => 118
+ }
+ },
+ {#State 103
ACTIONS => {
'IDENTIFIER' => 9,
'CONSTANT' => 28,
'TEXT' => 22
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 113,
+ 'anytext' => 119,
'constant' => 27
}
},
- {#State 99
+ {#State 104
ACTIONS => {
- 'IDENTIFIER' => 9,
'CONSTANT' => 28,
- 'TEXT' => 22
+ 'TEXT' => 22,
+ 'IDENTIFIER' => 9
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 114,
+ 'anytext' => 120,
'constant' => 27
}
},
- {#State 100
- DEFAULT => -23
+ {#State 105
+ DEFAULT => -24
},
- {#State 101
+ {#State 106
ACTIONS => {
'IDENTIFIER' => 9
},
GOTOS => {
- 'identifier' => 90,
- 'enum_element' => 115
+ 'identifier' => 94,
+ 'enum_element' => 121
}
},
- {#State 102
+ {#State 107
ACTIONS => {
- "}" => 116,
- "[" => 104
+ "}" => 122,
+ "[" => 109
},
GOTOS => {
- 'union_element' => 117
+ 'union_element' => 123
}
},
- {#State 103
- DEFAULT => -30
+ {#State 108
+ DEFAULT => -31
},
- {#State 104
+ {#State 109
ACTIONS => {
- "case" => 118,
- "default" => 119
+ "case" => 124,
+ "default" => 125
}
},
- {#State 105
+ {#State 110
ACTIONS => {
- "}" => 120
+ "}" => 126
},
- DEFAULT => -48,
+ DEFAULT => -49,
GOTOS => {
- 'base_element' => 121,
- 'property_list' => 110
+ 'base_element' => 127,
+ 'property_list' => 115
}
},
- {#State 106
- DEFAULT => -17
+ {#State 111
+ DEFAULT => -18
},
- {#State 107
+ {#State 112
ACTIONS => {
"-" => 35,
"+" => 36,
- "&" => 37,
- "/" => 38,
- "(" => 40,
- "|" => 39,
- "*" => 41,
- "." => 42,
- "]" => 122,
- ">" => 43
+ "&" => 38,
+ "{" => 37,
+ "/" => 39,
+ "(" => 41,
+ "|" => 40,
+ "*" => 42,
+ "." => 43,
+ "]" => 128,
+ ">" => 44
}
},
- {#State 108
- DEFAULT => -46
+ {#State 113
+ DEFAULT => -47
},
- {#State 109
- DEFAULT => -43
+ {#State 114
+ DEFAULT => -44
},
- {#State 110
+ {#State 115
ACTIONS => {
'IDENTIFIER' => 9,
- "enum" => 67,
+ "enum" => 69,
"[" => 7,
- 'void' => 68
+ 'void' => 70
},
- DEFAULT => -48,
+ DEFAULT => -49,
GOTOS => {
- 'identifier' => 70,
- 'struct' => 71,
- 'enum' => 72,
- 'type' => 123,
- 'union' => 74,
- 'property_list' => 69
+ 'identifier' => 72,
+ 'struct' => 73,
+ 'enum' => 74,
+ 'type' => 129,
+ 'union' => 76,
+ 'property_list' => 71
}
},
- {#State 111
- DEFAULT => -42
+ {#State 116
+ DEFAULT => -43
},
- {#State 112
+ {#State 117
ACTIONS => {
- "," => 124,
- ")" => 125
+ "," => 130,
+ ")" => 131
}
},
- {#State 113
+ {#State 118
+ ACTIONS => {
+ 'IDENTIFIER' => 9,
+ 'CONSTANT' => 28,
+ 'TEXT' => 22
+ },
+ DEFAULT => -59,
+ GOTOS => {
+ 'identifier' => 23,
+ 'text' => 24,
+ 'anytext' => 132,
+ 'constant' => 27
+ }
+ },
+ {#State 119
ACTIONS => {
"-" => 35,
- "|" => 39,
- "(" => 40,
- "*" => 41,
- ";" => 126,
+ ";" => 133,
"+" => 36,
- "&" => 37,
- "/" => 38,
- "." => 42,
- ">" => 43
+ "&" => 38,
+ "{" => 37,
+ "/" => 39,
+ "(" => 41,
+ "|" => 40,
+ "*" => 42,
+ "." => 43,
+ ">" => 44
}
},
- {#State 114
+ {#State 120
ACTIONS => {
"-" => 35,
"+" => 36,
- "&" => 37,
- "/" => 38,
- "(" => 40,
- "|" => 39,
- "*" => 41,
- "." => 42,
- ">" => 43
+ "&" => 38,
+ "{" => 37,
+ "/" => 39,
+ "(" => 41,
+ "|" => 40,
+ "*" => 42,
+ "." => 43,
+ ">" => 44
},
- DEFAULT => -27
+ DEFAULT => -28
},
- {#State 115
- DEFAULT => -25
+ {#State 121
+ DEFAULT => -26
},
- {#State 116
- DEFAULT => -29
+ {#State 122
+ DEFAULT => -30
},
- {#State 117
- DEFAULT => -31
+ {#State 123
+ DEFAULT => -32
},
- {#State 118
+ {#State 124
ACTIONS => {
- "(" => 127
+ "(" => 134
}
},
- {#State 119
+ {#State 125
ACTIONS => {
- "]" => 128
+ "]" => 135
}
},
- {#State 120
- DEFAULT => -28
+ {#State 126
+ DEFAULT => -29
},
- {#State 121
+ {#State 127
ACTIONS => {
- ";" => 129
+ ";" => 136
}
},
- {#State 122
- DEFAULT => -47
+ {#State 128
+ DEFAULT => -48
},
- {#State 123
- DEFAULT => -37,
+ {#State 129
+ DEFAULT => -38,
GOTOS => {
- 'pointers' => 130
+ 'pointers' => 137
}
},
- {#State 124
- DEFAULT => -48,
+ {#State 130
+ DEFAULT => -49,
GOTOS => {
- 'base_element' => 131,
- 'property_list' => 110
+ 'base_element' => 138,
+ 'property_list' => 115
}
},
- {#State 125
+ {#State 131
ACTIONS => {
- ";" => 132
+ ";" => 139
}
},
- {#State 126
+ {#State 132
+ ACTIONS => {
+ "-" => 35,
+ ";" => 140,
+ "+" => 36,
+ "&" => 38,
+ "{" => 37,
+ "/" => 39,
+ "(" => 41,
+ "|" => 40,
+ "*" => 42,
+ "." => 43,
+ ">" => 44
+ }
+ },
+ {#State 133
DEFAULT => -15
},
- {#State 127
+ {#State 134
ACTIONS => {
'IDENTIFIER' => 9,
'CONSTANT' => 28,
'TEXT' => 22
},
- DEFAULT => -58,
+ DEFAULT => -59,
GOTOS => {
'identifier' => 23,
'text' => 24,
- 'anytext' => 133,
+ 'anytext' => 141,
'constant' => 27
}
},
- {#State 128
+ {#State 135
ACTIONS => {
- ";" => 134
+ ";" => 142
},
- DEFAULT => -48,
+ DEFAULT => -49,
GOTOS => {
- 'base_element' => 135,
- 'property_list' => 110
+ 'base_element' => 143,
+ 'property_list' => 115
}
},
- {#State 129
- DEFAULT => -40
+ {#State 136
+ DEFAULT => -41
},
- {#State 130
+ {#State 137
ACTIONS => {
'IDENTIFIER' => 9,
- "*" => 137
+ "*" => 145
},
GOTOS => {
- 'identifier' => 136
+ 'identifier' => 144
}
},
- {#State 131
- DEFAULT => -44
+ {#State 138
+ DEFAULT => -45
},
- {#State 132
+ {#State 139
+ DEFAULT => -17
+ },
+ {#State 140
DEFAULT => -16
},
- {#State 133
+ {#State 141
ACTIONS => {
"-" => 35,
"+" => 36,
- "&" => 37,
- "/" => 38,
- "(" => 40,
- "|" => 39,
- "*" => 41,
- "." => 42,
- ")" => 138,
- ">" => 43
+ "&" => 38,
+ "{" => 37,
+ "/" => 39,
+ "(" => 41,
+ "|" => 40,
+ "*" => 42,
+ "." => 43,
+ ")" => 146,
+ ">" => 44
}
},
- {#State 134
- DEFAULT => -35
+ {#State 142
+ DEFAULT => -36
},
- {#State 135
+ {#State 143
ACTIONS => {
- ";" => 139
+ ";" => 147
}
},
- {#State 136
+ {#State 144
ACTIONS => {
- "[" => 96
+ "[" => 100
},
- DEFAULT => -45,
+ DEFAULT => -46,
GOTOS => {
- 'array_len' => 140
+ 'array_len' => 148
}
},
- {#State 137
- DEFAULT => -38
+ {#State 145
+ DEFAULT => -39
},
- {#State 138
+ {#State 146
ACTIONS => {
- "]" => 141
+ "]" => 149
}
},
- {#State 139
- DEFAULT => -34
+ {#State 147
+ DEFAULT => -35
},
- {#State 140
- DEFAULT => -36
+ {#State 148
+ DEFAULT => -37
},
- {#State 141
+ {#State 149
ACTIONS => {
- ";" => 142
+ ";" => 150
},
- DEFAULT => -48,
+ DEFAULT => -49,
GOTOS => {
- 'base_element' => 143,
- 'property_list' => 110
+ 'base_element' => 151,
+ 'property_list' => 115
}
},
- {#State 142
- DEFAULT => -33
+ {#State 150
+ DEFAULT => -34
},
- {#State 143
+ {#State 151
ACTIONS => {
- ";" => 144
+ ";" => 152
}
},
- {#State 144
- DEFAULT => -32
+ {#State 152
+ DEFAULT => -33
}
],
yyrules =>
@@ -1608,9 +1734,21 @@ sub
}}
],
[#Rule 16
+ 'const', 7,
+sub
+#line 69 "build/pidl/idl.yp"
+{{
+ "TYPE" => "CONST",
+ "DTYPE" => $_[2],
+ "NAME" => $_[3],
+ "ARRAY_LEN" => $_[4],
+ "VALUE" => $_[6],
+ }}
+ ],
+ [#Rule 17
'function', 7,
sub
-#line 72 "build/pidl/idl.yp"
+#line 80 "build/pidl/idl.yp"
{{
"TYPE" => "FUNCTION",
"NAME" => $_[3],
@@ -1619,10 +1757,10 @@ sub
"DATA" => $_[5]
}}
],
- [#Rule 17
+ [#Rule 18
'typedef', 5,
sub
-#line 82 "build/pidl/idl.yp"
+#line 90 "build/pidl/idl.yp"
{{
"TYPE" => "TYPEDEF",
"NAME" => $_[3],
@@ -1630,9 +1768,6 @@ sub
"ARRAY_LEN" => $_[4]
}}
],
- [#Rule 18
- 'type', 1, undef
- ],
[#Rule 19
'type', 1, undef
],
@@ -1643,115 +1778,118 @@ sub
'type', 1, undef
],
[#Rule 22
+ 'type', 1, undef
+ ],
+ [#Rule 23
'type', 1,
sub
-#line 91 "build/pidl/idl.yp"
+#line 99 "build/pidl/idl.yp"
{ "void" }
],
- [#Rule 23
+ [#Rule 24
'enum', 4,
sub
-#line 96 "build/pidl/idl.yp"
+#line 104 "build/pidl/idl.yp"
{{
"TYPE" => "ENUM",
"ELEMENTS" => $_[3]
}}
],
- [#Rule 24
+ [#Rule 25
'enum_elements', 1,
sub
-#line 103 "build/pidl/idl.yp"
+#line 111 "build/pidl/idl.yp"
{ [ $_[1] ] }
],
- [#Rule 25
+ [#Rule 26
'enum_elements', 3,
sub
-#line 104 "build/pidl/idl.yp"
+#line 112 "build/pidl/idl.yp"
{ push(@{$_[1]}, $_[3]); $_[1] }
],
- [#Rule 26
+ [#Rule 27
'enum_element', 1, undef
],
- [#Rule 27
+ [#Rule 28
'enum_element', 3,
sub
-#line 108 "build/pidl/idl.yp"
+#line 116 "build/pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 28
+ [#Rule 29
'struct', 5,
sub
-#line 112 "build/pidl/idl.yp"
+#line 120 "build/pidl/idl.yp"
{{
"TYPE" => "STRUCT",
"PROPERTIES" => $_[1],
"ELEMENTS" => $_[4]
}}
],
- [#Rule 29
+ [#Rule 30
'union', 5,
sub
-#line 120 "build/pidl/idl.yp"
+#line 128 "build/pidl/idl.yp"
{{
"TYPE" => "UNION",
"PROPERTIES" => $_[1],
"DATA" => $_[4]
}}
],
- [#Rule 30
+ [#Rule 31
'union_elements', 1,
sub
-#line 128 "build/pidl/idl.yp"
+#line 136 "build/pidl/idl.yp"
{ [ $_[1] ] }
],
- [#Rule 31
+ [#Rule 32
'union_elements', 2,
sub
-#line 129 "build/pidl/idl.yp"
+#line 137 "build/pidl/idl.yp"
{ push(@{$_[1]}, $_[2]); $_[1] }
],
- [#Rule 32
+ [#Rule 33
'union_element', 8,
sub
-#line 134 "build/pidl/idl.yp"
+#line 142 "build/pidl/idl.yp"
{{
"TYPE" => "UNION_ELEMENT",
"CASE" => $_[4],
"DATA" => $_[7]
}}
],
- [#Rule 33
+ [#Rule 34
'union_element', 7,
sub
-#line 140 "build/pidl/idl.yp"
+#line 148 "build/pidl/idl.yp"
{{
"TYPE" => "EMPTY",
"CASE" => $_[4],
}}
],
- [#Rule 34
+ [#Rule 35
'union_element', 5,
sub
-#line 145 "build/pidl/idl.yp"
+#line 153 "build/pidl/idl.yp"
{{
"TYPE" => "UNION_ELEMENT",
"CASE" => "default",
"DATA" => $_[4]
}}
],
- [#Rule 35
+ [#Rule 36
'union_element', 4,
sub
-#line 151 "build/pidl/idl.yp"
+#line 159 "build/pidl/idl.yp"
{{
"TYPE" => "EMPTY",
"CASE" => "default",
}}
],
- [#Rule 36
+ [#Rule 37
'base_element', 5,
sub
-#line 158 "build/pidl/idl.yp"
+#line 166 "build/pidl/idl.yp"
{{
"NAME" => $_[4],
"TYPE" => $_[2],
@@ -1760,120 +1898,117 @@ sub
"ARRAY_LEN" => $_[5]
}}
],
- [#Rule 37
+ [#Rule 38
'pointers', 0,
sub
-#line 170 "build/pidl/idl.yp"
+#line 178 "build/pidl/idl.yp"
{ 0 }
],
- [#Rule 38
+ [#Rule 39
'pointers', 2,
sub
-#line 171 "build/pidl/idl.yp"
+#line 179 "build/pidl/idl.yp"
{ $_[1]+1 }
],
- [#Rule 39
+ [#Rule 40
'element_list1', 0, undef
],
- [#Rule 40
+ [#Rule 41
'element_list1', 3,
sub
-#line 178 "build/pidl/idl.yp"
+#line 186 "build/pidl/idl.yp"
{ push(@{$_[1]}, $_[2]); $_[1] }
],
- [#Rule 41
+ [#Rule 42
'element_list2', 0, undef
],
- [#Rule 42
+ [#Rule 43
'element_list2', 1, undef
],
- [#Rule 43
+ [#Rule 44
'element_list2', 1,
sub
-#line 184 "build/pidl/idl.yp"
+#line 192 "build/pidl/idl.yp"
{ [ $_[1] ] }
],
- [#Rule 44
+ [#Rule 45
'element_list2', 3,
sub
-#line 185 "build/pidl/idl.yp"
+#line 193 "build/pidl/idl.yp"
{ push(@{$_[1]}, $_[3]); $_[1] }
],
- [#Rule 45
+ [#Rule 46
'array_len', 0, undef
],
- [#Rule 46
+ [#Rule 47
'array_len', 2,
sub
-#line 190 "build/pidl/idl.yp"
+#line 198 "build/pidl/idl.yp"
{ "*" }
],
- [#Rule 47
+ [#Rule 48
'array_len', 3,
sub
-#line 191 "build/pidl/idl.yp"
+#line 199 "build/pidl/idl.yp"
{ "$_[2]" }
],
- [#Rule 48
+ [#Rule 49
'property_list', 0, undef
],
- [#Rule 49
+ [#Rule 50
'property_list', 4,
sub
-#line 197 "build/pidl/idl.yp"
+#line 205 "build/pidl/idl.yp"
{ util::FlattenHash([$_[1],$_[3]]); }
],
- [#Rule 50
+ [#Rule 51
'properties', 1,
sub
-#line 200 "build/pidl/idl.yp"
+#line 208 "build/pidl/idl.yp"
{ $_[1] }
],
- [#Rule 51
+ [#Rule 52
'properties', 3,
sub
-#line 201 "build/pidl/idl.yp"
+#line 209 "build/pidl/idl.yp"
{ util::FlattenHash([$_[1], $_[3]]); }
],
- [#Rule 52
+ [#Rule 53
'property', 1,
sub
-#line 204 "build/pidl/idl.yp"
+#line 212 "build/pidl/idl.yp"
{{ "$_[1]" => "1" }}
],
- [#Rule 53
+ [#Rule 54
'property', 4,
sub
-#line 205 "build/pidl/idl.yp"
+#line 213 "build/pidl/idl.yp"
{{ "$_[1]" => "$_[3]" }}
],
- [#Rule 54
+ [#Rule 55
'listtext', 1, undef
],
- [#Rule 55
+ [#Rule 56
'listtext', 3,
sub
-#line 210 "build/pidl/idl.yp"
+#line 218 "build/pidl/idl.yp"
{ "$_[1] $_[3]" }
],
- [#Rule 56
+ [#Rule 57
'commalisttext', 1, undef
],
- [#Rule 57
+ [#Rule 58
'commalisttext', 3,
sub
-#line 215 "build/pidl/idl.yp"
+#line 223 "build/pidl/idl.yp"
{ "$_[1],$_[3]" }
],
- [#Rule 58
+ [#Rule 59
'anytext', 0,
sub
-#line 219 "build/pidl/idl.yp"
+#line 227 "build/pidl/idl.yp"
{ "" }
],
- [#Rule 59
- 'anytext', 1, undef
- ],
[#Rule 60
'anytext', 1, undef
],
@@ -1881,75 +2016,84 @@ sub
'anytext', 1, undef
],
[#Rule 62
- 'anytext', 3,
-sub
-#line 221 "build/pidl/idl.yp"
-{ "$_[1]$_[2]$_[3]" }
+ 'anytext', 1, undef
],
[#Rule 63
'anytext', 3,
sub
-#line 222 "build/pidl/idl.yp"
+#line 229 "build/pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 64
'anytext', 3,
sub
-#line 223 "build/pidl/idl.yp"
+#line 230 "build/pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 65
'anytext', 3,
sub
-#line 224 "build/pidl/idl.yp"
+#line 231 "build/pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 66
'anytext', 3,
sub
-#line 225 "build/pidl/idl.yp"
+#line 232 "build/pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 67
'anytext', 3,
sub
-#line 226 "build/pidl/idl.yp"
+#line 233 "build/pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 68
'anytext', 3,
sub
-#line 227 "build/pidl/idl.yp"
+#line 234 "build/pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 69
'anytext', 3,
sub
-#line 228 "build/pidl/idl.yp"
+#line 235 "build/pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 70
+ 'anytext', 3,
+sub
+#line 236 "build/pidl/idl.yp"
+{ "$_[1]$_[2]$_[3]" }
+ ],
+ [#Rule 71
'anytext', 5,
sub
-#line 229 "build/pidl/idl.yp"
+#line 237 "build/pidl/idl.yp"
{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
],
- [#Rule 71
+ [#Rule 72
+ 'anytext', 5,
+sub
+#line 238 "build/pidl/idl.yp"
+{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
+ ],
+ [#Rule 73
'identifier', 1, undef
],
- [#Rule 72
+ [#Rule 74
'constant', 1, undef
],
- [#Rule 73
+ [#Rule 75
'text', 1,
sub
-#line 238 "build/pidl/idl.yp"
+#line 247 "build/pidl/idl.yp"
{ "\"$_[1]\"" }
],
- [#Rule 74
+ [#Rule 76
'optional_semicolon', 0, undef
],
- [#Rule 75
+ [#Rule 77
'optional_semicolon', 1, undef
]
],
@@ -1957,7 +2101,7 @@ sub
bless($self,$class);
}
-#line 249 "build/pidl/idl.yp"
+#line 258 "build/pidl/idl.yp"
use util;
diff --git a/source4/build/pidl/idl.yp b/source4/build/pidl/idl.yp
index 24f88dd531..fb2433ee72 100644
--- a/source4/build/pidl/idl.yp
+++ b/source4/build/pidl/idl.yp
@@ -65,6 +65,14 @@ const: 'const' identifier identifier '=' anytext ';'
"NAME" => $_[3],
"VALUE" => $_[5]
}}
+ | 'const' identifier identifier array_len '=' anytext ';'
+ {{
+ "TYPE" => "CONST",
+ "DTYPE" => $_[2],
+ "NAME" => $_[3],
+ "ARRAY_LEN" => $_[4],
+ "VALUE" => $_[6],
+ }}
;
@@ -227,6 +235,7 @@ anytext: #empty
| 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]" }
;
identifier: IDENTIFIER