-
-typedef struct PSI_Validator {
+/* \aThis 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