object.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef AFUN_OBJECT
  2. #define AFUN_OBJECT
  3. #include "aFunCoreExport.h"
  4. #include "tool.h"
  5. typedef struct af_Object af_Object;
  6. typedef struct af_Inherit af_Inherit;
  7. typedef struct af_ObjectAPI af_ObjectAPI;
  8. /* 对象API函数 DLC */
  9. typedef void objectAPIFunc();
  10. DEFINE_DLC_SYMBOL(objectAPIFunc);
  11. #include "obj_api.h"
  12. #include "env.h"
  13. /* 对象创建与释放函数 */
  14. AFUN_CORE_EXPORT af_Object *makeObject(char *id, bool free_api, af_ObjectAPI *api, bool allow_inherit, af_Object *belong,
  15. af_Inherit *inherit, af_Environment *env);
  16. AFUN_CORE_EXPORT void freeObject(af_Object *obj, af_Environment *env);
  17. /* 对象属性获取函数 */
  18. AFUN_CORE_EXPORT void *getObjectData(af_Object *obj);
  19. AFUN_CORE_EXPORT af_Object *getBelongObject(af_Object *object);
  20. AFUN_CORE_EXPORT af_Object *findObjectAttributes(char *name, af_Object *visitor, af_Object *obj);
  21. /* 对象属性设置 */
  22. AFUN_CORE_EXPORT bool setObjectAttributes(char *name, char p_self, char p_posterity, char p_external, af_Object *attributes,
  23. af_Object *obj, af_Object *visitor, af_Environment *env);
  24. /* 对象继承关系函数 */
  25. AFUN_CORE_EXPORT af_Inherit *makeInherit(af_Object *obj);
  26. AFUN_CORE_EXPORT af_Inherit *freeInherit(af_Inherit *ih);
  27. AFUN_CORE_EXPORT void freeAllInherit(af_Inherit *ih);
  28. AFUN_CORE_EXPORT bool checkPosterity(af_Object *base, af_Object *posterity);
  29. /* API表 创建与释放 */
  30. AFUN_CORE_EXPORT af_ObjectAPI *makeObjectAPI(void);
  31. AFUN_CORE_EXPORT void freeObjectAPI(af_ObjectAPI *api);
  32. /* API表 管理函数 */
  33. AFUN_CORE_EXPORT int addAPI(DLC_SYMBOL(objectAPIFunc) func, char *api_name, af_ObjectAPI *api);
  34. AFUN_CORE_EXPORT void *findAPI(char *api_name, af_ObjectAPI *api);
  35. /* 对象API函数 */
  36. AFUN_CORE_EXPORT void *findObjectAPI(char *api_name, af_Object *obj);
  37. AFUN_CORE_EXPORT int addAPIToObject(DLC_SYMBOL(objectAPIFunc) func, char *api_name, af_Object *obj);
  38. #endif //AFUN_OBJECT