Annotation of src/usr.bin/rpcgen/rpc_parse.h, Revision 1.4
1.3 deraadt 1: /* $OpenBSD: rpc_parse.h,v 1.2 1996/06/26 05:38:37 deraadt Exp $ */
1.1 deraadt 2: /* $NetBSD: rpc_parse.h,v 1.3 1995/06/11 21:50:00 pk Exp $ */
3: /*
4: * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
5: * unrestricted use provided that this legend is included on all tape
6: * media and as a part of the software program in whole or part. Users
7: * may copy or modify Sun RPC without charge, but are not authorized
8: * to license or distribute it to anyone else except as part of a product or
9: * program developed by the user or with the express written consent of
10: * Sun Microsystems, Inc.
11: *
12: * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
13: * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
14: * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
15: *
16: * Sun RPC is provided with no support and without any obligation on the
17: * part of Sun Microsystems, Inc. to assist in its use, correction,
18: * modification or enhancement.
19: *
20: * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
21: * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
22: * OR ANY PART THEREOF.
23: *
24: * In no event will Sun Microsystems, Inc. be liable for any lost revenue
25: * or profits or other special, indirect and consequential damages, even if
26: * Sun has been advised of the possibility of such damages.
27: *
28: * Sun Microsystems, Inc.
29: * 2550 Garcia Avenue
30: * Mountain View, California 94043
31: */
32:
33: /* @(#)rpc_parse.h 1.3 90/08/29 (C) 1987 SMI */
34:
35: /*
36: * rpc_parse.h, Definitions for the RPCL parser
37: */
38:
39: enum defkind {
40: DEF_CONST,
41: DEF_STRUCT,
42: DEF_UNION,
43: DEF_ENUM,
44: DEF_TYPEDEF,
45: DEF_PROGRAM
46: };
47: typedef enum defkind defkind;
48:
49: typedef char *const_def;
50:
51: enum relation {
52: REL_VECTOR, /* fixed length array */
53: REL_ARRAY, /* variable length array */
54: REL_POINTER, /* pointer */
55: REL_ALIAS, /* simple */
56: };
57: typedef enum relation relation;
58:
59: struct typedef_def {
60: char *old_prefix;
61: char *old_type;
62: relation rel;
63: char *array_max;
64: };
65: typedef struct typedef_def typedef_def;
66:
67: struct enumval_list {
68: char *name;
69: char *assignment;
70: struct enumval_list *next;
71: };
72: typedef struct enumval_list enumval_list;
73:
74: struct enum_def {
75: enumval_list *vals;
76: };
77: typedef struct enum_def enum_def;
78:
79: struct declaration {
80: char *prefix;
81: char *type;
82: char *name;
83: relation rel;
84: char *array_max;
85: };
86: typedef struct declaration declaration;
87:
88: struct decl_list {
89: declaration decl;
90: struct decl_list *next;
91: };
92: typedef struct decl_list decl_list;
93:
94: struct struct_def {
95: decl_list *decls;
96: };
97: typedef struct struct_def struct_def;
98:
99: struct case_list {
100: char *case_name;
101: int contflag;
102: declaration case_decl;
103: struct case_list *next;
104: };
105: typedef struct case_list case_list;
106:
107: struct union_def {
108: declaration enum_decl;
109: case_list *cases;
110: declaration *default_decl;
111: };
112: typedef struct union_def union_def;
113:
114: struct arg_list {
115: char *argname; /* name of struct for arg*/
116: decl_list *decls;
117: };
1.4 ! deraadt 118:
1.1 deraadt 119: typedef struct arg_list arg_list;
120:
121: struct proc_list {
122: char *proc_name;
123: char *proc_num;
124: arg_list args;
125: int arg_num;
126: char *res_type;
127: char *res_prefix;
128: struct proc_list *next;
129: };
130: typedef struct proc_list proc_list;
131:
132: struct version_list {
133: char *vers_name;
134: char *vers_num;
135: proc_list *procs;
136: struct version_list *next;
137: };
138: typedef struct version_list version_list;
139:
140: struct program_def {
141: char *prog_num;
142: version_list *versions;
143: };
144: typedef struct program_def program_def;
145:
146: struct definition {
147: char *def_name;
148: defkind def_kind;
149: union {
150: const_def co;
151: struct_def st;
152: union_def un;
153: enum_def en;
154: typedef_def ty;
155: program_def pr;
156: } def;
157: };
158: typedef struct definition definition;
159:
160: definition *get_definition();
161:
162:
163: struct bas_type
164: {
165: char *name;
166: int length;
167: struct bas_type *next;
168: };
169:
170: typedef struct bas_type bas_type;