1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/ossrv_pub/boost_apis/boost/numeric/ublas/fwd.hpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,216 @@
1.4 +//
1.5 +// Copyright (c) 2000-2002
1.6 +// Joerg Walter, Mathias Koch
1.7 +//
1.8 +// Permission to use, copy, modify, distribute and sell this software
1.9 +// and its documentation for any purpose is hereby granted without fee,
1.10 +// provided that the above copyright notice appear in all copies and
1.11 +// that both that copyright notice and this permission notice appear
1.12 +// in supporting documentation. The authors make no representations
1.13 +// about the suitability of this software for any purpose.
1.14 +// It is provided "as is" without express or implied warranty.
1.15 +//
1.16 +// The authors gratefully acknowledge the support of
1.17 +// GeNeSys mbH & Co. KG in producing this work.
1.18 +//
1.19 +
1.20 +#ifndef BOOST_UBLAS_FWD_H
1.21 +#define BOOST_UBLAS_FWD_H
1.22 +
1.23 +#include <memory>
1.24 +
1.25 +namespace boost { namespace numeric { namespace ublas {
1.26 +
1.27 + // Storage types
1.28 + template<class T, class ALLOC = std::allocator<T> >
1.29 + class unbounded_array;
1.30 +
1.31 + template<class T, std::size_t N, class ALLOC = std::allocator<T> >
1.32 + class bounded_array;
1.33 +
1.34 + template <class Z = std::size_t, class D = std::ptrdiff_t>
1.35 + class basic_range;
1.36 + template <class Z = std::size_t, class D = std::ptrdiff_t>
1.37 + class basic_slice;
1.38 + typedef basic_range<> range;
1.39 + typedef basic_slice<> slice;
1.40 + template<class A = unbounded_array<std::size_t> >
1.41 + class indirect_array;
1.42 +
1.43 + template<class I, class T, class ALLOC = std::allocator<std::pair<const I, T> > >
1.44 + class map_std;
1.45 + template<class I, class T, class ALLOC = std::allocator<std::pair<I, T> > >
1.46 + class map_array;
1.47 +
1.48 + // Expression types
1.49 + struct scalar_tag {};
1.50 +
1.51 + struct vector_tag {};
1.52 + template<class E>
1.53 + class vector_expression;
1.54 + template<class C>
1.55 + class vector_container;
1.56 +
1.57 + template<class E>
1.58 + class vector_reference;
1.59 +
1.60 + struct matrix_tag {};
1.61 +
1.62 + template<class E>
1.63 + class matrix_expression;
1.64 + template<class C>
1.65 + class matrix_container;
1.66 +
1.67 + template<class E>
1.68 + class matrix_reference;
1.69 +
1.70 + template<class V>
1.71 + class vector_range;
1.72 + template<class V>
1.73 + class vector_slice;
1.74 + template<class V, class IA = indirect_array<> >
1.75 + class vector_indirect;
1.76 +
1.77 + template<class M>
1.78 + class matrix_row;
1.79 + template<class M>
1.80 + class matrix_column;
1.81 + template<class M>
1.82 + class matrix_vector_range;
1.83 + template<class M>
1.84 + class matrix_vector_slice;
1.85 + template<class M, class IA = indirect_array<> >
1.86 + class matrix_vector_indirect;
1.87 + template<class M>
1.88 + class matrix_range;
1.89 + template<class M>
1.90 + class matrix_slice;
1.91 + template<class M, class IA = indirect_array<> >
1.92 + class matrix_indirect;
1.93 +
1.94 + template<class T, class A = unbounded_array<T> >
1.95 + class vector;
1.96 + template<class T, std::size_t N>
1.97 + class bounded_vector;
1.98 +
1.99 + template<class T = int>
1.100 + class unit_vector;
1.101 + template<class T = int>
1.102 + class zero_vector;
1.103 + template<class T = int>
1.104 + class scalar_vector;
1.105 +
1.106 + template<class T, std::size_t N>
1.107 + class c_vector;
1.108 +
1.109 + // Sparse vectors
1.110 + template<class T, class A = map_std<std::size_t, T> >
1.111 + class mapped_vector;
1.112 + template<class T, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
1.113 + class compressed_vector;
1.114 + template<class T, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
1.115 + class coordinate_vector;
1.116 +
1.117 + // Matrix orientation type
1.118 + struct unknown_orientation_tag {};
1.119 + struct row_major_tag {};
1.120 + struct column_major_tag {};
1.121 +
1.122 + // Matrix storage layout parameterisation
1.123 + template <class Z = std::size_t, class D = std::ptrdiff_t>
1.124 + struct basic_row_major;
1.125 + typedef basic_row_major<> row_major;
1.126 +
1.127 + template <class Z = std::size_t, class D = std::ptrdiff_t>
1.128 + struct basic_column_major;
1.129 + typedef basic_column_major<> column_major;
1.130 +
1.131 + template<class T, class L = row_major, class A = unbounded_array<T> >
1.132 + class matrix;
1.133 + template<class T, std::size_t M, std::size_t N, class L = row_major>
1.134 + class bounded_matrix;
1.135 +
1.136 + template<class T = int>
1.137 + class identity_matrix;
1.138 + template<class T = int>
1.139 + class zero_matrix;
1.140 + template<class T = int>
1.141 + class scalar_matrix;
1.142 +
1.143 + template<class T, std::size_t M, std::size_t N>
1.144 + class c_matrix;
1.145 +
1.146 + template<class T, class L = row_major, class A = unbounded_array<unbounded_array<T> > >
1.147 + class vector_of_vector;
1.148 +
1.149 + // Triangular matrix type
1.150 + struct lower_tag {};
1.151 + struct upper_tag {};
1.152 + struct unit_lower_tag : public lower_tag {};
1.153 + struct unit_upper_tag : public upper_tag {};
1.154 + struct strict_lower_tag : public lower_tag {};
1.155 + struct strict_upper_tag : public upper_tag {};
1.156 +
1.157 + // Triangular matrix parameterisation
1.158 + template <class Z = std::size_t>
1.159 + struct basic_full;
1.160 + typedef basic_full<> full;
1.161 +
1.162 + template <class Z = std::size_t>
1.163 + struct basic_lower;
1.164 + typedef basic_lower<> lower;
1.165 +
1.166 + template <class Z = std::size_t>
1.167 + struct basic_upper;
1.168 + typedef basic_upper<> upper;
1.169 +
1.170 + template <class Z = std::size_t>
1.171 + struct basic_unit_lower;
1.172 + typedef basic_unit_lower<> unit_lower;
1.173 +
1.174 + template <class Z = std::size_t>
1.175 + struct basic_unit_upper;
1.176 + typedef basic_unit_upper<> unit_upper;
1.177 +
1.178 + template <class Z = std::size_t>
1.179 + struct basic_strict_lower;
1.180 + typedef basic_strict_lower<> strict_lower;
1.181 +
1.182 + template <class Z = std::size_t>
1.183 + struct basic_strict_upper;
1.184 + typedef basic_strict_upper<> strict_upper;
1.185 +
1.186 + // Special matrices
1.187 + template<class T, class L = row_major, class A = unbounded_array<T> >
1.188 + class banded_matrix;
1.189 + template<class T, class L = row_major, class A = unbounded_array<T> >
1.190 + class diagonal_matrix;
1.191 +
1.192 + template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
1.193 + class triangular_matrix;
1.194 + template<class M, class TRI = lower>
1.195 + class triangular_adaptor;
1.196 +
1.197 + template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
1.198 + class symmetric_matrix;
1.199 + template<class M, class TRI = lower>
1.200 + class symmetric_adaptor;
1.201 +
1.202 + template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
1.203 + class hermitian_matrix;
1.204 + template<class M, class TRI = lower>
1.205 + class hermitian_adaptor;
1.206 +
1.207 + // Sparse matrices
1.208 + template<class T, class L = row_major, class A = map_std<std::size_t, T> >
1.209 + class mapped_matrix;
1.210 + template<class T, class L = row_major, class A = map_std<std::size_t, map_std<std::size_t, T> > >
1.211 + class mapped_vector_of_mapped_vector;
1.212 + template<class T, class L = row_major, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
1.213 + class compressed_matrix;
1.214 + template<class T, class L = row_major, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
1.215 + class coordinate_matrix;
1.216 +
1.217 +}}}
1.218 +
1.219 +#endif