1#ifndef FUSED_STRIDED_LAYOUT_H
2#define FUSED_STRIDED_LAYOUT_H
7template <my_
size_t NumberOfDims>
35#ifdef RUNTIME_USE_BOUNDS_CHECKING
46#ifdef RUNTIME_USE_BOUNDS_CHECKING
82#ifdef RUNTIME_USE_BOUNDS_CHECKING
83 if (indices[i] >=
shape[i])
88 flatIndex += indices[i] *
stride[i];
static void error(const T &msg)
Definition error_handler.h:30
Global configuration for the tesseract tensor library.
#define my_size_t
Size/index type used throughout the library.
Definition config.h:126
#define FORCE_INLINE
Hint the compiler to always inline a function.
Definition config.h:26
STL-free memory utilities.
void copy_n_optimized(const T *src, T *dst, my_size_t count)
Copy elements from a source buffer to a destination buffer.
Definition mem_utils.h:100
Definition strided_layout.h:9
void compute_row_major_strides() noexcept
Definition strided_layout.h:55
FORCE_INLINE my_size_t getDim(my_size_t i) const
Definition strided_layout.h:33
FORCE_INLINE my_size_t computeOffsetFromFlat(my_size_t flat) const noexcept
Definition strided_layout.h:93
FORCE_INLINE my_size_t compute_flat_index(const my_size_t *indices) const
Definition strided_layout.h:77
FORCE_INLINE my_size_t getStride(my_size_t i) const
Definition strided_layout.h:44
FORCE_INLINE void compute_indices_from_flat(my_size_t flatIdx, my_size_t(&indices)[NumberOfDims]) const noexcept
Definition strided_layout.h:64
FORCE_INLINE constexpr my_size_t getNumDims() const noexcept
Definition strided_layout.h:31
StridedLayout & operator=(StridedLayout &&other)=default
StridedLayout & operator=(const StridedLayout &other)=default
my_size_t stride[NumberOfDims]
Definition strided_layout.h:11
StridedLayout(StridedLayout &&other)=default
StridedLayout(const my_size_t dims[NumberOfDims]) noexcept
Definition strided_layout.h:13
my_size_t shape[NumberOfDims]
Definition strided_layout.h:10
StridedLayout(const StridedLayout &other)=default