Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:43:05

0001 //
0002 //  Copyright (c) 2000-2010
0003 //  Joerg Walter, Mathias Koch, David Bellot
0004 //
0005 //  Distributed under the Boost Software License, Version 1.0. (See
0006 //  accompanying file LICENSE_1_0.txt or copy at
0007 //  http://www.boost.org/LICENSE_1_0.txt)
0008 //
0009 //  The authors gratefully acknowledge the support of
0010 //  GeNeSys mbH & Co. KG in producing this work.
0011 //
0012 
0013 /// \file fwd.hpp is essentially used to forward declare the main types
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     // Storage types
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     // Expression types
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     // Sparse vectors
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     // Matrix orientation type
0121     struct unknown_orientation_tag {};
0122     struct row_major_tag {};
0123     struct column_major_tag {};
0124 
0125     // Matrix storage layout parameterisation
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     // Triangular matrix type
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     // Triangular matrix parameterisation
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     // Special matrices
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     // Sparse matrices
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