var.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef VIRTUALMATH_VAR_H
  2. #define VIRTUALMATH_VAR_H
  3. #define MAX_SIZE (1024)
  4. struct Var{
  5. char *name;
  6. struct LinkValue *value;
  7. struct LinkValue *name_;
  8. struct Var *next;
  9. };
  10. struct HashTable{
  11. struct Var **hashtable;
  12. int count;
  13. struct HashTable *next;
  14. struct HashTable *last;
  15. };
  16. struct VarList{
  17. struct HashTable *hashtable;
  18. struct VarList *next;
  19. };
  20. typedef struct Var Var;
  21. typedef struct HashTable HashTable;
  22. typedef struct VarList VarList;
  23. Var *makeVar(char *name, LinkValue *value, LinkValue *name_);
  24. Var *freeVar(Var *var, bool self);
  25. HashTable *makeHashTable(Inter *inter, bool supervision);
  26. void freeHashTable(HashTable *ht, Inter *inter, bool supervision);
  27. VarList *makeVarList(Inter *inter);
  28. VarList *freeVarList(VarList *vl, bool self);
  29. HASH_INDEX time33(char *key);
  30. LinkValue *findVar(char *name, VarList *var_list, bool del_var);
  31. LinkValue *findFromVarList(char *name, VarList *var_list, NUMBER_TYPE times, bool del_var);
  32. void addVar(char *name, LinkValue *value, LinkValue *name_, VarList *var_list);
  33. void addFromVarList(char *name, VarList *var_list, NUMBER_TYPE times, LinkValue *value, LinkValue *name_);
  34. VarList *pushVarList(VarList *base, Inter *inter);
  35. VarList *popVarList(VarList *base);
  36. VarList *copyVarList(VarList *base, bool n_new, Inter *inter);
  37. #endif //VIRTUALMATH_VAR_H