obj_api.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * 文件名: obj_api.h
  3. * 目标:
  4. * 1) 定义一些函数签名
  5. * 2) 定义Object的函数签名
  6. */
  7. #ifndef AFUN__OBJ_API_H
  8. #define AFUN__OBJ_API_H
  9. #include "env.h"
  10. #include "object.h"
  11. #include "var.h"
  12. #include "func.h"
  13. /* 定义一些函数原型 */
  14. /* API函数 */
  15. typedef void objectAPIFunc(); // 位于object.h (所有Object API函数指针都转换为该类型存储, 注: 具体调用类型参见下文)
  16. /* 顶层信号处理器函数 */
  17. typedef void TopMsgProcessFunc(af_Message *msg, af_Environment *env); // 位于env.h
  18. /* 回调C函数 */
  19. typedef void callFuncBody(void *mark, af_Environment *env); // 位于env.h
  20. /* 定义Object的函数签名 */
  21. /* Object void *data 管理 */
  22. typedef size_t obj_getDataSize(void); // 获取data的大小
  23. typedef void obj_initData(void *data); // 初始化data
  24. typedef void obj_freeData(void *data); // 释放data的内容 (但不释放void *data)指针
  25. /* Object 函数调用 */
  26. typedef bool obj_funcGetArgCodeList(ArgCodeList **acl, af_Object *obj, af_Code *code, void **mark, af_Environment *env); // 获取参数计算表
  27. typedef bool obj_funcGetVarList(af_VarSpaceListNode **vsl, af_Object *obj, void *mark, af_Environment *env); // 获取函数变量空间
  28. typedef bool obj_funcGetArgList(ArgList **al, af_Object *obj, ArgCodeList *acl, void *mark, af_Environment *env); // 获取参数赋值表
  29. typedef bool obj_funcGetInfo(af_FuncInfo **fi, af_Object *obj, af_Code *code, void *mark, af_Environment *env); // 获取函数信息
  30. typedef void obj_funcFreeMask(void *mark); // 释放mask的函数
  31. /* Object 字面量设定 */
  32. typedef void obj_literalSetting(char *str, void *data, af_Object *obj, af_Environment *env);
  33. /* Object 变量专项 */
  34. typedef bool is_obj_func(af_Object *obj); // 是否对象函数
  35. #endif //AFUN__OBJ_API_H