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