12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #ifndef AFUN_RUNTIME_HPP
- #define AFUN_RUNTIME_HPP
- typedef struct APIFuncList APIFuncList;
- struct APIFuncList {
- const char *name;
- void *func; // objectAPIFunc
- DlcHandle *dlc; // func 的 来源
- DLC_SYMBOL(objectAPIFunc) func_; // func_和func二选一, func_时dlc无效
- bool free_func_; // func_是否需要释放
- };
- typedef struct InheritDefineList InheritDefineList;
- struct InheritDefineList {
- af_Object *obj;
- };
- typedef struct ObjectDefineList ObjectDefineList;
- struct ObjectDefineList {
- const char *id;
- bool free_api;
- af_ObjectAPI *api;
- struct APIFuncList *api_list; // api和api_list只能二选一
- bool allow_inherit;
- af_Object *belong;
- af_Inherit *inherit;
- const char *var_name;
- char p_self, p_posterity, p_external;
- af_Object **save; // obj保存位置
- };
- typedef struct LiteralFuncList LiteralFuncList;
- struct LiteralFuncList {
- const char *pattern;
- const char *func;
- bool in_protect;
- };
- typedef struct TopMsgFuncList TopMsgFuncList;
- struct TopMsgFuncList {
- const char *type;
- TopMsgProcessFunc *func;
- DlcHandle *dlc; // func 的 来源
- DLC_SYMBOL(TopMsgProcessFunc) func_; // func_和func二选一, func_时dlc无效
- bool free_func_; // func_是否需要释放
- };
- typedef struct GuardianFuncList GuardianFuncList;
- struct GuardianFuncList {
- const char *type;
- bool always;
- bool derive;
- size_t size;
- DlcHandle *dlc; // func/destruct 的 来源
- GuardianFunc *func;
- DLC_SYMBOL(GuardianFunc) func_;
- bool free_func_; // func_是否需要释放
- GuardianDestruct *destruct;
- DLC_SYMBOL(GuardianDestruct) destruct_;
- bool free_destruct_; // func_是否需要释放
- void **data;
- void (*initData)(void *data, af_Environment *env); // data初始化的函数
- };
- AFUN_LANG_EXPORT int runtimeTool(const char *name, af_Code **code, af_Object *visitor, af_VarSpace *vs, af_Environment *env);
- AFUN_LANG_EXPORT int runtimeToolImport(const char *name, af_Object **obj, af_Code **code, af_Environment *env);
- AFUN_LANG_EXPORT af_ObjectAPI *makeAPIFromList(const APIFuncList api_list[]);
- AFUN_LANG_EXPORT void makeObjectFromList(const ObjectDefineList obj_def[], af_Object *visitor, af_VarSpace *vs, af_Environment *env);
- AFUN_LANG_EXPORT void makeLiteralRegexFromList(const LiteralFuncList literal_list[], af_Environment *env);
- AFUN_LANG_EXPORT void makeTopMsgProcessFromList(const TopMsgFuncList top_msg_list[], af_Environment *env);
- AFUN_LANG_EXPORT af_Inherit *makeInheritFromList(const InheritDefineList inherit_list[], bool is_reverse);
- AFUN_LANG_EXPORT void makeGuardianFromList(const GuardianFuncList gd_list[], af_Environment *env);
- #endif //AFUN_RUNTIME_HPP
|