var.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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, int operating, INTER_FUNCTIONSIG_CORE);
  41. LinkValue *findFromVarList(char *name, NUMBER_TYPE times, int operating, 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 *makeObjectVarList(Inherit *value, Inter *inter, VarList *base);
  52. NUMBER_TYPE findDefault(DefaultVar *base, char *name);
  53. DefaultVar *connectDefaultVar(DefaultVar *base, char *name, NUMBER_TYPE times);
  54. DefaultVar *freeDefaultVar(DefaultVar *dv);
  55. DefaultVar *makeDefaultVar(char *name, NUMBER_TYPE times);
  56. #endif //VIRTUALMATH_VAR_H