patch-src_grid_h 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. $OpenBSD: patch-src_grid_h,v 1.1 2017/05/14 12:02:03 espie Exp $
  2. assigning a slice to a gslice is a gnu extension actually
  3. turns out the non working code does work in both clang and eg++
  4. Index: src/grid.h
  5. --- src/grid.h.orig
  6. +++ src/grid.h
  7. @@ -126,10 +126,11 @@ template <class T> void grid<T>::add(const coords &c,
  8. size_t len[] = { size_t(rows), size_t(cols), size_t(layers), };
  9. size_t str[] = { size_t(ncols), 1, size_t(ncols * nrows), };
  10. // doesn't work?
  11. - // std::gslice g(d0.x + ncols * (d0.y + nrows * d0.z),
  12. - // std::valarray<size_t>(len, 3),
  13. - // std::valarray<size_t>(str, 3));
  14. - // mask[g] = m;
  15. + std::gslice g(d0.x + ncols * (d0.y + nrows * d0.z),
  16. + std::valarray<size_t>(len, 3),
  17. + std::valarray<size_t>(str, 3));
  18. + mask[g] = m;
  19. +#if 0
  20. for (int i=0; i<layers; ++i)
  21. {
  22. std::gslice g(d0.x + ncols * (d0.y + nrows * (d0.z + i)),
  23. @@ -138,6 +139,7 @@ template <class T> void grid<T>::add(const coords &c,
  24. std::slice s(cols * rows * i, cols * rows, 1);
  25. mask[g] = m[s];
  26. }
  27. +#endif
  28. c0 = n0;
  29. rows = nrows;