__env.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef AFUN__ENV_H
  2. #define AFUN__ENV_H
  3. #include "macro.h"
  4. #include "__object.h"
  5. #include "__var.h"
  6. #include "__bytecode.h"
  7. #include "env.h"
  8. #include "__gc.h"
  9. struct af_Core { // 解释器核心
  10. // GC基本信息
  11. af_ObjectData(*gc_ObjectData);
  12. af_Object(*gc_Object);
  13. af_Var(*gc_Var);
  14. af_VarSpace(*gc_VarSpace);
  15. // 基本量信息
  16. struct af_Object *global; // 顶级属对象
  17. struct af_Object *belong; // 顶级继承对象
  18. // 保护空间
  19. bool in_init; // 是否在初始化模式
  20. struct af_VarSpace *protect; // 顶级保护变量空间
  21. };
  22. struct af_Activity { // 活动记录器
  23. struct af_Activity *prev; // 上一个活动记录器
  24. struct af_ByteCode *bt_start; // 代码的起始位置
  25. struct af_ByteCode *bt; // 指示代码运行的地方
  26. struct af_VarSpaceListNode *var_list; // 变量空间
  27. bool var_free; // 是否需要释放变量空间
  28. };
  29. struct af_Environment { // 运行环境
  30. struct af_Core *core;
  31. struct af_Activity *activity;
  32. };
  33. #endif //AFUN__ENV_H