os/ossrv/ossrv_pub/boost_apis/boost/numeric/ublas/fwd.hpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 //
     2 //  Copyright (c) 2000-2002
     3 //  Joerg Walter, Mathias Koch
     4 //
     5 //  Permission to use, copy, modify, distribute and sell this software
     6 //  and its documentation for any purpose is hereby granted without fee,
     7 //  provided that the above copyright notice appear in all copies and
     8 //  that both that copyright notice and this permission notice appear
     9 //  in supporting documentation.  The authors make no representations
    10 //  about the suitability of this software for any purpose.
    11 //  It is provided "as is" without express or implied warranty.
    12 //
    13 //  The authors gratefully acknowledge the support of
    14 //  GeNeSys mbH & Co. KG in producing this work.
    15 //
    16 
    17 #ifndef BOOST_UBLAS_FWD_H
    18 #define BOOST_UBLAS_FWD_H
    19 
    20 #include <memory>
    21 
    22 namespace boost { namespace numeric { namespace ublas {
    23 
    24     // Storage types
    25     template<class T, class ALLOC = std::allocator<T> >
    26     class unbounded_array;
    27 
    28     template<class T, std::size_t N, class ALLOC = std::allocator<T> >
    29     class bounded_array;
    30 
    31     template <class Z = std::size_t, class D = std::ptrdiff_t>
    32     class basic_range;
    33     template <class Z = std::size_t, class D = std::ptrdiff_t>
    34     class basic_slice;
    35     typedef basic_range<> range;
    36     typedef basic_slice<> slice;
    37     template<class A = unbounded_array<std::size_t> >
    38     class indirect_array;
    39 
    40     template<class I, class T, class ALLOC = std::allocator<std::pair<const I, T> > >
    41     class map_std;
    42     template<class I, class T, class ALLOC = std::allocator<std::pair<I, T> > >
    43     class map_array;
    44 
    45     // Expression types
    46     struct scalar_tag {};
    47     
    48     struct vector_tag {};
    49     template<class E>
    50     class vector_expression;
    51     template<class C>
    52     class vector_container;
    53 
    54     template<class E>
    55     class vector_reference;
    56 
    57     struct matrix_tag {};
    58 
    59     template<class E>
    60     class matrix_expression;
    61     template<class C>
    62     class matrix_container;
    63 
    64     template<class E>
    65     class matrix_reference;
    66 
    67     template<class V>
    68     class vector_range;
    69     template<class V>
    70     class vector_slice;
    71     template<class V, class IA = indirect_array<> >
    72     class vector_indirect;
    73 
    74     template<class M>
    75     class matrix_row;
    76     template<class M>
    77     class matrix_column;
    78     template<class M>
    79     class matrix_vector_range;
    80     template<class M>
    81     class matrix_vector_slice;
    82     template<class M, class IA = indirect_array<> >
    83     class matrix_vector_indirect;
    84     template<class M>
    85     class matrix_range;
    86     template<class M>
    87     class matrix_slice;
    88     template<class M, class IA = indirect_array<> >
    89     class matrix_indirect;
    90 
    91     template<class T, class A = unbounded_array<T> >
    92     class vector;
    93     template<class T, std::size_t N>
    94     class bounded_vector;
    95 
    96     template<class T = int>
    97     class unit_vector;
    98     template<class T = int>
    99     class zero_vector;
   100     template<class T = int>
   101     class scalar_vector;
   102 
   103     template<class T, std::size_t N>
   104     class c_vector;
   105 
   106     // Sparse vectors
   107     template<class T, class A = map_std<std::size_t, T> >
   108     class mapped_vector;
   109     template<class T, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
   110     class compressed_vector;
   111     template<class T, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
   112     class coordinate_vector;
   113 
   114     // Matrix orientation type
   115     struct unknown_orientation_tag {};
   116     struct row_major_tag {};
   117     struct column_major_tag {};
   118 
   119     // Matrix storage layout parameterisation
   120     template <class Z = std::size_t, class D = std::ptrdiff_t>
   121     struct basic_row_major;
   122     typedef basic_row_major<> row_major;
   123 
   124     template <class Z = std::size_t, class D = std::ptrdiff_t>
   125     struct basic_column_major;
   126     typedef basic_column_major<> column_major;
   127 
   128     template<class T, class L = row_major, class A = unbounded_array<T> >
   129     class matrix;
   130     template<class T, std::size_t M, std::size_t N, class L = row_major>
   131     class bounded_matrix;
   132 
   133     template<class T = int>
   134     class identity_matrix;
   135     template<class T = int>
   136     class zero_matrix;
   137     template<class T = int>
   138     class scalar_matrix;
   139 
   140     template<class T, std::size_t M, std::size_t N>
   141     class c_matrix;
   142 
   143     template<class T, class L = row_major, class A = unbounded_array<unbounded_array<T> > >
   144     class vector_of_vector;
   145 
   146     // Triangular matrix type
   147     struct lower_tag {};
   148     struct upper_tag {};
   149     struct unit_lower_tag : public lower_tag {};
   150     struct unit_upper_tag : public upper_tag {};
   151     struct strict_lower_tag : public lower_tag {};
   152     struct strict_upper_tag : public upper_tag {};
   153 
   154     // Triangular matrix parameterisation
   155     template <class Z = std::size_t>
   156     struct basic_full;
   157     typedef basic_full<> full;
   158 
   159     template <class Z = std::size_t>
   160     struct basic_lower;
   161     typedef basic_lower<> lower;
   162 
   163     template <class Z = std::size_t>
   164     struct basic_upper;
   165     typedef basic_upper<> upper;
   166 
   167     template <class Z = std::size_t>
   168     struct basic_unit_lower;
   169     typedef basic_unit_lower<> unit_lower;
   170 
   171     template <class Z = std::size_t>
   172     struct basic_unit_upper;
   173     typedef basic_unit_upper<> unit_upper;
   174 
   175     template <class Z = std::size_t>
   176     struct basic_strict_lower;
   177     typedef basic_strict_lower<> strict_lower;
   178 
   179     template <class Z = std::size_t>
   180     struct basic_strict_upper;
   181     typedef basic_strict_upper<> strict_upper;
   182 
   183     // Special matrices
   184     template<class T, class L = row_major, class A = unbounded_array<T> >
   185     class banded_matrix;
   186     template<class T, class L = row_major, class A = unbounded_array<T> >
   187     class diagonal_matrix;
   188 
   189     template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
   190     class triangular_matrix;
   191     template<class M, class TRI = lower>
   192     class triangular_adaptor;
   193 
   194     template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
   195     class symmetric_matrix;
   196     template<class M, class TRI = lower>
   197     class symmetric_adaptor;
   198 
   199     template<class T, class TRI = lower, class L = row_major, class A = unbounded_array<T> >
   200     class hermitian_matrix;
   201     template<class M, class TRI = lower>
   202     class hermitian_adaptor;
   203 
   204     // Sparse matrices
   205     template<class T, class L = row_major, class A = map_std<std::size_t, T> >
   206     class mapped_matrix;
   207     template<class T, class L = row_major, class A = map_std<std::size_t, map_std<std::size_t, T> > >
   208     class mapped_vector_of_mapped_vector;
   209     template<class T, class L = row_major, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
   210     class compressed_matrix;
   211     template<class T, class L = row_major, std::size_t IB = 0, class IA = unbounded_array<std::size_t>, class TA = unbounded_array<T> >
   212     class coordinate_matrix;
   213 
   214 }}}
   215 
   216 #endif