var.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #ifndef VIRTUALMATH_VAR_H
  2. #define VIRTUALMATH_VAR_H
  3. #define MAX_SIZE (1024)
  4. struct Var{
  5. GCStatus gc_status;
  6. char *name;
  7. struct LinkValue *value;
  8. struct LinkValue *name_;
  9. struct Var *next;
  10. struct Var *gc_next;
  11. struct Var *gc_last;
  12. };
  13. struct HashTable{
  14. GCStatus gc_status;
  15. struct Var **hashtable;
  16. struct HashTable *gc_next;
  17. struct HashTable *gc_last;
  18. };
  19. struct DefaultVar{
  20. char *name;
  21. NUMBER_TYPE times;
  22. struct DefaultVar *next;
  23. };
  24. struct VarList{
  25. struct HashTable *hashtable;
  26. struct DefaultVar *default_var;
  27. struct VarList *next;
  28. };
  29. typedef struct Var Var;
  30. typedef struct HashTable HashTable;
  31. typedef struct DefaultVar DefaultVar;
  32. typedef struct VarList VarList;
  33. Var *makeVar(char *name, LinkValue *value, LinkValue *name_, Inter *inter);
  34. void freeVar(Var **var);
  35. HashTable *makeHashTable(Inter *inter);
  36. void freeHashTable(HashTable **value);
  37. VarList *makeVarList(Inter *inter, bool make_hash);
  38. VarList *freeVarList(VarList *vl);
  39. HASH_INDEX time33(char *key);
  40. LinkValue *findVar(char *name, bool del_var, INTER_FUNCTIONSIG_CORE);
  41. LinkValue *findFromVarList(char *name, NUMBER_TYPE times, bool del_var, INTER_FUNCTIONSIG_CORE);
  42. void addVar(char *name, LinkValue *value, LinkValue *name_, INTER_FUNCTIONSIG_CORE);
  43. void updateHashTable(HashTable *update, HashTable *new, Inter *inter);
  44. void addFromVarList(char *name, LinkValue *name_, NUMBER_TYPE times, LinkValue *value, INTER_FUNCTIONSIG_CORE);
  45. VarList *pushVarList(VarList *base, Inter *inter);
  46. VarList *popVarList(VarList *base);
  47. VarList *copyVarListCore(VarList *base, Inter *inter);
  48. VarList *copyVarList(VarList *base, bool n_new, Inter *inter);
  49. VarList *connectVarListBack(VarList *base, VarList *back);
  50. bool comparVarList(VarList *dest, VarList *src);
  51. VarList *connectSafeVarListBack(VarList *base, VarList *back);
  52. VarList *makeObjectVarList(FatherValue *value, Inter *inter, VarList *base);
  53. NUMBER_TYPE findDefault(DefaultVar *base, char *name);
  54. DefaultVar *connectDefaultVar(DefaultVar *base, char *name, NUMBER_TYPE times);
  55. DefaultVar *freeDefaultVar(DefaultVar *dv);
  56. DefaultVar *makeDefaultVar(char *name, NUMBER_TYPE times);
  57. #endif //VIRTUALMATH_VAR_H