X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fcontext.h;h=c8416a5bb37abb67b252514c0c41462635b061ad;hp=24bdb9c5a8083d450c3dc5445ae812acfee84f6b;hb=cfebc76ed7426836f21296cca9a14b422bfa04cf;hpb=be3ceffdd27422aae6ba44d31d868fb12d08957a diff --git a/src/context.h b/src/context.h index 24bdb9c..c8416a5 100644 --- a/src/context.h +++ b/src/context.h @@ -5,7 +5,7 @@ #define PSI_ERROR 16 #define PSI_WARNING 32 -typedef void (*PSI_ContextErrorFunc)(int type, const char *msg, ...); +typedef void (*PSI_ContextErrorFunc)(PSI_Token *token, int type, const char *msg, ...); typedef struct PSI_Context PSI_Context; typedef struct PSI_ContextOps PSI_ContextOps; @@ -13,21 +13,25 @@ typedef struct PSI_ContextOps PSI_ContextOps; struct PSI_ContextOps { void (*init)(PSI_Context *C); void (*dtor)(PSI_Context *C); - zend_function_entry *(*compile)(PSI_Context *C, PSI_Data *D); + zend_function_entry *(*compile)(PSI_Context *C); + void (*call)(PSI_Context *C, decl_callinfo *decl_call, impl_vararg *va); }; struct PSI_Context { + PSI_DATA_MEMBERS; void *context; - PSI_ContextErrorFunc error; struct PSI_ContextOps *ops; - struct PSI_Data *data; - zend_function_entry **closures; + zend_function_entry *closures; + PSI_Data *data; size_t count; }; PSI_Context *PSI_ContextInit(PSI_Context *C, PSI_ContextOps *ops, PSI_ContextErrorFunc error); void PSI_ContextBuild(PSI_Context *C, const char *path); -zend_function_entry *PSI_ContextCompile(PSI_Context *C, PSI_Data *D); +int PSI_ContextValidate(PSI_Context *C, PSI_Parser *P); +zend_function_entry *PSI_ContextCompile(PSI_Context *C); +void PSI_ContextCall(PSI_Context *C, decl_callinfo *decl_call, impl_vararg *va); +void PSI_ContextDump(PSI_Context *C, int fd); void PSI_ContextDtor(PSI_Context *C); void PSI_ContextFree(PSI_Context **C);