Guest User

Untitled

a guest
Jan 13th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. namespace MapAllocator
  2. {
  3. template<typename T>
  4. T ** allocMap(CGSize size)
  5. {
  6. T ** map = (T **)malloc(sizeof(T *) * size.width);
  7.  
  8. for (int i = 0; i < size.width; i++)
  9. map[i] = (T *)calloc(sizeof(T), size.height);
  10.  
  11. return map;
  12. }
  13.  
  14. template<typename T>
  15. T ** allocMapAndFill(CGSize size, T value)
  16. {
  17. if (value == T(0)) return allocMap<T>(size);
  18.  
  19. T ** map = (T **)malloc(sizeof(T *) * size.width);
  20.  
  21. for (int i = 0; i < size.width; i++)
  22. {
  23. map[i] = (T *)malloc(sizeof(T) * size.height);
  24.  
  25. for (int j = 0; j < size.height; j++)
  26. map[i][j] = value;
  27. }
  28.  
  29. return map;
  30. }
  31.  
  32. template<typename T>
  33. void deallocMap(T ** map, CGSize size)
  34. {
  35. for (int i = 0; i < size.width; i++)
  36. free(map[i]);
  37.  
  38. free(map);
  39. }
  40.  
  41. template<typename T>
  42. T ** copyMap(T ** map, CGSize size)
  43. {
  44. T ** newMap = allocMap<T>(size);
  45. for (int i = 0; i < size.width; i++) {
  46. for (int j = 0; j < size.height; j++) {
  47. newMap[i][j] = map[i][j];
  48. }
  49. }
  50.  
  51. return newMap;
  52. }
  53. }
Add Comment
Please, Sign In to add comment