123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- /* @(#)rpc_parse.h 1.3 90/08/29
- *
- * Copyright (c) 2010, Oracle America, Inc.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of the "Oracle America, Inc." nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * rpc_parse.h, Definitions for the RPCL parser
- */
- enum defkind {
- DEF_CONST,
- DEF_STRUCT,
- DEF_UNION,
- DEF_ENUM,
- DEF_TYPEDEF,
- DEF_PROGRAM
- };
- typedef enum defkind defkind;
- typedef const char *const_def;
- enum relation {
- REL_VECTOR, /* fixed length array */
- REL_ARRAY, /* variable length array */
- REL_POINTER, /* pointer */
- REL_ALIAS /* simple */
- };
- typedef enum relation relation;
- struct typedef_def {
- const char *old_prefix;
- const char *old_type;
- relation rel;
- const char *array_max;
- };
- typedef struct typedef_def typedef_def;
- struct enumval_list {
- const char *name;
- const char *assignment;
- struct enumval_list *next;
- };
- typedef struct enumval_list enumval_list;
- struct enum_def {
- enumval_list *vals;
- };
- typedef struct enum_def enum_def;
- struct declaration {
- const char *prefix;
- const char *type;
- const char *name;
- relation rel;
- const char *array_max;
- };
- typedef struct declaration declaration;
- struct decl_list {
- declaration decl;
- struct decl_list *next;
- };
- typedef struct decl_list decl_list;
- struct struct_def {
- decl_list *decls;
- };
- typedef struct struct_def struct_def;
- struct case_list {
- const char *case_name;
- int contflag;
- declaration case_decl;
- struct case_list *next;
- };
- typedef struct case_list case_list;
- struct union_def {
- declaration enum_decl;
- case_list *cases;
- declaration *default_decl;
- };
- typedef struct union_def union_def;
- struct arg_list {
- const char *argname; /* name of struct for arg*/
- decl_list *decls;
- };
- typedef struct arg_list arg_list;
- struct proc_list {
- const char *proc_name;
- const char *proc_num;
- arg_list args;
- int arg_num;
- const char *res_type;
- const char *res_prefix;
- struct proc_list *next;
- };
- typedef struct proc_list proc_list;
- struct version_list {
- const char *vers_name;
- const char *vers_num;
- proc_list *procs;
- struct version_list *next;
- };
- typedef struct version_list version_list;
- struct program_def {
- const char *prog_num;
- version_list *versions;
- };
- typedef struct program_def program_def;
- struct definition {
- const char *def_name;
- defkind def_kind;
- union {
- const_def co;
- struct_def st;
- union_def un;
- enum_def en;
- typedef_def ty;
- program_def pr;
- } def;
- };
- typedef struct definition definition;
- definition *get_definition(void);
- struct bas_type
- {
- const char *name;
- int length;
- struct bas_type *next;
- };
- typedef struct bas_type bas_type;
|