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