gc.h 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. #ifndef AFUN__GC_H_PUBLIC
  2. #define AFUN__GC_H_PUBLIC
  3. #include "object.h"
  4. #include "var.h"
  5. /* gc 引用计数管理函数 */
  6. #define gc_addReference(obj) ((_Generic((obj), \
  7. af_Object *:gc_addObjectReference, \
  8. af_Var *: gc_addVarReference, \
  9. af_VarSpace *: gc_addVarSpaceReference))(obj))
  10. #define gc_delReference(obj) ((_Generic((obj), \
  11. af_Object *: gc_delObjectReference, \
  12. af_Var *: gc_delVarReference, \
  13. af_VarSpace *: gc_delVarSpaceReference))(obj))
  14. /* gc 对象新增函数 */
  15. void gc_addObject(af_Object *obj, af_Environment *env);
  16. void gc_addVar(af_Var *obj, af_Environment *env);
  17. void gc_addVarSpace(af_VarSpace *obj, af_Environment *env);
  18. /* gc Reference 管理函数 */
  19. void gc_addObjectReference(af_Object *obj);
  20. void gc_addVarReference(af_Var *obj);
  21. void gc_addVarSpaceReference(af_VarSpace *obj);
  22. void gc_delObjectReference(af_Object *obj);
  23. void gc_delVarReference(af_Var *obj);
  24. void gc_delVarSpaceReference(af_VarSpace *obj);
  25. /* gc 运行时函数 */
  26. bool resetGC(af_Environment *env);
  27. #endif //AFUN__GC_H_PUBLIC