123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- //
- // Copyright (c) 2000-2010
- // Joerg Walter, Mathias Koch, David Bellot
- //
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- //
- // The authors gratefully acknowledge the support of
- // GeNeSys mbH & Co. KG in producing this work.
- //
- /// \file fwd.hpp is essentially used to forward declare the main types
- #ifndef BOOST_UBLAS_FWD_H
- #define BOOST_UBLAS_FWD_H
- #include <memory>
- #ifdef BOOST_UBLAS_CPP_GE_2011
- #include <array>
- #endif
- namespace boost { namespace numeric { namespace ublas {
- // Storage types
- template<class T, class ALLOC = std::allocator<T> >
- class unbounded_array;
- template<class T, std::size_t N, class ALLOC = std::allocator<T> >
- class bounded_array;
- template <class Z = std::size_t, class D = std::ptrdiff_t>
- class basic_range;
- template <class Z = std::size_t, class D = std::ptrdiff_t>
- class basic_slice;
- typedef basic_range<> range;
- typedef basic_slice<> slice;
- template<class A = unbounded_array<std::size_t> >
- class indirect_array;
- template<class I, class T, class ALLOC = std::allocator<std::pair<const I, T> > >
- class map_std;
- template<class I, class T, class ALLOC = std::allocator<std::pair<I, T> > >
- class map_array;
- // Expression types
- struct scalar_tag {};
-
- struct vector_tag {};
- template<class E>
- class vector_expression;
- template<class C>
- class vector_container;
- template<class E>
- class vector_reference;
- struct matrix_tag {};
- template<class E>
- class matrix_expression;
- template<class C>
- class matrix_container;
- template<class E>
- class matrix_reference;
- template<class V>
- class vector_range;
- template<class V>
- class vector_slice;
- template<class V, class IA = indirect_array<> >
- class vector_indirect;
- template<class M>
- class matrix_row;
- template<class M>
- class matrix_column;
- template<class M>
- class matrix_vector_range;
- template<class M>
- class matrix_vector_slice;
- template<class M, class IA = indirect_array<> >
- class matrix_vector_indirect;
- template<class M>
- class matrix_range;
- template<class M>
- class matrix_slice;
- template<class M, class IA = indirect_array<> >
- class matrix_indirect;
- template<class T, class A = unbounded_array<T> >
- class vector;
- #ifdef BOOST_UBLAS_CPP_GE_2011
- template<class T, std::size_t N, class A = std::array<T, N> >
- class fixed_vector;
- #endif
- template<class T, std::size_t N>
- class bounded_vector;
- template<class T = int, class ALLOC = std::allocator<T> >
- class unit_vector;
- template<class T = int, class ALLOC = std::allocator<T> >
- class zero_vector;
- template<class T = int, class ALLOC = std::allocator<T> >
- class scalar_vector;
- template<class T, std::size_t N>
- class c_vector;
- // Sparse vectors
- template<class T, class A = map_std<std::size_t, T> >
- class mapped_vector;
- template<class T, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
- class compressed_vector;
- template<class T, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
- class coordinate_vector;
- // Matrix orientation type
- struct unknown_orientation_tag {};
- struct row_major_tag {};
- struct column_major_tag {};
- // Matrix storage layout parameterisation
- template <class Z = std::size_t, class D = std::ptrdiff_t>
- struct basic_row_major;
- typedef basic_row_major<> row_major;
- template <class Z = std::size_t, class D = std::ptrdiff_t>
- struct basic_column_major;
- typedef basic_column_major<> column_major;
- template<class T, class L = row_major, class A = unbounded_array<T> >
- class matrix;
- #ifdef BOOST_UBLAS_CPP_GE_2011
- template<class T, std::size_t M, std::size_t N, class L = row_major, class A = std::array<T, M*N> >
- class fixed_matrix;
- #endif
- template<class T, std::size_t M, std::size_t N, class L = row_major>
- class bounded_matrix;
- template<class T = int, class ALLOC = std::allocator<T> >
- class identity_matrix;
- template<class T = int, class ALLOC = std::allocator<T> >
- class zero_matrix;
- template<class T = int, class ALLOC = std::allocator<T> >
- class scalar_matrix;
- template<class T, std::size_t M, std::size_t N>
- class c_matrix;
- template<class T, class L = row_major, class A = unbounded_array<unbounded_array<T> > >
- class vector_of_vector;
- template<class T, class L = row_major, class A = vector<compressed_vector<T> > >
- class generalized_vector_of_vector;
- // Triangular matrix type
- struct lower_tag {};
- struct upper_tag {};
- struct unit_lower_tag : public lower_tag {};
- struct unit_upper_tag : public upper_tag {};
- struct strict_lower_tag : public lower_tag {};
- struct strict_upper_tag : public upper_tag {};
- // Triangular matrix parameterisation
- template <class Z = std::size_t>
- struct basic_full;
- typedef basic_full<> full;
- template <class Z = std::size_t>
- struct basic_lower;
- typedef basic_lower<> lower;
- template <class Z = std::size_t>
- struct basic_upper;
- typedef basic_upper<> upper;
- template <class Z = std::size_t>
- struct basic_unit_lower;
- typedef basic_unit_lower<> unit_lower;
- template <class Z = std::size_t>
- struct basic_unit_upper;
- typedef basic_unit_upper<> unit_upper;
- template <class Z = std::size_t>
- struct basic_strict_lower;
- typedef basic_strict_lower<> strict_lower;
- template <class Z = std::size_t>
- struct basic_strict_upper;
- typedef basic_strict_upper<> strict_upper;
- // Special matrices
- template<class T, class L = row_major, class A = unbounded_array<T> >
- class banded_matrix;
- template<class T, class L = row_major, class A = unbounded_array<T> >
- class diagonal_matrix;
- template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
- class triangular_matrix;
- template<class M, class TRI = lower>
- class triangular_adaptor;
- template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
- class symmetric_matrix;
- template<class M, class TRI = lower>
- class symmetric_adaptor;
- template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
- class hermitian_matrix;
- template<class M, class TRI = lower>
- class hermitian_adaptor;
- // Sparse matrices
- template<class T, class L = row_major, class A = map_std<std::size_t, T> >
- class mapped_matrix;
- template<class T, class L = row_major, class A = map_std<std::size_t, map_std<std::size_t, T> > >
- class mapped_vector_of_mapped_vector;
- template<class T, class L = row_major, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
- class compressed_matrix;
- template<class T, class L = row_major, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
- class coordinate_matrix;
- }}}
- #endif
|