inter.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "__virtualmath.h"
  2. Inter *makeInter(char *debug){
  3. Inter *tmp = memCalloc(1, sizeof(Inter));
  4. tmp->base = NULL;
  5. tmp->link_base = NULL;
  6. tmp->statement = makeStatement();
  7. tmp->var_list = makeVarList(tmp);
  8. tmp->log_dir = memStrcpy(debug, 0, false, false);
  9. if (debug != NULL && !args.stdout_inter){
  10. char *debug_dir = memStrcat(debug, INTER_LOG);
  11. tmp->debug = fopen(debug_dir, "w");
  12. memFree(debug_dir);
  13. }
  14. else
  15. tmp->debug = stdout;
  16. return tmp;
  17. }
  18. void freeInter(Inter *inter, bool self){
  19. freeBase(inter, return_);
  20. while (inter->base != NULL){
  21. freeValue(inter->base, inter);
  22. }
  23. while (inter->link_base != NULL){
  24. freeLinkValue(inter->link_base, inter);
  25. }
  26. while (inter->hash_base != NULL){
  27. freeHashTable(inter->hash_base, inter);
  28. }
  29. freeStatement(inter->statement);
  30. freeVarList(inter->var_list, true);
  31. memFree(inter->log_dir);
  32. if (inter->log_dir != NULL)
  33. fclose(inter->debug);
  34. if (self){
  35. memFree(inter);
  36. }
  37. return_:
  38. return;
  39. }