var.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef AFUN__VAR_H_PUBLIC
  2. #define AFUN__VAR_H_PUBLIC
  3. typedef struct af_Var af_Var;
  4. typedef struct af_VarSpace af_VarSpace;
  5. typedef struct af_VarSpaceListNode af_VarSpaceListNode;
  6. #include "macro.h"
  7. #include "object.h"
  8. /* 变量创建与释放 */
  9. af_Var *makeVar(char *name, char p_self, char p_external, af_Object *obj, af_Environment *env);
  10. void freeVar(af_Var *var, af_Environment *env);
  11. /* 变量值管理 */
  12. void addVarNode(af_Var var, af_Object *obj, char *id);
  13. /* 变量空间创建与释放 */
  14. af_VarSpace *makeVarSpace(af_Environment *env);
  15. void freeVarSpace(af_VarSpace *vs, af_Environment *env);
  16. /* 变量赋值类函数 */
  17. bool addVarToVarSpace(af_Var *var, af_VarSpace *vs);
  18. bool makeVarToVarSpace(char *name, char p_self, char p_external, af_Object *obj, af_VarSpace *vs, af_Environment *env);
  19. bool addVarToVarSpaceList(af_Var *var, af_VarSpaceListNode *vsl);
  20. bool makeVarToVarSpaceList(char *name, char p_self, char p_external, af_Object *obj, af_VarSpaceListNode *vsl,
  21. af_Environment *env);
  22. /* 变量寻值类函数 */
  23. af_Var *findVarFromVarSpace(char *name, af_VarSpace *vs);
  24. af_Var *findVarFromVarList(char *name, af_VarSpaceListNode *vsl);
  25. /* 变量空间链的创建与释放 */
  26. af_VarSpaceListNode *makeVarSpaceList(af_VarSpace *vs);
  27. af_VarSpaceListNode *freeVarSpaceList(af_VarSpaceListNode *vsl);
  28. void freeAllVarSpaceList(af_VarSpaceListNode *vsl);
  29. bool freeVarSpaceListCount(size_t count, af_VarSpaceListNode *vsl);
  30. /* 变量空间链属性获取 */
  31. af_VarSpace *getVarSpaceFromList(af_VarSpaceListNode *vsl);
  32. /* 变量空间链管理 */
  33. af_VarSpaceListNode *pushNewVarList(af_VarSpaceListNode *base, af_Environment *env);
  34. af_VarSpaceListNode *popLastVarList(af_VarSpaceListNode *base);
  35. #endif //AFUN__VAR_H_PUBLIC