75 #ifndef SLIP_NEIGHBORHOOD_HPP
76 #define SLIP_NEIGHBORHOOD_HPP
102 template<
typename Container>
107 size_(static_cast<int>(cont.size())),
111 template<
typename _II>
113 std::vector<_II>& neigh)
const
116 int it_i =
static_cast<int>(it -
cont_->begin());
119 int i = it_i + slip::n_2c[n];
124 neigh.push_back(it + slip::n_2c[n]);
130 template<
typename _II>
132 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
135 int it_i =
static_cast<int>(it -
cont_->begin());
138 int i = it_i + slip::n_2c[n];
143 neigh.push_back(it[slip::n_2c[n]]);
159 template<
typename _II>
161 std::vector<_II>& neigh)
const
166 neigh[n] = it + slip::n_2c[n];
170 template<
typename _II>
172 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
177 neigh[n] = it[slip::n_2c[n]];
184 template<
typename Container>
189 size_(static_cast<int>(cont.size())),
193 template<
typename _II>
195 std::vector<_II>& neigh)
const
198 int it_i =
static_cast<int>(it -
cont_->begin());
201 int i = it_i + slip::prev_2c[n];
206 neigh.push_back(it + slip::prev_2c[n]);
212 template<
typename _II>
214 std::vector<
typename std::iterator_traits<_II>::value_type> & neigh)
const
217 int it_i =
static_cast<int>(it -
cont_->begin());
220 int i = it_i + slip::prev_2c[n];
225 neigh.push_back(it[slip::prev_2c[n]]);
243 template<
typename _II>
245 std::vector<_II>& neigh)
const
250 neigh[n] = it + slip::prev_2c[n];
254 template<
typename _II>
256 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
261 neigh[n] = it[slip::prev_2c[n]];
269 template<
typename Container>
274 size_(static_cast<int>(cont.size())),
278 template<
typename _II>
280 std::vector<_II>& neigh)
const
283 int it_i =
static_cast<int>(it -
cont_->begin());
286 int i = it_i + slip::next_2c[n];
291 neigh.push_back(it + slip::next_2c[n]);
297 template<
typename _II>
299 std::vector<
typename std::iterator_traits<_II>::value_type> & neigh)
const
302 int it_i =
static_cast<int>(it -
cont_->begin());
305 int i = it_i + slip::next_2c[n];
310 neigh.push_back(it[slip::next_2c[n]]);
328 template<
typename _II>
330 std::vector<_II>& neigh)
const
335 neigh[n] = it + slip::next_2c[n];
339 template<
typename _II>
341 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
346 neigh[n] = it[slip::next_2c[n]];
363 template<
typename Container>
368 rows_(static_cast<int>(cont.rows())),
369 cols_(static_cast<int>(cont.cols())),
373 template<
typename _II>
375 std::vector<_II>& neigh)
const
382 int i = it_i + slip::n_8c[n][0];
387 int j = it_j + slip::n_8c[n][1];
392 neigh.push_back(it + slip::n_8c[n]);
400 template<
typename _II>
402 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
409 int i = it_i + slip::n_8c[n][0];
414 int j = it_j + slip::n_8c[n][1];
419 neigh.push_back(it[slip::n_8c[n]]);
441 template<
typename _II>
443 std::vector<_II>& neigh)
const
448 neigh[n] = it + slip::n_8c[n];
452 template<
typename _II>
454 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
459 neigh[n] = it[slip::n_8c[n]];
468 template<
typename Container>
473 rows_(static_cast<int>(cont.rows())),
474 cols_(static_cast<int>(cont.cols())),
478 template<
typename _II>
480 std::vector<_II>& neigh)
const
488 int i = it_i + slip::prev_8c[n][0];
493 int j = it_j + slip::prev_8c[n][1];
498 neigh.push_back(it + slip::prev_8c[n]);
506 template<
typename _II>
508 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
516 int i = it_i + slip::prev_8c[n][0];
521 int j = it_j + slip::prev_8c[n][1];
526 neigh.push_back(it[slip::prev_8c[n]]);
546 template<
typename _II>
548 std::vector<_II>& neigh)
const
553 neigh[n] = it + slip::prev_8c[n];
557 template<
typename _II>
559 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
564 neigh[n] = it[slip::prev_8c[n]];
573 template<
typename Container>
578 rows_(static_cast<int>(cont.rows())),
579 cols_(static_cast<int>(cont.cols())),
583 template<
typename _II>
585 std::vector<_II>& neigh)
const
592 int i = it_i + slip::next_8c[n][0];
597 int j = it_j + slip::next_8c[n][1];
602 neigh.push_back(it + slip::next_8c[n]);
610 template<
typename _II>
612 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
619 int i = it_i + slip::next_8c[n][0];
624 int j = it_j + slip::next_8c[n][1];
629 neigh.push_back(it[slip::next_8c[n]]);
649 template<
typename _II>
651 std::vector<_II>& neigh)
const
656 neigh[n] = it + slip::next_8c[n];
660 template<
typename _II>
662 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
667 neigh[n] = it[slip::next_8c[n]];
675 template<
typename Container>
680 rows_(static_cast<int>(cont.rows())),
681 cols_(static_cast<int>(cont.cols())),
685 template<
typename _II>
687 std::vector<_II>& neigh)
const
694 int i = it_i + slip::n_4c[n][0];
699 int j = it_j + slip::n_4c[n][1];
704 neigh.push_back(it + slip::n_4c[n]);
712 template<
typename _II>
714 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
721 int i = it_i + slip::n_4c[n][0];
726 int j = it_j + slip::n_4c[n][1];
731 neigh.push_back(it[slip::n_4c[n]]);
752 template<
typename _II>
754 std::vector<_II>& neigh)
const
759 neigh[n] = it + slip::n_4c[n];
763 template<
typename _II>
765 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
770 neigh[n] = it[slip::n_4c[n]];
778 template<
typename Container>
783 rows_(static_cast<int>(cont.rows())),
784 cols_(static_cast<int>(cont.cols())),
788 template<
typename _II>
790 std::vector<_II>& neigh)
const
797 int i = it_i + slip::next_4c[n][0];
802 int j = it_j + slip::next_4c[n][1];
807 neigh.push_back(it + slip::next_4c[n]);
815 template<
typename _II>
817 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
824 int i = it_i + slip::next_4c[n][0];
829 int j = it_j + slip::next_4c[n][1];
834 neigh.push_back(it[slip::next_4c[n]]);
848 template<
typename Container>
853 rows_(static_cast<int>(cont.rows())),
854 cols_(static_cast<int>(cont.cols())),
858 template<
typename _II>
860 std::vector<_II>& neigh)
const
868 int i = it_i + slip::prev_4c[n][0];
873 int j = it_j + slip::prev_4c[n][1];
878 neigh.push_back(it + slip::prev_4c[n]);
886 template<
typename _II>
888 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
896 int i = it_i + slip::prev_4c[n][0];
901 int j = it_j + slip::prev_4c[n][1];
906 neigh.push_back(it[slip::prev_4c[n]]);
926 template<
typename _II>
928 std::vector<_II>& neigh)
const
933 neigh[n] = it + slip::prev_4c[n];
937 template<
typename _II>
939 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
944 neigh[n] = it[slip::prev_4c[n]];
957 template<
typename _II>
959 std::vector<_II>& neigh)
const
964 neigh[n] = it + slip::next_4c[n];
968 template<
typename _II>
970 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
975 neigh[n] = it[slip::next_4c[n]];
983 template<
typename Container>
988 rows_(static_cast<int>(cont.rows())),
989 cols_(static_cast<int>(cont.cols())),
993 template<
typename _II>
995 std::vector<_II>& neigh)
const
1005 int i = it_i + slip::n_6co[n][0];
1010 int j = it_j + slip::n_6co[n][1];
1015 neigh.push_back(it + slip::n_6co[n]);
1026 int i = it_i + slip::n_6ce[n][0];
1031 int j = it_j + slip::n_6ce[n][1];
1036 neigh.push_back(it + slip::n_6ce[n]);
1046 template<
typename _II>
1048 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1058 int i = it_i + slip::n_6co[n][0];
1063 int j = it_j + slip::n_6co[n][1];
1068 neigh.push_back(it[slip::n_6co[n]]);
1079 int i = it_i + slip::n_6ce[n][0];
1084 int j = it_j + slip::n_6ce[n][1];
1089 neigh.push_back(it[slip::n_6ce[n]]);
1111 template<
typename _II>
1113 std::vector<_II>& neigh)
const
1120 neigh[n] = it + slip::n_6co[n];
1127 neigh[n] = it + slip::n_6ce[n];
1132 template<
typename _II>
1134 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1141 neigh[n] = it[slip::n_6co[n]];
1148 neigh[n] = it[slip::n_6ce[n]];
1157 template<
typename Container>
1162 rows_(static_cast<int>(cont.rows())),
1163 cols_(static_cast<int>(cont.cols())),
1167 template<
typename _II>
1169 std::vector<_II>& neigh)
const
1179 int i = it_i + slip::prev_6co[n][0];
1184 int j = it_j + slip::prev_6co[n][1];
1189 neigh.push_back(it + slip::prev_6co[n]);
1200 int i = it_i + slip::prev_6ce[n][0];
1205 int j = it_j + slip::prev_6ce[n][1];
1210 neigh.push_back(it + slip::prev_6ce[n]);
1219 template<
typename _II>
1221 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1231 int i = it_i + slip::prev_6co[n][0];
1236 int j = it_j + slip::prev_6co[n][1];
1241 neigh.push_back(it[slip::prev_6co[n]]);
1252 int i = it_i + slip::prev_6ce[n][0];
1257 int j = it_j + slip::prev_6ce[n][1];
1262 neigh.push_back(it[slip::prev_6ce[n]]);
1278 template<
typename Container>
1283 rows_(static_cast<int>(cont.rows())),
1284 cols_(static_cast<int>(cont.cols())),
1288 template<
typename _II>
1290 std::vector<_II>& neigh)
const
1300 int i = it_i + slip::next_6co[n][0];
1305 int j = it_j + slip::next_6co[n][1];
1310 neigh.push_back(it + slip::next_6co[n]);
1321 int i = it_i + slip::next_6ce[n][0];
1326 int j = it_j + slip::next_6ce[n][1];
1331 neigh.push_back(it + slip::next_6ce[n]);
1341 template<
typename _II>
1343 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1353 int i = it_i + slip::next_6co[n][0];
1358 int j = it_j + slip::next_6co[n][1];
1363 neigh.push_back(it[slip::next_6co[n]]);
1374 int i = it_i + slip::next_6ce[n][0];
1379 int j = it_j + slip::next_6ce[n][1];
1384 neigh.push_back(it[slip::next_6ce[n]]);
1407 template<
typename _II>
1409 std::vector<_II>& neigh)
const
1416 neigh[n] = it + slip::prev_6co[n];
1423 neigh[n] = it + slip::prev_6ce[n];
1428 template<
typename _II>
1430 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1437 neigh[n] = it[slip::prev_6co[n]];
1444 neigh[n] = it[slip::prev_6ce[n]];
1458 template<
typename _II>
1460 std::vector<_II>& neigh)
const
1467 neigh[n] = it + slip::next_6co[n];
1474 neigh[n] = it + slip::next_6ce[n];
1479 template<
typename _II>
1481 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1488 neigh[n] = it[slip::next_6co[n]];
1495 neigh[n] = it[slip::next_6ce[n]];
1511 template<
typename Container>
1516 slices_(static_cast<int>(cont.slices())),
1517 rows_(static_cast<int>(cont.rows())),
1518 cols_(static_cast<int>(cont.cols())),
1522 template<
typename _II>
1524 std::vector<_II>& neigh)
const
1532 int k = it_k + slip::n_6c[n][0];
1537 int i = it_i + slip::n_6c[n][1];
1542 int j = it_j + slip::n_6c[n][2];
1547 neigh.push_back(it+slip::n_6c[n]);
1558 template<
typename _II>
1560 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1568 int k = it_k + slip::n_6c[n][0];
1573 int i = it_i + slip::n_6c[n][1];
1578 int j = it_j + slip::n_6c[n][2];
1583 neigh.push_back(it[slip::n_6c[n]]);
1606 template<
typename _II>
1608 std::vector<_II>& neigh)
const
1613 neigh[n] = it + slip::n_6c[n];
1617 template<
typename _II>
1619 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1624 neigh[n] = it[slip::n_6c[n]];
1632 template<
typename Container>
1637 slices_(static_cast<int>(cont.slices())),
1638 rows_(static_cast<int>(cont.rows())),
1639 cols_(static_cast<int>(cont.cols())),
1643 template<
typename _II>
1645 std::vector<_II>& neigh)
const
1655 int k = it_k + slip::prev_6c[n][0];
1660 int i = it_i + slip::prev_6c[n][1];
1665 int j = it_j + slip::prev_6c[n][2];
1670 neigh.push_back(it+slip::prev_6c[n]);
1680 template<
typename _II>
1682 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1692 int k = it_k + slip::prev_6c[n][0];
1697 int i = it_i + slip::prev_6c[n][1];
1702 int j = it_j + slip::prev_6c[n][2];
1707 neigh.push_back(it[slip::prev_6c[n]]);
1731 template<
typename _II>
1733 std::vector<_II>& neigh)
const
1739 neigh[n] = it + slip::prev_6c[n];
1743 template<
typename _II>
1745 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1751 neigh[n] = it[slip::prev_6c[n]];
1758 template<
typename Container>
1763 slices_(static_cast<int>(cont.slices())),
1764 rows_(static_cast<int>(cont.rows())),
1765 cols_(static_cast<int>(cont.cols())),
1769 template<
typename _II>
1771 std::vector<_II>& neigh)
const
1779 int k = it_k + slip::next_6c[n][0];
1784 int i = it_i + slip::next_6c[n][1];
1789 int j = it_j + slip::next_6c[n][2];
1794 neigh.push_back(it+slip::next_6c[n]);
1805 template<
typename _II>
1807 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1815 int k = it_k + slip::next_6c[n][0];
1820 int i = it_i + slip::next_6c[n][1];
1825 int j = it_j + slip::next_6c[n][2];
1830 neigh.push_back(it[slip::next_6c[n]]);
1854 template<
typename _II>
1856 std::vector<_II>& neigh)
const
1862 neigh[n] = it + slip::next_6c[n];
1866 template<
typename _II>
1868 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1874 neigh[n] = it[slip::next_6c[n]];
1882 template<
typename Container>
1887 slices_(static_cast<int>(cont.slices())),
1888 rows_(static_cast<int>(cont.rows())),
1889 cols_(static_cast<int>(cont.cols())),
1893 template<
typename _II>
1895 std::vector<_II>& neigh)
const
1904 int k = it_k + slip::n_26c[n][0];
1909 int i = it_i + slip::n_26c[n][1];
1914 int j = it_j + slip::n_26c[n][2];
1919 neigh.push_back(it+slip::n_26c[n]);
1929 template<
typename _II>
1931 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1940 int k = it_k + slip::n_26c[n][0];
1945 int i = it_i + slip::n_26c[n][1];
1950 int j = it_j + slip::n_26c[n][2];
1955 neigh.push_back(it[slip::n_26c[n]]);
1978 template<
typename _II>
1980 std::vector<_II>& neigh)
const
1985 neigh[n] = it + slip::n_26c[n];
1989 template<
typename _II>
1991 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
1996 neigh[n] = it[slip::n_26c[n]];
2005 template<
typename Container>
2010 slices_(static_cast<int>(cont.slices())),
2011 rows_(static_cast<int>(cont.rows())),
2012 cols_(static_cast<int>(cont.cols())),
2016 template<
typename _II>
2018 std::vector<_II>& neigh)
const
2028 int k = it_k + slip::prev_26c[n][0];
2033 int i = it_i + slip::prev_26c[n][1];
2038 int j = it_j + slip::prev_26c[n][2];
2043 neigh.push_back(it+slip::prev_26c[n]);
2053 template<
typename _II>
2055 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2065 int k = it_k + slip::prev_26c[n][0];
2070 int i = it_i + slip::prev_26c[n][1];
2075 int j = it_j + slip::prev_26c[n][2];
2080 neigh.push_back(it[slip::prev_26c[n]]);
2104 template<
typename _II>
2106 std::vector<_II>& neigh)
const
2112 neigh[n] = it + slip::prev_26c[n];
2116 template<
typename _II>
2118 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2124 neigh[n] = it[slip::prev_26c[n]];
2132 template<
typename Container>
2137 slices_(static_cast<int>(cont.slices())),
2138 rows_(static_cast<int>(cont.rows())),
2139 cols_(static_cast<int>(cont.cols())),
2143 template<
typename _II>
2145 std::vector<_II>& neigh)
const
2155 int k = it_k + slip::next_26c[n][0];
2160 int i = it_i + slip::next_26c[n][1];
2165 int j = it_j + slip::next_26c[n][2];
2170 neigh.push_back(it+slip::next_26c[n]);
2181 template<
typename _II>
2183 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2193 int k = it_k + slip::next_26c[n][0];
2198 int i = it_i + slip::next_26c[n][1];
2203 int j = it_j + slip::next_26c[n][2];
2208 neigh.push_back(it[slip::next_26c[n]]);
2233 template<
typename _II>
2235 std::vector<_II>& neigh)
const
2241 neigh[n] = it + slip::next_26c[n];
2245 template<
typename _II>
2247 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2253 neigh[n] = it[slip::next_26c[n]];
2261 template<
typename Container>
2266 slices_(static_cast<int>(cont.slices())),
2267 rows_(static_cast<int>(cont.rows())),
2268 cols_(static_cast<int>(cont.cols())),
2272 template<
typename _II>
2274 std::vector<_II>& neigh)
const
2282 int k = it_k + slip::n_18c[n][0];
2287 int i = it_i + slip::n_18c[n][1];
2292 int j = it_j + slip::n_18c[n][2];
2297 neigh.push_back(it+slip::n_18c[n]);
2308 template<
typename _II>
2310 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2318 int k = it_k + slip::n_18c[n][0];
2323 int i = it_i + slip::n_18c[n][1];
2328 int j = it_j + slip::n_18c[n][2];
2333 neigh.push_back(it[slip::n_18c[n]]);
2356 template<
typename _II>
2358 std::vector<_II>& neigh)
const
2363 neigh[n] = it + slip::n_18c[n];
2367 template<
typename _II>
2369 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2374 neigh[n] = it[slip::n_18c[n]];
2381 template<
typename Container>
2386 slices_(static_cast<int>(cont.slices())),
2387 rows_(static_cast<int>(cont.rows())),
2388 cols_(static_cast<int>(cont.cols())),
2392 template<
typename _II>
2394 std::vector<_II>& neigh)
const
2404 int k = it_k + slip::prev_18c[n][0];
2409 int i = it_i + slip::prev_18c[n][1];
2414 int j = it_j + slip::prev_18c[n][2];
2419 neigh.push_back(it+slip::prev_18c[n]);
2430 template<
typename _II>
2432 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2442 int k = it_k + slip::prev_18c[n][0];
2447 int i = it_i + slip::prev_18c[n][1];
2452 int j = it_j + slip::prev_18c[n][2];
2457 neigh.push_back(it[slip::prev_18c[n]]);
2481 template<
typename _II>
2483 std::vector<_II>& neigh)
const
2489 neigh[n] = it + slip::prev_18c[n];
2494 template<
typename _II>
2496 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2502 neigh[n] = it[slip::prev_18c[n]];
2512 template<
typename Container>
2517 slices_(static_cast<int>(cont.slices())),
2518 rows_(static_cast<int>(cont.rows())),
2519 cols_(static_cast<int>(cont.cols())),
2523 template<
typename _II>
2525 std::vector<_II>& neigh)
const
2535 int k = it_k + slip::next_18c[n][0];
2540 int i = it_i + slip::next_18c[n][1];
2545 int j = it_j + slip::next_18c[n][2];
2550 neigh.push_back(it+slip::next_18c[n]);
2561 template<
typename _II>
2563 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2573 int k = it_k + slip::next_18c[n][0];
2578 int i = it_i + slip::next_18c[n][1];
2583 int j = it_j + slip::next_18c[n][2];
2588 neigh.push_back(it[slip::next_18c[n]]);
2612 template<
typename _II>
2614 std::vector<_II>& neigh)
const
2620 neigh[n] = it + slip::next_18c[n];
2625 template<
typename _II>
2627 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2633 neigh[n] = it[slip::next_18c[n]];
2665 template<
typename Container>
2670 slabs_(static_cast<int>(cont.slabs())),
2671 slices_(static_cast<int>(cont.slices())),
2672 rows_(static_cast<int>(cont.rows())),
2673 cols_(static_cast<int>(cont.cols())),
2677 template<
typename _II>
2679 std::vector<_II>& neigh)
const
2688 int t = it_t + slip::n_4d_8c[n][0];
2693 int k = it_k + slip::n_4d_8c[n][1];
2698 int i = it_i + slip::n_4d_8c[n][2];
2703 int j = it_j + slip::n_4d_8c[n][3];
2708 neigh.push_back(it+slip::n_4d_8c[n]);
2721 template<
typename _II>
2723 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2732 int t = it_t + slip::n_4d_8c[n][0];
2737 int k = it_k + slip::n_4d_8c[n][1];
2742 int i = it_i + slip::n_4d_8c[n][2];
2747 int j = it_j + slip::n_4d_8c[n][3];
2752 neigh.push_back(it[slip::n_4d_8c[n]]);
2785 template<
typename _II>
2787 std::vector<_II>& neigh)
const
2792 neigh[n] = it + slip::n_4d_8c[n];
2796 template<
typename _II>
2798 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2803 neigh[n] = it[slip::n_4d_8c[n]];
2817 template<
typename Container>
2822 slabs_(static_cast<int>(cont.slabs())),
2823 slices_(static_cast<int>(cont.slices())),
2824 rows_(static_cast<int>(cont.rows())),
2825 cols_(static_cast<int>(cont.cols())),
2829 template<
typename _II>
2831 std::vector<_II>& neigh)
const
2842 int t = it_t + slip::n_4d_8c[n][0];
2847 int k = it_k + slip::n_4d_8c[n][1];
2852 int i = it_i + slip::n_4d_8c[n][2];
2857 int j = it_j + slip::n_4d_8c[n][3];
2862 neigh.push_back(it+slip::n_4d_8c[n]);
2874 template<
typename _II>
2876 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2887 int t = it_t + slip::n_4d_8c[n][0];
2892 int k = it_k + slip::n_4d_8c[n][1];
2897 int i = it_i + slip::n_4d_8c[n][2];
2902 int j = it_j + slip::n_4d_8c[n][3];
2907 neigh.push_back(it[slip::n_4d_8c[n]]);
2940 template<
typename _II>
2942 std::vector<_II>& neigh)
const
2948 neigh[n] = it + slip::n_4d_8c[n];
2952 template<
typename _II>
2954 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
2960 neigh[n] = it[slip::n_4d_8c[n]];
2974 template<
typename Container>
2979 slabs_(static_cast<int>(cont.slabs())),
2980 slices_(static_cast<int>(cont.slices())),
2981 rows_(static_cast<int>(cont.rows())),
2982 cols_(static_cast<int>(cont.cols())),
2986 template<
typename _II>
2988 std::vector<_II>& neigh)
const
2997 int t = it_t + slip::n_4d_8c[n][0];
3002 int k = it_k + slip::n_4d_8c[n][1];
3007 int i = it_i + slip::n_4d_8c[n][2];
3012 int j = it_j + slip::n_4d_8c[n][3];
3017 neigh.push_back(it+slip::n_4d_8c[n]);
3030 template<
typename _II>
3032 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
3041 int t = it_t + slip::n_4d_8c[n][0];
3046 int k = it_k + slip::n_4d_8c[n][1];
3051 int i = it_i + slip::n_4d_8c[n][2];
3056 int j = it_j + slip::n_4d_8c[n][3];
3061 neigh.push_back(it[slip::n_4d_8c[n]]);
3095 template<
typename _II>
3097 std::vector<_II>& neigh)
const
3103 neigh[n] = it + slip::n_4d_8c[n];
3107 template<
typename _II>
3109 std::vector<
typename std::iterator_traits<_II>::value_type>& neigh)
const
3115 neigh[n] = it[slip::n_4d_8c[n]];
3129 #endif //SLIP_NEIGHBORHOOD_HPP
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
SafePrev6C(const Container &cont)
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
SafeNext6C(const Container &cont)
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
SafePrev8C(const Container &cont)
Provides a class to tag SLIP iterators.
safe version of next N4D8C neighborhood (only next and existing neighbors are returned) ...
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
SafeNextPseudoHexagonal(const Container &cont)
SafeN26C(const Container &cont)
SafeNext18C(const Container &cont)
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
SafePseudoHexagonal(const Container &cont)
safe version of previous N4D8C neighborhood (only previous and existing neighbors are returned) ...
void operator()(_II it, std::vector< _II > &neigh) const
SafeN4C(const Container &cont)
void operator()(_II it, std::vector< _II > &neigh) const
SafePrev18C(const Container &cont)
SafeN4D8C(const Container &cont)
void operator()(_II it, std::vector< _II > &neigh) const
next N4D8C neighborhood (only next neighbors are returned)
void operator()(_II it, std::vector< _II > &neigh) const
Provides a class to manipulate neighbourhood configurations.
SafeNext8C(const Container &cont)
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
SafePrev4C(const Container &cont)
void operator()(_II it, std::vector< _II > &neigh) const
SafeN8C(const Container &cont)
previous N4D8C neighborhood (only previous neighbors are returned)
void operator()(_II it, std::vector< _II > &neigh) const
SafeNext4D8C(const Container &cont)
SafeN2C(const Container &cont)
SafeNext4C(const Container &cont)
SafePrev2C(const Container &cont)
SafeN18C(const Container &cont)
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
SafePrev4D8C(const Container &cont)
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
SafeN6C(const Container &cont)
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
SafeNext2C(const Container &cont)
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
SafeNext26C(const Container &cont)
SafePrev26C(const Container &cont)
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
void operator()(_II it, std::vector< _II > &neigh) const
safe version of N4D8C neighborhood (only existing neighbors are returned)
void operator()(_II it, std::vector< _II > &neigh) const
SafePrevPseudoHexagonal(const Container &cont)