var.h 1.3 KB

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