// // 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 namespace boost { namespace numeric { namespace ublas { // Storage types template > class unbounded_array; template > class bounded_array; template class basic_range; template class basic_slice; typedef basic_range<> range; typedef basic_slice<> slice; template > class indirect_array; template > > class map_std; template > > class map_array; // Expression types struct scalar_tag {}; struct vector_tag {}; template class vector_expression; template class vector_container; template class vector_reference; struct matrix_tag {}; template class matrix_expression; template class matrix_container; template class matrix_reference; template class vector_range; template class vector_slice; template > class vector_indirect; template class matrix_row; template class matrix_column; template class matrix_vector_range; template class matrix_vector_slice; template > class matrix_vector_indirect; template class matrix_range; template class matrix_slice; template > class matrix_indirect; template > class vector; template class bounded_vector; template > class unit_vector; template > class zero_vector; template > class scalar_vector; template class c_vector; // Sparse vectors template > class mapped_vector; template, class TA = unbounded_array > class compressed_vector; template, class TA = unbounded_array > class coordinate_vector; // Matrix orientation type struct unknown_orientation_tag {}; struct row_major_tag {}; struct column_major_tag {}; // Matrix storage layout parameterisation template struct basic_row_major; typedef basic_row_major<> row_major; template struct basic_column_major; typedef basic_column_major<> column_major; template > class matrix; template class bounded_matrix; template > class identity_matrix; template > class zero_matrix; template > class scalar_matrix; template class c_matrix; template > > class vector_of_vector; template > > 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 struct basic_full; typedef basic_full<> full; template struct basic_lower; typedef basic_lower<> lower; template struct basic_upper; typedef basic_upper<> upper; template struct basic_unit_lower; typedef basic_unit_lower<> unit_lower; template struct basic_unit_upper; typedef basic_unit_upper<> unit_upper; template struct basic_strict_lower; typedef basic_strict_lower<> strict_lower; template struct basic_strict_upper; typedef basic_strict_upper<> strict_upper; // Special matrices template > class banded_matrix; template > class diagonal_matrix; template > class triangular_matrix; template class triangular_adaptor; template > class symmetric_matrix; template class symmetric_adaptor; template > class hermitian_matrix; template class hermitian_adaptor; // Sparse matrices template > class mapped_matrix; template > > class mapped_vector_of_mapped_vector; template, class TA = unbounded_array > class compressed_matrix; template, class TA = unbounded_array > class coordinate_matrix; }}} #endif