1*cb7760d1Smillert /* $OpenBSD: rpc_parse.h,v 1.9 2010/09/01 14:43:34 millert Exp $ */ 2df930be7Sderaadt /* $NetBSD: rpc_parse.h,v 1.3 1995/06/11 21:50:00 pk Exp $ */ 3*cb7760d1Smillert 4df930be7Sderaadt /* 5*cb7760d1Smillert * Copyright (c) 2010, Oracle America, Inc. 6df930be7Sderaadt * 7*cb7760d1Smillert * Redistribution and use in source and binary forms, with or without 8*cb7760d1Smillert * modification, are permitted provided that the following conditions are 9*cb7760d1Smillert * met: 10df930be7Sderaadt * 11*cb7760d1Smillert * * Redistributions of source code must retain the above copyright 12*cb7760d1Smillert * notice, this list of conditions and the following disclaimer. 13*cb7760d1Smillert * * Redistributions in binary form must reproduce the above 14*cb7760d1Smillert * copyright notice, this list of conditions and the following 15*cb7760d1Smillert * disclaimer in the documentation and/or other materials 16*cb7760d1Smillert * provided with the distribution. 17*cb7760d1Smillert * * Neither the name of the "Oracle America, Inc." nor the names of its 18*cb7760d1Smillert * contributors may be used to endorse or promote products derived 19*cb7760d1Smillert * from this software without specific prior written permission. 20df930be7Sderaadt * 21*cb7760d1Smillert * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22*cb7760d1Smillert * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23*cb7760d1Smillert * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24*cb7760d1Smillert * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25*cb7760d1Smillert * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 26*cb7760d1Smillert * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27*cb7760d1Smillert * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 28*cb7760d1Smillert * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 29*cb7760d1Smillert * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 30*cb7760d1Smillert * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 31*cb7760d1Smillert * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 32*cb7760d1Smillert * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33df930be7Sderaadt */ 34df930be7Sderaadt 35df930be7Sderaadt /* @(#)rpc_parse.h 1.3 90/08/29 (C) 1987 SMI */ 36df930be7Sderaadt 37df930be7Sderaadt /* 38df930be7Sderaadt * rpc_parse.h, Definitions for the RPCL parser 39df930be7Sderaadt */ 40df930be7Sderaadt 41df930be7Sderaadt enum defkind { 42df930be7Sderaadt DEF_CONST, 43df930be7Sderaadt DEF_STRUCT, 44df930be7Sderaadt DEF_UNION, 45df930be7Sderaadt DEF_ENUM, 46df930be7Sderaadt DEF_TYPEDEF, 47df930be7Sderaadt DEF_PROGRAM 48df930be7Sderaadt }; 49df930be7Sderaadt typedef enum defkind defkind; 50df930be7Sderaadt 51df930be7Sderaadt typedef char *const_def; 52df930be7Sderaadt 53df930be7Sderaadt enum relation { 54df930be7Sderaadt REL_VECTOR, /* fixed length array */ 55df930be7Sderaadt REL_ARRAY, /* variable length array */ 56df930be7Sderaadt REL_POINTER, /* pointer */ 574c277196Sderaadt REL_ALIAS /* simple */ 58df930be7Sderaadt }; 59df930be7Sderaadt typedef enum relation relation; 60df930be7Sderaadt 61df930be7Sderaadt struct typedef_def { 62df930be7Sderaadt char *old_prefix; 63df930be7Sderaadt char *old_type; 64df930be7Sderaadt relation rel; 65df930be7Sderaadt char *array_max; 66df930be7Sderaadt }; 67df930be7Sderaadt typedef struct typedef_def typedef_def; 68df930be7Sderaadt 69df930be7Sderaadt struct enumval_list { 70df930be7Sderaadt char *name; 71df930be7Sderaadt char *assignment; 72df930be7Sderaadt struct enumval_list *next; 73df930be7Sderaadt }; 74df930be7Sderaadt typedef struct enumval_list enumval_list; 75df930be7Sderaadt 76df930be7Sderaadt struct enum_def { 77df930be7Sderaadt enumval_list *vals; 78df930be7Sderaadt }; 79df930be7Sderaadt typedef struct enum_def enum_def; 80df930be7Sderaadt 81df930be7Sderaadt struct declaration { 82df930be7Sderaadt char *prefix; 83df930be7Sderaadt char *type; 84df930be7Sderaadt char *name; 85df930be7Sderaadt relation rel; 86df930be7Sderaadt char *array_max; 87df930be7Sderaadt }; 88df930be7Sderaadt typedef struct declaration declaration; 89df930be7Sderaadt 90df930be7Sderaadt struct decl_list { 91df930be7Sderaadt declaration decl; 92df930be7Sderaadt struct decl_list *next; 93df930be7Sderaadt }; 94df930be7Sderaadt typedef struct decl_list decl_list; 95df930be7Sderaadt 96df930be7Sderaadt struct struct_def { 97df930be7Sderaadt decl_list *decls; 98df930be7Sderaadt }; 99df930be7Sderaadt typedef struct struct_def struct_def; 100df930be7Sderaadt 101df930be7Sderaadt struct case_list { 102df930be7Sderaadt char *case_name; 103df930be7Sderaadt int contflag; 104df930be7Sderaadt declaration case_decl; 105df930be7Sderaadt struct case_list *next; 106df930be7Sderaadt }; 107df930be7Sderaadt typedef struct case_list case_list; 108df930be7Sderaadt 109df930be7Sderaadt struct union_def { 110df930be7Sderaadt declaration enum_decl; 111df930be7Sderaadt case_list *cases; 112df930be7Sderaadt declaration *default_decl; 113df930be7Sderaadt }; 114df930be7Sderaadt typedef struct union_def union_def; 115df930be7Sderaadt 116df930be7Sderaadt struct arg_list { 117df930be7Sderaadt char *argname; /* name of struct for arg*/ 118df930be7Sderaadt decl_list *decls; 119df930be7Sderaadt }; 120df930be7Sderaadt 121df930be7Sderaadt typedef struct arg_list arg_list; 122df930be7Sderaadt 123df930be7Sderaadt struct proc_list { 124df930be7Sderaadt char *proc_name; 125df930be7Sderaadt char *proc_num; 126df930be7Sderaadt arg_list args; 127df930be7Sderaadt int arg_num; 128df930be7Sderaadt char *res_type; 129df930be7Sderaadt char *res_prefix; 130df930be7Sderaadt struct proc_list *next; 131df930be7Sderaadt }; 132df930be7Sderaadt typedef struct proc_list proc_list; 133df930be7Sderaadt 134df930be7Sderaadt struct version_list { 135df930be7Sderaadt char *vers_name; 136df930be7Sderaadt char *vers_num; 137df930be7Sderaadt proc_list *procs; 138df930be7Sderaadt struct version_list *next; 139df930be7Sderaadt }; 140df930be7Sderaadt typedef struct version_list version_list; 141df930be7Sderaadt 142df930be7Sderaadt struct program_def { 143df930be7Sderaadt char *prog_num; 144df930be7Sderaadt version_list *versions; 145df930be7Sderaadt }; 146df930be7Sderaadt typedef struct program_def program_def; 147df930be7Sderaadt 148df930be7Sderaadt struct definition { 149df930be7Sderaadt char *def_name; 150df930be7Sderaadt defkind def_kind; 151df930be7Sderaadt union { 152df930be7Sderaadt const_def co; 153df930be7Sderaadt struct_def st; 154df930be7Sderaadt union_def un; 155df930be7Sderaadt enum_def en; 156df930be7Sderaadt typedef_def ty; 157df930be7Sderaadt program_def pr; 158df930be7Sderaadt } def; 159df930be7Sderaadt }; 160df930be7Sderaadt typedef struct definition definition; 161df930be7Sderaadt 16274637cb2Sderaadt definition *get_definition(void); 163df930be7Sderaadt 164d0159584Sderaadt struct bas_type { 165df930be7Sderaadt char *name; 166df930be7Sderaadt int length; 167df930be7Sderaadt struct bas_type *next; 168df930be7Sderaadt }; 169df930be7Sderaadt 170df930be7Sderaadt typedef struct bas_type bas_type; 171