Reinitialize _create_xid state after fork.
[platform/upstream/glibc.git] / sunrpc / rpc_scan.h
1 /*      @(#)rpc_scan.h  1.3  90/08/29  (C) 1987 SMI   */
2
3 /*
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  *     * Redistributions of source code must retain the above copyright
9  *       notice, this list of conditions and the following disclaimer.
10  *     * Redistributions in binary form must reproduce the above
11  *       copyright notice, this list of conditions and the following
12  *       disclaimer in the documentation and/or other materials
13  *       provided with the distribution.
14  *     * Neither the name of Sun Microsystems, Inc. nor the names of its
15  *       contributors may be used to endorse or promote products derived
16  *       from this software without specific prior written permission.
17  *
18  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21  *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22  *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23  *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24  *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
25  *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27  *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28  *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  *
31  * rpc_scan.h, Definitions for the RPCL scanner
32  */
33
34 /*
35  * kinds of tokens
36  */
37 enum tok_kind {
38         TOK_IDENT,
39         TOK_CHARCONST,
40         TOK_STRCONST,
41         TOK_LPAREN,
42         TOK_RPAREN,
43         TOK_LBRACE,
44         TOK_RBRACE,
45         TOK_LBRACKET,
46         TOK_RBRACKET,
47         TOK_LANGLE,
48         TOK_RANGLE,
49         TOK_STAR,
50         TOK_COMMA,
51         TOK_EQUAL,
52         TOK_COLON,
53         TOK_SEMICOLON,
54         TOK_CONST,
55         TOK_STRUCT,
56         TOK_UNION,
57         TOK_SWITCH,
58         TOK_CASE,
59         TOK_DEFAULT,
60         TOK_ENUM,
61         TOK_TYPEDEF,
62         TOK_INT,
63         TOK_SHORT,
64         TOK_LONG,
65         TOK_HYPER,
66         TOK_UNSIGNED,
67         TOK_FLOAT,
68         TOK_DOUBLE,
69         TOK_OPAQUE,
70         TOK_CHAR,
71         TOK_STRING,
72         TOK_BOOL,
73         TOK_VOID,
74         TOK_PROGRAM,
75         TOK_VERSION,
76         TOK_EOF
77 };
78 typedef enum tok_kind tok_kind;
79
80 /*
81  * a token
82  */
83 struct token {
84         tok_kind kind;
85         const char *str;
86 };
87 typedef struct token token;
88
89
90 /*
91  * routine interface
92  */
93 void scan(tok_kind expect, token *tokp);
94 void scan2(tok_kind expect1, tok_kind expect2, token *tokp);
95 void scan3(tok_kind expect1, tok_kind expect2, tok_kind expect3, token *tokp);
96 void scan_num(token *tokp);
97 void peek(token *tokp);
98 int peekscan(tok_kind expect, token *tokp);
99 void get_token(token *tokp);
100 void expected1(tok_kind exp1) __attribute__ ((noreturn));
101 void expected2(tok_kind exp1, tok_kind exp2)  __attribute__ ((noreturn));
102 void expected3(tok_kind exp1, tok_kind exp2, tok_kind exp3)
103      __attribute__ ((noreturn));