var.h 947 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #ifndef VIRTUALMATH_VAR_H
  2. #define VIRTUALMATH_VAR_H
  3. #include "inter.h"
  4. #define MAX_SIZE (1024)
  5. typedef struct Var{
  6. char *name;
  7. struct LinkValue *value;
  8. struct Var *next;
  9. } Var;
  10. typedef struct HashTable{
  11. struct Var **hashtable;
  12. int count;
  13. struct HashTable *next;
  14. struct HashTable *last;
  15. } HashTable;
  16. typedef struct VarList{
  17. struct HashTable *hashtable;
  18. struct VarList *next;
  19. } VarList;
  20. #define VARSTR_PREFIX "str_"
  21. VarList *makeVarList(Inter *inter);
  22. VarList *freeVarList(VarList *vl, bool self);
  23. LinkValue *findFromVarList(char *name, VarList *var_list, NUMBER_TYPE times, bool del_var);
  24. void addFromVarList(char *name, VarList *var_list, NUMBER_TYPE times, LinkValue *value);
  25. void freeHashTable(HashTable *ht, Inter *inter);
  26. VarList *pushVarList(VarList *base, Inter *inter);
  27. VarList *popVarList(VarList *base);
  28. VarList *copyVarList(VarList *base, bool n_new, Inter *inter);
  29. #endif //VIRTUALMATH_VAR_H