list 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #define LIST \
  2. struct LISTNAME { \
  3. int size; \
  4. LISTTYPE[] data; \
  5. }; \
  6. \
  7. void listNew(LISTNAME list) { \
  8. list.size = 0; \
  9. list.data = new LISTTYPE[4]; \
  10. } \
  11. \
  12. void listAdd(LISTNAME list, LISTTYPE i) { \
  13. int l = length(list.data); \
  14. if(list.size >= l) { \
  15. LISTTYPE[] newData = new LISTTYPE[l * 2]; \
  16. for(int k = 0; k < l; k++) { \
  17. newData[k] = list.data[k]; \
  18. } \
  19. list.data = newData; \
  20. } \
  21. list.data[list.size] = i; \
  22. list.size++; \
  23. } \
  24. \
  25. int listGetLength(LISTNAME list) { \
  26. return list.size; \
  27. } \
  28. \
  29. LISTTYPE listGetIndex(LISTNAME list, int index) { \
  30. return list.data[index]; \
  31. }
  32. #define LISTNAME IntList
  33. #define LISTTYPE int
  34. LIST
  35. #undef LISTNAME
  36. #undef LISTTYPE
  37. #define LISTNAME FloatList
  38. #define LISTTYPE float
  39. LIST