xref: /netbsd-src/usr.bin/rpcgen/rpc_parse.h (revision 8cde9e3d9bdd15b5358c28e62faa0527d6c20f9f)
1*8cde9e3dSchristos /*	$NetBSD: rpc_parse.h,v 1.6 2015/05/09 21:44:47 christos Exp $	*/
28f0abce1Sglass /*
38f0abce1Sglass  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
48f0abce1Sglass  * unrestricted use provided that this legend is included on all tape
58f0abce1Sglass  * media and as a part of the software program in whole or part.  Users
68f0abce1Sglass  * may copy or modify Sun RPC without charge, but are not authorized
78f0abce1Sglass  * to license or distribute it to anyone else except as part of a product or
871a0fb45Spk  * program developed by the user or with the express written consent of
971a0fb45Spk  * Sun Microsystems, Inc.
108f0abce1Sglass  *
118f0abce1Sglass  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
128f0abce1Sglass  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
138f0abce1Sglass  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
148f0abce1Sglass  *
158f0abce1Sglass  * Sun RPC is provided with no support and without any obligation on the
168f0abce1Sglass  * part of Sun Microsystems, Inc. to assist in its use, correction,
178f0abce1Sglass  * modification or enhancement.
188f0abce1Sglass  *
198f0abce1Sglass  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
208f0abce1Sglass  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
218f0abce1Sglass  * OR ANY PART THEREOF.
228f0abce1Sglass  *
238f0abce1Sglass  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
248f0abce1Sglass  * or profits or other special, indirect and consequential damages, even if
258f0abce1Sglass  * Sun has been advised of the possibility of such damages.
268f0abce1Sglass  *
278f0abce1Sglass  * Sun Microsystems, Inc.
288f0abce1Sglass  * 2550 Garcia Avenue
298f0abce1Sglass  * Mountain View, California  94043
308f0abce1Sglass  */
318f0abce1Sglass 
3271a0fb45Spk /*      @(#)rpc_parse.h  1.3  90/08/29  (C) 1987 SMI   */
3371a0fb45Spk 
348f0abce1Sglass /*
358f0abce1Sglass  * rpc_parse.h, Definitions for the RPCL parser
368f0abce1Sglass  */
378f0abce1Sglass 
388f0abce1Sglass enum defkind {
398f0abce1Sglass 	DEF_CONST,
408f0abce1Sglass 	DEF_STRUCT,
418f0abce1Sglass 	DEF_UNION,
428f0abce1Sglass 	DEF_ENUM,
438f0abce1Sglass 	DEF_TYPEDEF,
448f0abce1Sglass 	DEF_PROGRAM
458f0abce1Sglass };
468f0abce1Sglass typedef enum defkind defkind;
478f0abce1Sglass 
48e9067f11Sdholland typedef const char *const_def;
498f0abce1Sglass 
508f0abce1Sglass enum relation {
518f0abce1Sglass 	REL_VECTOR,	/* fixed length array */
528f0abce1Sglass 	REL_ARRAY,	/* variable length array */
538f0abce1Sglass 	REL_POINTER,	/* pointer */
548f0abce1Sglass 	REL_ALIAS,	/* simple */
558f0abce1Sglass };
568f0abce1Sglass typedef enum relation relation;
578f0abce1Sglass 
588f0abce1Sglass struct typedef_def {
59e9067f11Sdholland 	const char *old_prefix;
60e9067f11Sdholland 	const char *old_type;
618f0abce1Sglass 	relation rel;
62e9067f11Sdholland 	const char *array_max;
638f0abce1Sglass };
648f0abce1Sglass typedef struct typedef_def typedef_def;
658f0abce1Sglass 
668f0abce1Sglass struct enumval_list {
67e9067f11Sdholland 	const char *name;
68e9067f11Sdholland 	const char *assignment;
698f0abce1Sglass 	struct enumval_list *next;
708f0abce1Sglass };
718f0abce1Sglass typedef struct enumval_list enumval_list;
728f0abce1Sglass 
738f0abce1Sglass struct enum_def {
748f0abce1Sglass 	enumval_list *vals;
758f0abce1Sglass };
768f0abce1Sglass typedef struct enum_def enum_def;
778f0abce1Sglass 
788f0abce1Sglass struct declaration {
79e9067f11Sdholland 	const char *prefix;
80e9067f11Sdholland 	const char *type;
81e9067f11Sdholland 	const char *name;
828f0abce1Sglass 	relation rel;
83e9067f11Sdholland 	const char *array_max;
848f0abce1Sglass };
858f0abce1Sglass typedef struct declaration declaration;
868f0abce1Sglass 
878f0abce1Sglass struct decl_list {
888f0abce1Sglass 	declaration decl;
898f0abce1Sglass 	struct decl_list *next;
908f0abce1Sglass };
918f0abce1Sglass typedef struct decl_list decl_list;
928f0abce1Sglass 
938f0abce1Sglass struct struct_def {
948f0abce1Sglass 	decl_list *decls;
958f0abce1Sglass };
968f0abce1Sglass typedef struct struct_def struct_def;
978f0abce1Sglass 
988f0abce1Sglass struct case_list {
99e9067f11Sdholland 	const char *case_name;
10071a0fb45Spk 	int contflag;
1018f0abce1Sglass 	declaration case_decl;
1028f0abce1Sglass 	struct case_list *next;
1038f0abce1Sglass };
1048f0abce1Sglass typedef struct case_list case_list;
1058f0abce1Sglass 
1068f0abce1Sglass struct union_def {
1078f0abce1Sglass 	declaration enum_decl;
1088f0abce1Sglass 	case_list *cases;
1098f0abce1Sglass 	declaration *default_decl;
1108f0abce1Sglass };
1118f0abce1Sglass typedef struct union_def union_def;
1128f0abce1Sglass 
11371a0fb45Spk struct arg_list {
11471a0fb45Spk 	char *argname; /* name of struct for arg*/
11571a0fb45Spk 	decl_list *decls;
11671a0fb45Spk };
1178f0abce1Sglass 
11871a0fb45Spk typedef struct arg_list arg_list;
1198f0abce1Sglass 
1208f0abce1Sglass struct proc_list {
121e9067f11Sdholland 	const char *proc_name;
122e9067f11Sdholland 	const char *proc_num;
12371a0fb45Spk 	arg_list args;
12471a0fb45Spk 	int arg_num;
125e9067f11Sdholland 	const char *res_type;
126e9067f11Sdholland 	const char *res_prefix;
1278f0abce1Sglass 	struct proc_list *next;
1288f0abce1Sglass };
1298f0abce1Sglass typedef struct proc_list proc_list;
1308f0abce1Sglass 
1318f0abce1Sglass struct version_list {
132e9067f11Sdholland 	const char *vers_name;
133e9067f11Sdholland 	const char *vers_num;
1348f0abce1Sglass 	proc_list *procs;
1358f0abce1Sglass 	struct version_list *next;
1368f0abce1Sglass };
1378f0abce1Sglass typedef struct version_list version_list;
1388f0abce1Sglass 
1398f0abce1Sglass struct program_def {
140e9067f11Sdholland 	const char *prog_num;
1418f0abce1Sglass 	version_list *versions;
1428f0abce1Sglass };
1438f0abce1Sglass typedef struct program_def program_def;
1448f0abce1Sglass 
1458f0abce1Sglass struct definition {
146e9067f11Sdholland 	const char *def_name;
1478f0abce1Sglass 	defkind def_kind;
1488f0abce1Sglass 	union {
1498f0abce1Sglass 		const_def co;
1508f0abce1Sglass 		struct_def st;
1518f0abce1Sglass 		union_def un;
1528f0abce1Sglass 		enum_def en;
1538f0abce1Sglass 		typedef_def ty;
1548f0abce1Sglass 		program_def pr;
1558f0abce1Sglass 	} def;
1568f0abce1Sglass };
1578f0abce1Sglass typedef struct definition definition;
1588f0abce1Sglass 
159*8cde9e3dSchristos definition *get_definition(void);
16071a0fb45Spk 
16171a0fb45Spk struct bas_type
16271a0fb45Spk {
163e9067f11Sdholland   const char *name;
16471a0fb45Spk   int length;
16571a0fb45Spk   struct bas_type *next;
16671a0fb45Spk };
16771a0fb45Spk 
16871a0fb45Spk typedef struct bas_type bas_type;
169