00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00014
00015 #ifndef BOOST_UBLAS_FWD_H
00016 #define BOOST_UBLAS_FWD_H
00017
00018 #include <memory>
00019
00020 namespace boost { namespace numeric { namespace ublas {
00021
00022
00023 template<class T, class ALLOC = std::allocator<T> >
00024 class unbounded_array;
00025
00026 template<class T, std::size_t N, class ALLOC = std::allocator<T> >
00027 class bounded_array;
00028
00029 template <class Z = std::size_t, class D = std::ptrdiff_t>
00030 class basic_range;
00031 template <class Z = std::size_t, class D = std::ptrdiff_t>
00032 class basic_slice;
00033 typedef basic_range<> range;
00034 typedef basic_slice<> slice;
00035 template<class A = unbounded_array<std::size_t> >
00036 class indirect_array;
00037
00038 template<class I, class T, class ALLOC = std::allocator<std::pair<const I, T> > >
00039 class map_std;
00040 template<class I, class T, class ALLOC = std::allocator<std::pair<I, T> > >
00041 class map_array;
00042
00043
00044 struct scalar_tag {};
00045
00046 struct vector_tag {};
00047 template<class E>
00048 class vector_expression;
00049 template<class C>
00050 class vector_container;
00051
00052 template<class E>
00053 class vector_reference;
00054
00055 struct matrix_tag {};
00056
00057 template<class E>
00058 class matrix_expression;
00059 template<class C>
00060 class matrix_container;
00061
00062 template<class E>
00063 class matrix_reference;
00064
00065 template<class V>
00066 class vector_range;
00067 template<class V>
00068 class vector_slice;
00069 template<class V, class IA = indirect_array<> >
00070 class vector_indirect;
00071
00072 template<class M>
00073 class matrix_row;
00074 template<class M>
00075 class matrix_column;
00076 template<class M>
00077 class matrix_vector_range;
00078 template<class M>
00079 class matrix_vector_slice;
00080 template<class M, class IA = indirect_array<> >
00081 class matrix_vector_indirect;
00082 template<class M>
00083 class matrix_range;
00084 template<class M>
00085 class matrix_slice;
00086 template<class M, class IA = indirect_array<> >
00087 class matrix_indirect;
00088
00089 template<class T, class A = unbounded_array<T> >
00090 class vector;
00091 template<class T, std::size_t N>
00092 class bounded_vector;
00093
00094 template<class T = int, class ALLOC = std::allocator<T> >
00095 class unit_vector;
00096 template<class T = int, class ALLOC = std::allocator<T> >
00097 class zero_vector;
00098 template<class T = int, class ALLOC = std::allocator<T> >
00099 class scalar_vector;
00100
00101 template<class T, std::size_t N>
00102 class c_vector;
00103
00104
00105 template<class T, class A = map_std<std::size_t, T> >
00106 class mapped_vector;
00107 template<class T, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
00108 class compressed_vector;
00109 template<class T, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
00110 class coordinate_vector;
00111
00112
00113 struct unknown_orientation_tag {};
00114 struct row_major_tag {};
00115 struct column_major_tag {};
00116
00117
00118 template <class Z = std::size_t, class D = std::ptrdiff_t>
00119 struct basic_row_major;
00120 typedef basic_row_major<> row_major;
00121
00122 template <class Z = std::size_t, class D = std::ptrdiff_t>
00123 struct basic_column_major;
00124 typedef basic_column_major<> column_major;
00125
00126 template<class T, class L = row_major, class A = unbounded_array<T> >
00127 class matrix;
00128 template<class T, std::size_t M, std::size_t N, class L = row_major>
00129 class bounded_matrix;
00130
00131 template<class T = int, class ALLOC = std::allocator<T> >
00132 class identity_matrix;
00133 template<class T = int, class ALLOC = std::allocator<T> >
00134 class zero_matrix;
00135 template<class T = int, class ALLOC = std::allocator<T> >
00136 class scalar_matrix;
00137
00138 template<class T, std::size_t M, std::size_t N>
00139 class c_matrix;
00140
00141 template<class T, class L = row_major, class A = unbounded_array<unbounded_array<T> > >
00142 class vector_of_vector;
00143
00144 template<class T, class L = row_major, class A = vector<compressed_vector<T> > >
00145 class generalized_vector_of_vector;
00146
00147
00148 struct lower_tag {};
00149 struct upper_tag {};
00150 struct unit_lower_tag : public lower_tag {};
00151 struct unit_upper_tag : public upper_tag {};
00152 struct strict_lower_tag : public lower_tag {};
00153 struct strict_upper_tag : public upper_tag {};
00154
00155
00156 template <class Z = std::size_t>
00157 struct basic_full;
00158 typedef basic_full<> full;
00159
00160 template <class Z = std::size_t>
00161 struct basic_lower;
00162 typedef basic_lower<> lower;
00163
00164 template <class Z = std::size_t>
00165 struct basic_upper;
00166 typedef basic_upper<> upper;
00167
00168 template <class Z = std::size_t>
00169 struct basic_unit_lower;
00170 typedef basic_unit_lower<> unit_lower;
00171
00172 template <class Z = std::size_t>
00173 struct basic_unit_upper;
00174 typedef basic_unit_upper<> unit_upper;
00175
00176 template <class Z = std::size_t>
00177 struct basic_strict_lower;
00178 typedef basic_strict_lower<> strict_lower;
00179
00180 template <class Z = std::size_t>
00181 struct basic_strict_upper;
00182 typedef basic_strict_upper<> strict_upper;
00183
00184
00185 template<class T, class L = row_major, class A = unbounded_array<T> >
00186 class banded_matrix;
00187 template<class T, class L = row_major, class A = unbounded_array<T> >
00188 class diagonal_matrix;
00189
00190 template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
00191 class triangular_matrix;
00192 template<class M, class TRI = lower>
00193 class triangular_adaptor;
00194
00195 template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
00196 class symmetric_matrix;
00197 template<class M, class TRI = lower>
00198 class symmetric_adaptor;
00199
00200 template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
00201 class hermitian_matrix;
00202 template<class M, class TRI = lower>
00203 class hermitian_adaptor;
00204
00205
00206 template<class T, class L = row_major, class A = map_std<std::size_t, T> >
00207 class mapped_matrix;
00208 template<class T, class L = row_major, class A = map_std<std::size_t, map_std<std::size_t, T> > >
00209 class mapped_vector_of_mapped_vector;
00210 template<class T, class L = row_major, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
00211 class compressed_matrix;
00212 template<class T, class L = row_major, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
00213 class coordinate_matrix;
00214
00215 }}}
00216
00217 #endif