File indexing completed on 2025-01-18 09:43:05
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #ifndef BOOST_UBLAS_FWD_H
0016 #define BOOST_UBLAS_FWD_H
0017
0018 #include <memory>
0019
0020 #ifdef BOOST_UBLAS_CPP_GE_2011
0021 #include <array>
0022 #endif
0023
0024 namespace boost { namespace numeric { namespace ublas {
0025
0026
0027 template<class T, class ALLOC = std::allocator<T> >
0028 class unbounded_array;
0029
0030 template<class T, std::size_t N, class ALLOC = std::allocator<T> >
0031 class bounded_array;
0032
0033 template <class Z = std::size_t, class D = std::ptrdiff_t>
0034 class basic_range;
0035 template <class Z = std::size_t, class D = std::ptrdiff_t>
0036 class basic_slice;
0037 typedef basic_range<> range;
0038 typedef basic_slice<> slice;
0039 template<class A = unbounded_array<std::size_t> >
0040 class indirect_array;
0041
0042 template<class I, class T, class ALLOC = std::allocator<std::pair<const I, T> > >
0043 class map_std;
0044 template<class I, class T, class ALLOC = std::allocator<std::pair<I, T> > >
0045 class map_array;
0046
0047
0048 struct scalar_tag {};
0049
0050 struct vector_tag {};
0051 template<class E>
0052 class vector_expression;
0053 template<class C>
0054 class vector_container;
0055
0056 template<class E>
0057 class vector_reference;
0058
0059 struct matrix_tag {};
0060
0061 template<class E>
0062 class matrix_expression;
0063 template<class C>
0064 class matrix_container;
0065
0066 template<class E>
0067 class matrix_reference;
0068
0069 template<class V>
0070 class vector_range;
0071 template<class V>
0072 class vector_slice;
0073 template<class V, class IA = indirect_array<> >
0074 class vector_indirect;
0075
0076 template<class M>
0077 class matrix_row;
0078 template<class M>
0079 class matrix_column;
0080 template<class M>
0081 class matrix_vector_range;
0082 template<class M>
0083 class matrix_vector_slice;
0084 template<class M, class IA = indirect_array<> >
0085 class matrix_vector_indirect;
0086 template<class M>
0087 class matrix_range;
0088 template<class M>
0089 class matrix_slice;
0090 template<class M, class IA = indirect_array<> >
0091 class matrix_indirect;
0092
0093 template<class T, class A = unbounded_array<T> >
0094 class vector;
0095 #ifdef BOOST_UBLAS_CPP_GE_2011
0096 template<class T, std::size_t N, class A = std::array<T, N> >
0097 class fixed_vector;
0098 #endif
0099 template<class T, std::size_t N>
0100 class bounded_vector;
0101
0102 template<class T = int, class ALLOC = std::allocator<T> >
0103 class unit_vector;
0104 template<class T = int, class ALLOC = std::allocator<T> >
0105 class zero_vector;
0106 template<class T = int, class ALLOC = std::allocator<T> >
0107 class scalar_vector;
0108
0109 template<class T, std::size_t N>
0110 class c_vector;
0111
0112
0113 template<class T, class A = map_std<std::size_t, T> >
0114 class mapped_vector;
0115 template<class T, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
0116 class compressed_vector;
0117 template<class T, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
0118 class coordinate_vector;
0119
0120
0121 struct unknown_orientation_tag {};
0122 struct row_major_tag {};
0123 struct column_major_tag {};
0124
0125
0126 template <class Z = std::size_t, class D = std::ptrdiff_t>
0127 struct basic_row_major;
0128 typedef basic_row_major<> row_major;
0129
0130 template <class Z = std::size_t, class D = std::ptrdiff_t>
0131 struct basic_column_major;
0132 typedef basic_column_major<> column_major;
0133
0134 template<class T, class L = row_major, class A = unbounded_array<T> >
0135 class matrix;
0136 #ifdef BOOST_UBLAS_CPP_GE_2011
0137 template<class T, std::size_t M, std::size_t N, class L = row_major, class A = std::array<T, M*N> >
0138 class fixed_matrix;
0139 #endif
0140 template<class T, std::size_t M, std::size_t N, class L = row_major>
0141 class bounded_matrix;
0142
0143 template<class T = int, class ALLOC = std::allocator<T> >
0144 class identity_matrix;
0145 template<class T = int, class ALLOC = std::allocator<T> >
0146 class zero_matrix;
0147 template<class T = int, class ALLOC = std::allocator<T> >
0148 class scalar_matrix;
0149
0150 template<class T, std::size_t M, std::size_t N>
0151 class c_matrix;
0152
0153 template<class T, class L = row_major, class A = unbounded_array<unbounded_array<T> > >
0154 class vector_of_vector;
0155
0156 template<class T, class L = row_major, class A = vector<compressed_vector<T> > >
0157 class generalized_vector_of_vector;
0158
0159
0160 struct lower_tag {};
0161 struct upper_tag {};
0162 struct unit_lower_tag : public lower_tag {};
0163 struct unit_upper_tag : public upper_tag {};
0164 struct strict_lower_tag : public lower_tag {};
0165 struct strict_upper_tag : public upper_tag {};
0166
0167
0168 template <class Z = std::size_t>
0169 struct basic_full;
0170 typedef basic_full<> full;
0171
0172 template <class Z = std::size_t>
0173 struct basic_lower;
0174 typedef basic_lower<> lower;
0175
0176 template <class Z = std::size_t>
0177 struct basic_upper;
0178 typedef basic_upper<> upper;
0179
0180 template <class Z = std::size_t>
0181 struct basic_unit_lower;
0182 typedef basic_unit_lower<> unit_lower;
0183
0184 template <class Z = std::size_t>
0185 struct basic_unit_upper;
0186 typedef basic_unit_upper<> unit_upper;
0187
0188 template <class Z = std::size_t>
0189 struct basic_strict_lower;
0190 typedef basic_strict_lower<> strict_lower;
0191
0192 template <class Z = std::size_t>
0193 struct basic_strict_upper;
0194 typedef basic_strict_upper<> strict_upper;
0195
0196
0197 template<class T, class L = row_major, class A = unbounded_array<T> >
0198 class banded_matrix;
0199 template<class T, class L = row_major, class A = unbounded_array<T> >
0200 class diagonal_matrix;
0201
0202 template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
0203 class triangular_matrix;
0204 template<class M, class TRI = lower>
0205 class triangular_adaptor;
0206
0207 template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
0208 class symmetric_matrix;
0209 template<class M, class TRI = lower>
0210 class symmetric_adaptor;
0211
0212 template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
0213 class hermitian_matrix;
0214 template<class M, class TRI = lower>
0215 class hermitian_adaptor;
0216
0217
0218 template<class T, class L = row_major, class A = map_std<std::size_t, T> >
0219 class mapped_matrix;
0220 template<class T, class L = row_major, class A = map_std<std::size_t, map_std<std::size_t, T> > >
0221 class mapped_vector_of_mapped_vector;
0222 template<class T, class L = row_major, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
0223 class compressed_matrix;
0224 template<class T, class L = row_major, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
0225 class coordinate_matrix;
0226
0227 }}}
0228
0229 #endif