Reorder.h
Go to the documentation of this file.
1#ifndef SHARK_CORE_IMAGE_CPU_REORDER_H
2#define SHARK_CORE_IMAGE_CPU_REORDER_H
3
4#include <shark/LinAlg/Base.h>
5#include <shark/Core/Shape.h>
6namespace shark{
7
8namespace image{
9template<class T>
11 blas::dense_vector_adaptor<T const, blas::continuous_dense_tag, blas::cpu_tag> inputs,
12 blas::dense_vector_adaptor<T, blas::continuous_dense_tag, blas::cpu_tag> outputs,
13 std::size_t sizes[4],
14 std::size_t strides[4]
15){
16 std::size_t elem = 0;
17 for(std::size_t i0 = 0; i0 != sizes[0]; ++i0){
18 for(std::size_t i1 = 0; i1 != sizes[1]; ++i1){
19 for(std::size_t i2 = 0; i2 != sizes[2]; ++i2){
20 for(std::size_t i3 = 0; i3 != sizes[3]; ++i3, ++elem){
21 std::size_t index = strides[0] * i0 + strides[1] * i1 + strides[2] * i2 + strides[3] * i3;
22 outputs(elem) = inputs(index);
23 }
24 }
25 }
26 }
27}
28
29}}
30
31#endif