var.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef AFUN_VAR
  2. #define AFUN_VAR
  3. typedef struct af_Var af_Var;
  4. typedef struct af_VarSpace af_VarSpace;
  5. typedef struct af_VarSpaceListNode af_VarSpaceListNode;
  6. #include "aFunCoreExport.h"
  7. #include "tool.h"
  8. #include "object.h"
  9. /* 变量 创建 */
  10. AFUN_CORE_EXPORT af_Var *makeVar(char *name, char p_self, char p_posterity, char p_external, af_Object *obj, af_Environment *env);
  11. /* 变量空间 创建 */
  12. AFUN_CORE_EXPORT af_VarSpace *makeVarSpace(af_Object *belong, char p_self, char p_posterity, char p_external, af_Environment *env);
  13. /* 变量空间链 创建与释放 */
  14. AFUN_CORE_EXPORT af_VarSpaceListNode *makeVarSpaceList(af_VarSpace *vs);
  15. AFUN_CORE_EXPORT af_VarSpaceListNode *copyVarSpaceList(af_VarSpaceListNode *vsl);
  16. AFUN_CORE_EXPORT void freeAllVarSpaceList(af_VarSpaceListNode *vsl);
  17. AFUN_CORE_EXPORT bool freeVarSpaceListCount(size_t count, af_VarSpaceListNode *vsl);
  18. /* 变量 相关操作 */
  19. AFUN_CORE_EXPORT void addVarNode(af_Var *var, af_Object *obj, char *id);
  20. /* 变量空间 相关操作 */
  21. AFUN_CORE_EXPORT bool addVarToVarSpace(af_Var *var, af_Object *visitor, af_VarSpace *vs, af_Environment *env);
  22. AFUN_CORE_EXPORT bool makeVarToVarSpace(char *name, char p_self, char p_posterity, char p_external, af_Object *obj, af_VarSpace *vs,
  23. af_Object *visitor, af_Environment *env);
  24. AFUN_CORE_EXPORT bool delVarFromVarSpace(char *name, af_Object *visitor, af_VarSpace *vs);
  25. AFUN_CORE_EXPORT bool setVarToVarSpace(char *name, af_Object *obj, af_Object *visitor, af_VarSpace *vs);
  26. AFUN_CORE_EXPORT void setVarPermissions(af_Var *var, af_Object *visitor, af_VarSpace *vs, char p_self, char p_posterity, char p_external);
  27. AFUN_CORE_EXPORT void setVarSpacePermissions(af_Object *visitor, af_VarSpace *vs, char p_self, char p_posterity, char p_external);
  28. AFUN_CORE_EXPORT bool setVarSpaceProtect(af_Object *visitor, af_VarSpace *vs, bool protect);
  29. /* 变量空间链 相关操作 */
  30. AFUN_CORE_EXPORT bool addVarToVarSpaceList(af_Var *var, af_Object *visitor, af_VarSpaceListNode *vsl,
  31. af_Environment *env);
  32. AFUN_CORE_EXPORT bool makeVarToVarSpaceList(char *name, char p_self, char p_posterity, char p_external, af_Object *obj,
  33. af_VarSpaceListNode *vsl, af_Object *visitor, af_Environment *env);
  34. AFUN_CORE_EXPORT bool makeVarToProtectVarSpace(char *name, char p_self, char p_posterity, char p_external, af_Object *obj,
  35. af_Environment *env);
  36. AFUN_CORE_EXPORT bool addVarToProtectVarSpace(af_Var *var, af_Environment *env);
  37. AFUN_CORE_EXPORT bool delVarFromVarList(char *name, af_Object *visitor, af_VarSpaceListNode *vsl);
  38. AFUN_CORE_EXPORT bool setVarToVarList(char *name, af_Object *obj, af_Object *visitor, af_VarSpaceListNode *vsl);
  39. AFUN_CORE_EXPORT af_VarSpaceListNode *pushNewVarList(af_Object *belong, af_VarSpaceListNode *base, af_Environment *env);
  40. /* 变量 属性访问 */
  41. AFUN_CORE_EXPORT af_Object *findVarNode(af_Var *var, char *id, af_Environment *env);
  42. /* 变量空间 属性访问 */
  43. AFUN_CORE_EXPORT af_Var *findVarFromVarSpace(char *name, af_Object *visitor, af_VarSpace *vs);
  44. AFUN_CORE_EXPORT bool isProtectVarSpace(af_VarSpace *vs);
  45. /* 变量空间链 属性访问 */
  46. AFUN_CORE_EXPORT af_Var *findVarFromVarList(char *name, af_Object *visitor, af_VarSpaceListNode *vsl);
  47. AFUN_CORE_EXPORT af_VarSpace *getVarSpaceFromList(af_VarSpaceListNode *vsl);
  48. #endif //AFUN_VAR