r7036: Allow more operations in several properties (such as size_is, length_is,
authorJelmer Vernooij <jelmer@samba.org>
Fri, 27 May 2005 18:14:43 +0000 (18:14 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:17:07 +0000 (13:17 -0500)
switch_is, etc) and simplify the code involved

source/build/pidl/idl.pm
source/build/pidl/idl.yp
source/build/pidl/ndr_parser.pm
source/librpc/idl/orpc.idl

index 1e15db18c8c8a2a23723c1a9a7495c0cb479d6bc..21c06ab200505f6206ac8a626fe51c5b36f5faf1 100644 (file)
@@ -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;
index f81316cd9fe0e1a2a7da6ca5eb28ab647137d3a4..2b839b0e21aa7860f09c14c4111f09627cdda892 100644 (file)
@@ -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]" }
 ;
index 1abf8f7006e09d1ed8ce7b253d3cf58fc3a83272..f94de5e2be33b28e8b93be849423938fa8dd95a0 100644 (file)
@@ -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;
 }
 
 #####################################################################
index 0e407a4d13a9708a3dbc802b7a3bd17064080984..4b80c5bfe63f737dd5ae64a2d11bacf90d60855e 100644 (file)
@@ -59,8 +59,7 @@ interface ObjectRpcBaseTypes
        {       
                GUID id; /* Extension identifier. */
                uint32 size; /* Extension size. */
-               /*FIXME[size_is((size+7)&~7)] uint8 data[]; Extension data. */
-               [size_is(size)] uint8 data[];
+               [size_is((size+7)&~7)] uint8 data[]; /* Extension data. */
        }       ORPC_EXTENT;
 
 
@@ -69,8 +68,7 @@ interface ObjectRpcBaseTypes
        {
                uint32 size; /* Num extents. */
                uint32 reserved; /* Must be zero. */
-               /*FIXME[size_is((size+1)&~1,), unique] ORPC_EXTENT **extent; extents */
-               [size_is(size)] ORPC_EXTENT extent[];
+               [size_is((size+1)&~1,), unique] ORPC_EXTENT **extent; /* extents */
        } ORPC_EXTENT_ARRAY;