Rheolef  7.2
an efficient C++ finite element environment
 
Loading...
Searching...
No Matches
vec_range.h
Go to the documentation of this file.
1#ifndef _RHEO_VEC_RANGE_H
2#define _RHEO_VEC_RANGE_H
23// example :
24// x[range(0,n)] = y;
25// x = y[range(0,m)];
26
27# include "rheolef/vec.h"
28
29namespace rheolef {
30
31template <class T, class M = rheo_default_memory_model>
32class vec_range {
33public:
34
35// typedef:
36
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
57protected:
58 friend class vec<T,M>;
59 friend class vec_range_const<T,M>;
60// data:
63};
64template <class T, class M = rheo_default_memory_model>
66public:
67
68// typedef:
69
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
88protected:
89 friend class vec<T,M>;
90// data:
93};
94
95} // namespace rheolef
96#endif // _RHEO_VEC_RANGE_H
vec< T, M >::difference_type difference_type
Definition vec_range.h:71
const_iterator begin() const
Definition vec_range.h:85
vec< T, M >::size_type size_type
Definition vec_range.h:70
size_type size() const
Definition vec_range.h:84
vec_range_const(const vec_range_const< T, M > &ur)
Definition vec_range.h:79
vec_range_const(const vec< T, M > &u, const range_type &r)
Definition vec_range.h:78
vec< T, M >::const_iterator const_iterator
Definition vec_range.h:74
const_iterator end() const
Definition vec_range.h:86
vec_range_const(const vec_range< T, M > &ur)
Definition vec_range.h:80
vec< T, M >::difference_type difference_type
Definition vec_range.h:38
vec< T, M > _u
Definition vec_range.h:61
const_iterator begin() const
Definition vec_range.h:54
vec< T, M >::size_type size_type
Definition vec_range.h:37
size_type size() const
Definition vec_range.h:51
vec< T, M >::iterator iterator
Definition vec_range.h:41
vec< T, M >::const_iterator const_iterator
Definition vec_range.h:42
iterator end()
Definition vec_range.h:53
const_iterator end() const
Definition vec_range.h:55
vec_range(const vec< T, M > &u, const range_type &r)
Definition vec_range.h:46
iterator begin()
Definition vec_range.h:52
vec_range(const vec_range_const< T, M > &ur)
Definition vec_range.h:47
see the vec page for the full documentation
Definition vec.h:79
base::iterator iterator
Definition vec.h:91
base::size_type size_type
Definition vec.h:86
base::const_iterator const_iterator
Definition vec.h:92
std::ptrdiff_t difference_type
Definition vec.h:87
Expr1::float_type T
Definition field_expr.h:230
This file is part of Rheolef.
see the range page for the full documentation
Definition range.h:61
size_type start() const
Definition range.h:85
size_type size() const
Definition range.h:86
Definition leveque.h:25
Expr1::memory_type M