Rheolef  7.1
an efficient C++ finite element environment
vec_range.h
Go to the documentation of this file.
1 #ifndef _RHEO_VEC_RANGE_H
2 #define _RHEO_VEC_RANGE_H
3 // example :
24 // x[range(0,n)] = y;
25 // x = y[range(0,m)];
26 
27 # include "rheolef/vec.h"
28 
29 namespace rheolef {
30 
31 template <class T, class M = rheo_default_memory_model>
32 class vec_range {
33 public:
34 
35 // typedef:
36 
37  typedef typename vec<T,M>::size_type size_type;
39  typedef range range_type;
40  typedef T value_type;
41  typedef typename vec<T,M>::iterator iterator;
43 
44 // allocator/deallocator:
45 
46  vec_range (const vec<T,M>& u, const range_type& r) : _u(u), _r(r) {}
47  vec_range (const vec_range_const<T,M>& ur) : _u(ur._u), _r(ur._r) {}
48 
49 // accessors:
50 
51  size_type size() const { return _r.size(); }
52  iterator begin() { return _u.begin() + _r.start(); }
53  iterator end() { return begin() + size(); }
54  const_iterator begin() const { return _u.begin() + _r.start(); }
55  const_iterator end() const { return begin() + size(); }
56 
57 protected:
58  friend class vec<T,M>;
59  friend class vec_range_const<T,M>;
60 // data:
63 };
64 template <class T, class M = rheo_default_memory_model>
66 public:
67 
68 // typedef:
69 
70  typedef typename vec<T,M>::size_type size_type;
72  typedef range range_type;
73  typedef T value_type;
75 
76 // allocator/deallocator:
77 
78  vec_range_const (const vec<T,M>& u, const range_type& r) : _u(u), _r(r) {}
79  vec_range_const (const vec_range_const<T,M>& ur) : _u(ur._u), _r(ur._r) {}
80  vec_range_const (const vec_range<T,M>& ur) : _u(ur._u), _r(ur._r) {}
81 
82 // accessors:
83 
84  size_type size() const { return _r.size(); }
85  const_iterator begin() const { return _u.begin() + _r.start(); }
86  const_iterator end() const { return begin() + size(); }
87 
88 protected:
89  friend class vec<T,M>;
90 // data:
93 };
94 
95 } // namespace rheolef
96 #endif // _RHEO_VEC_RANGE_H
rheolef::vec_range_const::range_type
range range_type
Definition: vec_range.h:72
rheolef::vec_range::size
size_type size() const
Definition: vec_range.h:51
rheolef::vec_range::difference_type
vec< T, M >::difference_type difference_type
Definition: vec_range.h:38
rheolef::vec_range::vec_range
vec_range(const vec< T, M > &u, const range_type &r)
Definition: vec_range.h:46
rheolef::vec_range::_u
vec< T, M > _u
Definition: vec_range.h:61
rheolef::vec::const_iterator
base::const_iterator const_iterator
Definition: vec.h:92
rheolef::vec_range
Definition: vec_range.h:32
rheolef::range
see the range page for the full documentation
Definition: range.h:61
rheolef::vec_range::value_type
T value_type
Definition: vec_range.h:40
rheolef::vec_range_const::begin
const_iterator begin() const
Definition: vec_range.h:85
rheolef::vec
see the vec page for the full documentation
Definition: vec.h:79
rheolef::vec_range::iterator
vec< T, M >::iterator iterator
Definition: vec_range.h:41
rheolef::vec_range::begin
iterator begin()
Definition: vec_range.h:52
rheolef::range::size
size_type size() const
Definition: range.h:86
rheolef::vec_range_const::difference_type
vec< T, M >::difference_type difference_type
Definition: vec_range.h:71
rheolef::vec_range::end
iterator end()
Definition: vec_range.h:53
rheolef::vec::iterator
base::iterator iterator
Definition: vec.h:91
rheolef::vec_range::begin
const_iterator begin() const
Definition: vec_range.h:54
rheolef::vec_range_const::vec_range_const
vec_range_const(const vec_range< T, M > &ur)
Definition: vec_range.h:80
rheolef::vec_range_const::vec_range_const
vec_range_const(const vec_range_const< T, M > &ur)
Definition: vec_range.h:79
rheolef::range::start
size_type start() const
Definition: range.h:85
rheolef::vec_range_const::end
const_iterator end() const
Definition: vec_range.h:86
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
u
Definition: leveque.h:25
rheolef::vec_range_const::size
size_type size() const
Definition: vec_range.h:84
rheolef::vec::difference_type
std::ptrdiff_t difference_type
Definition: vec.h:87
rheolef::vec_range::vec_range
vec_range(const vec_range_const< T, M > &ur)
Definition: vec_range.h:47
rheolef::vec_range_const::vec_range_const
vec_range_const(const vec< T, M > &u, const range_type &r)
Definition: vec_range.h:78
rheolef::vec_range_const::_r
range _r
Definition: vec_range.h:92
rheolef::vec_range::const_iterator
vec< T, M >::const_iterator const_iterator
Definition: vec_range.h:42
rheolef::vec_range::size_type
vec< T, M >::size_type size_type
Definition: vec_range.h:37
rheolef::vec_range_const::value_type
T value_type
Definition: vec_range.h:73
rheolef::vec_range_const::size_type
vec< T, M >::size_type size_type
Definition: vec_range.h:70
rheolef::vec_range_const::_u
vec< T, M > _u
Definition: vec_range.h:91
rheolef::vec_range_const
Definition: vec_range.h:65
rheolef::vec_range::range_type
range range_type
Definition: vec_range.h:39
rheolef::vec_range_const::const_iterator
vec< T, M >::const_iterator const_iterator
Definition: vec_range.h:74
rheolef::vec::size_type
base::size_type size_type
Definition: vec.h:86
M
Expr1::memory_type M
Definition: vec_expr_v2.h:416
rheolef::vec_range::_r
range _r
Definition: vec_range.h:62
T
Expr1::float_type T
Definition: field_expr.h:261