ndarray
NumPy-friendly multidimensional arrays in C++
Loading...
Searching...
No Matches
ndarray_fwd.h
Go to the documentation of this file.
1// -*- c++ -*-
2/*
3 * Copyright (c) 2010-2012, Jim Bosch
4 * All rights reserved.
5 *
6 * ndarray is distributed under a simple BSD-like license;
7 * see the LICENSE file that should be present in the root
8 * of the source distribution, or alternately available at:
9 * https://github.com/ndarray/ndarray
10 */
11#ifndef NDARRAY_ndarray_fwd_h_INCLUDED
12#define NDARRAY_ndarray_fwd_h_INCLUDED
13
21
23
25
27
28#include <cstddef>
29
30#include <boost/type_traits/is_const.hpp>
31#include <boost/type_traits/add_const.hpp>
32#include <boost/type_traits/remove_const.hpp>
33#include <boost/mpl/bool.hpp>
34#include <cassert>
35
36#ifdef __GNUC__
37#if __GNUC__ == 4 && __GNUC_MINOR__ == 5
38#define GCC_45
39#endif
40#endif
41
42#define NDARRAY_ASSERT(ARG) assert(ARG)
43
44namespace ndarray {
45
46template <typename T, int N, int C> struct ArrayTraits;
47template <typename Expression_> struct ExpressionTraits;
48class Manager;
49
51enum DataOrderEnum { ROW_MAJOR=1, COLUMN_MAJOR=2 };
52
53typedef std::size_t Size;
54typedef std::ptrdiff_t Offset;
55
56namespace detail {
57
58template <int N> class Core;
59
60class CountingExpression;
61
62template <
63 typename Operand,
64 typename UnaryFunction,
65 int N = ExpressionTraits<Operand>::ND::value
66 >
67class UnaryOpExpression;
68
69template <
70 typename Operand1,
71 typename Operand2,
72 typename BinaryFunction,
73 int N = ExpressionTraits<Operand1>::ND::value
74 >
75class BinaryOpExpression;
76
77template <typename Iterator_> struct IteratorTraits;
78
79template <typename T, int N, int C> class NestedIterator;
80
81template <typename T> class StridedIterator;
82
83#ifndef GCC_45
84
85template <
86 typename Operand,
87 typename UnaryFunction
88 >
89class UnaryOpIterator;
90
91template <
92 typename Operand1,
93 typename Operand2,
94 typename BinaryFunction
95 >
97
98#endif
99
100} // namespace detail
101
102template <typename Derived> class ExpressionBase;
103template <typename Derived> class ArrayBase;
104template <typename T, int N, int C=0> class ArrayRef;
105template <typename T, int N, int C=0> class Array;
106template <typename T, int N> struct Vector;
107
108} // namespace ndarray
109
110#endif // !NDARRAY_ndarray_fwd_h_INCLUDED
CRTP implementation for Array and ArrayRef.
Definition ArrayBase.h:43
A proxy class for Array with deep assignment operators.
Definition ArrayRef.h:34
A multidimensional strided array.
Definition Array.h:35
CRTP base class for all multidimensional expressions.
Definition ExpressionBase.h:40
Definition BinaryOp.h:48
Definition NestedIterator.h:46
Definition StridedIterator.h:36
Definition UnaryOp.h:41
DataOrderEnum
An enumeration for stride computation.
Definition ndarray_fwd.h:51
A fixed-size 1D array class.
Definition Vector.h:82
Definition ndarray_fwd.h:77