1
0

set.c 994 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "__virtualmath.h"
  2. void resetGC(GCStatus *gcs){
  3. gcs->continue_ = false;
  4. gcs->link = 0;
  5. }
  6. void setGC(GCStatus *gcs){
  7. resetGC(gcs);
  8. gcs->tmp_link = 0;
  9. gcs->statement_link = 0;
  10. gcs->c_value = not_free;
  11. }
  12. void gc_addTmpLink(GCStatus *gcs){
  13. gcs->tmp_link ++;
  14. }
  15. void gc_addLink(GCStatus *gcs){
  16. gcs->link ++;
  17. }
  18. void gc_addStatementLink(GCStatus *gcs){
  19. gcs->statement_link ++;
  20. }
  21. void gc_freeStatementLink(GCStatus *gcs){
  22. gcs->statement_link --;
  23. }
  24. void gc_freeTmpLink(GCStatus *gcs){
  25. gcs->tmp_link --;
  26. }
  27. bool gc_IterAlready(GCStatus *gcs){
  28. bool return_ = gcs->continue_;
  29. gcs->continue_ = true;
  30. return return_;
  31. }
  32. bool gc_needFree(GCStatus *gcs){
  33. return (gcs->statement_link == 0 && gcs->tmp_link == 0 && gcs->link == 0);
  34. }
  35. void gc_resetValue(Value *value){
  36. value->gc_status.c_value = not_free;
  37. }
  38. bool gc_needFreeValue(Value *value){
  39. return (gc_needFree(&value->gc_status) && value->gc_status.c_value == need_free);
  40. }