dune-fem  2.8-git
rowreferencevector.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_STORAGE_ROWREFERENCEVECTOR_HH
2 #define DUNE_FEM_STORAGE_ROWREFERENCEVECTOR_HH
3 
4 #include <dune/common/densevector.hh>
5 
6 namespace Dune
7 {
8 
9  namespace Fem
10  {
11 
12  // Internal Forward Declarations
13  // -----------------------------
14 
15  template< class K >
16  class RowReferenceVector;
17 
18  } // namespace Fem
19 
20 
21 
22  // DenseMatVecTraits for RowReferenceVector
23  // ----------------------------------------
24 
25  template< class K >
26  struct DenseMatVecTraits< Fem::RowReferenceVector< K > >
27  {
29  typedef K value_type;
30  typedef std::size_t size_type;
31  };
32 
33 
34 
35  // FieldTraits for RowReferenceVector
36  // ----------------------------------
37 
38  template< class K >
39  struct FieldTraits< Fem::RowReferenceVector< K > >
40  {
41  typedef typename FieldTraits< K >::field_type field_type;
42  typedef typename FieldTraits< K >::real_type real_type;
43  };
44 
45 
46 
47  namespace Fem
48  {
49 
50  // RowReferenceVector
51  // ------------------
52 
53  template< class K >
55  : public Dune::DenseVector< RowReferenceVector< K > >
56  {
57  typedef Dune::DenseVector< RowReferenceVector< K > > Base;
58 
59  public:
60  typedef typename Base::size_type size_type;
61  typedef typename Base::value_type value_type;
62 
64  : data_( data ), size_( size )
65  {}
66 
68  : data_( other.data_ ), size_( other.size_ )
69  {}
70 
71  using Base::operator=;
72 
73  const K &operator[] ( size_type i ) const { return data_[ i ]; }
74  K &operator[] ( size_type i ) { return data_[ i ]; }
75 
76  size_type size () const { return size_; }
77 
78  const K *data () const { return data_; }
79  K *data () { return data_; }
80 
81  private:
82  K *data_;
83  size_type size_;
84  };
85 
86  } // namespace Fem
87 
88 } // namespace Dune
89 
90 #endif // #ifndef DUNE_FEM_STORAGE_ROWREFERENCEVECTOR_HH
Definition: bindguard.hh:11
Definition: rowreferencevector.hh:56
RowReferenceVector(K *data, size_type size)
Definition: rowreferencevector.hh:63
RowReferenceVector(const RowReferenceVector &other)
Definition: rowreferencevector.hh:67
const K & operator[](size_type i) const
Definition: rowreferencevector.hh:73
K * data()
Definition: rowreferencevector.hh:79
size_type size() const
Definition: rowreferencevector.hh:76
const K * data() const
Definition: rowreferencevector.hh:78
Base::size_type size_type
Definition: rowreferencevector.hh:60
Base::value_type value_type
Definition: rowreferencevector.hh:61
Fem::RowReferenceVector< K > derived_type
Definition: rowreferencevector.hh:28
K value_type
Definition: rowreferencevector.hh:29
std::size_t size_type
Definition: rowreferencevector.hh:30
FieldTraits< K >::field_type field_type
Definition: rowreferencevector.hh:41
FieldTraits< K >::real_type real_type
Definition: rowreferencevector.hh:42