X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=idl%2Fvalidator.h;h=51828f870aaeb771b1a770a31727490647043bf6;hp=c7e826404af42eba4f79948dd10c4e0af2968ec5;hb=ca787916893fd2124a4dd72d326e3435fad5b9c8;hpb=059fffcaee65cf92b95bdbe91e5a156b89b2cf71 diff --git a/idl/validator.h b/idl/validator.h index c7e8264..51828f8 100644 --- a/idl/validator.h +++ b/idl/validator.h @@ -1,14 +1,187 @@ - -typedef struct PSI_Validator { +/* This file was automatically generated. Do not edit! */ +#undef INTERFACE +typedef struct PSI_Validator PSI_Validator; +typedef struct decl_typedefs decl_typedefs; +typedef struct decl_typedef decl_typedef; +typedef struct decl_type decl_type; +typedef int token_t; +struct decl_type { + char *name; + token_t type; + struct decl_type *real; +}; +struct decl_typedef { + char *alias; + decl_type *type; +}; +struct decl_typedefs { + size_t count; + decl_typedef **list; +}; +typedef struct decls decls; +typedef struct decl decl; +typedef struct decl_abi decl_abi; +struct decl_abi { + char *convention; +}; +typedef struct decl_arg decl_arg; +typedef struct decl_var decl_var; +struct decl_var { + char *name; + unsigned pointer_level; +}; +struct decl_arg { + decl_type *type; + decl_var *var; +}; +typedef struct decl_args decl_args; +struct decl_args { + decl_arg **args; + size_t count; +}; +struct decl { + decl_abi *abi; + decl_arg *func; + decl_args *args; + void *dlptr; +}; +struct decls { + size_t count; + decl **list; +}; +typedef struct impls impls; +typedef struct impl impl; +typedef struct impl_func impl_func; +typedef struct impl_args impl_args; +typedef struct impl_arg impl_arg; +typedef struct impl_type impl_type; +struct impl_type { + char *name; + token_t type; +}; +typedef struct impl_var impl_var; +struct impl_var { + char *name; + unsigned reference:1; +}; +typedef struct impl_def_val impl_def_val; +struct impl_def_val { + token_t type; + union { + int64_t digits; + double decimals; + } v; + unsigned is_null:1; +}; +struct impl_arg { + impl_type *type; + impl_var *var; + impl_def_val *def; +}; +struct impl_args { + impl_arg **args; + size_t count; +}; +struct impl_func { + char *name; + impl_args *args; + impl_type *return_type; +}; +typedef struct impl_stmts impl_stmts; +typedef struct impl_stmt impl_stmt; +typedef struct let_stmt let_stmt; +typedef struct let_value let_value; +typedef struct let_func let_func; +struct let_func { + token_t type; + char *name; +}; +struct let_value { + let_func *func; + impl_var *var; + unsigned null_pointer_ref:1; +}; +struct let_stmt { + decl_var *var; + let_value *val; +}; +typedef struct set_stmt set_stmt; +typedef struct set_value set_value; +typedef struct set_func set_func; +struct set_func { + token_t type; + char *name; +}; +typedef struct decl_vars decl_vars; +struct decl_vars { + decl_var **vars; + size_t count; +}; +struct set_value { + set_func *func; + decl_vars *vars; +}; +struct set_stmt { + impl_var *var; + set_value *val; +}; +typedef struct ret_stmt ret_stmt; +struct ret_stmt { + set_func *func; + decl_var *decl; +}; +struct impl_stmt { + token_t type; + union { + let_stmt *let; + set_stmt *set; + ret_stmt *ret; + void *ptr; + } s; +}; +struct impl_stmts { + impl_stmt **stmts; + size_t count; +}; +struct impl { + impl_func *func; + impl_stmts *stmts; +}; +struct impls { + size_t count; + impl **list; +}; +struct PSI_Validator { decl_typedefs *defs; decls *decls; impls *impls; char *lib; char *fn; void *dlopened; -} PSI_Validator; - -PSI_Validator *PSI_ValidatorInit(PSI_Validator *V, PSI_Lexer *L); +}; int PSI_ValidatorValidate(PSI_Validator *V); -void PSI_ValidatorDtor(PSI_Validator *V); +#define PSI_T_NAME 6 void PSI_ValidatorFree(PSI_Validator **V); +void PSI_ValidatorDtor(PSI_Validator *V); +typedef struct PSI_Data PSI_Data; +struct PSI_Data { + decl_typedefs *defs; + decls *decls; + impls *impls; + char *lib; + char *fn; +}; +typedef struct PSI_Lexer PSI_Lexer; +#define BSIZE 256 +struct PSI_Lexer { + decl_typedefs *defs; + decls *decls; + impls *impls; + char *lib; + char *fn; + FILE *fp; + size_t line; + char *cur, *tok, *lim, *eof, *ctx, *mrk, buf[BSIZE]; +}; +PSI_Validator *PSI_ValidatorInit(PSI_Validator *V,PSI_Lexer *L); +#define INTERFACE 0