var.h 1.3 KB

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