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