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