Rheolef  7.1
an efficient C++ finite element environment
vector_of_iterator.h
Go to the documentation of this file.
1 #ifndef _RHEO_VECTOR_OF_ITERATOR_H
2 #define _RHEO_VECTOR_OF_ITERATOR_H
3 //
24 // vector_of_iterator returns:
25 // iterator when begin()
26 // const_iterator when begin() const
27 // and so.
28 //
30 namespace rheolef {
31 
32 template<class T>
34 : public std::vector<T*>
35 {
36 public:
37  typedef std::vector<T*> V;
38  typedef std::vector<const T*> CONST_V;
39  typedef T* value_type;
40  typedef const T* const_value_type;
41  typedef value_type* iterator;
44  typedef const value_type& const_reference;
45 #ifdef TODO
46  // pointer do not have rbegin and rend with p++ that goes back...
47  typedef value_type* reverse_iterator;
48 #endif // TODO
49  typedef typename V::size_type size_type;
50  typedef typename V::difference_type difference_type;
51 #ifdef TODO
52  typedef typename CONST_V::const_reference const_reference;
53 #endif // TODO
54 
55  explicit vector_of_iterator (size_type n = 0, const value_type& value = value_type ());
56 
57 #ifdef TODO
59 #endif // TODO
60 
61  size_type size() const;
62  iterator begin();
63  const_iterator begin() const;
64  const_iterator end () const;
65  iterator end ();
68 #ifdef TODO
69  const_reverse_iterator rbegin() const;
70  reverse_iterator rbegin();
71  const_reverse_iterator rend() const;
72  reverse_iterator rend();
73 public:
74  const_reference at (size_type n) const;
75  reference at (size_type n);
76  const_reference front () const;
77  reference front ();
78  const_reference back () const;
79  reference back ();
80 #endif // TODO
81 };
82 template<class T>
83 inline
85  size_type n,
86  const value_type& value)
88 {
89 }
90 #ifdef TODO
91 template<class T>
92 inline
94  const_iterator first,
95  const_iterator last)
96  : std::vector<T*>(first,last)
97 {
98 }
99 #endif // TODO
100 template<class T>
101 inline
104 {
105  return std::vector<value_type>::size();
106 }
107 template<class T>
108 inline
111 {
112  return get_pointer_from_iterator(std::vector<value_type>::begin());
113 }
114 template<class T>
115 inline
118 {
119  return const_iterator(get_pointer_from_iterator(std::vector<value_type>::begin()));
120 }
121 template<class T>
122 inline
123 typename vector_of_iterator<T>::iterator
125 {
126  return begin()+size();
127 }
128 template<class T>
129 inline
132 {
133  return begin()+size();
134 }
135 #ifdef TODO
136 template<class T>
137 inline
138 typename vector_of_iterator<T>::reverse_iterator
139 vector_of_iterator<T>::rbegin()
140 {
141  return get_pointer_from_iterator(std::vector<T>::rbegin());
142 }
143 template<class T>
144 inline
145 typename vector_of_iterator<T>::const_reverse_iterator
146 vector_of_iterator<T>::rbegin() const
147 {
148  return get_pointer_from_iterator(std::vector<T>::rbegin());
149 }
150 template<class T>
151 inline
152 typename vector_of_iterator<T>::reverse_iterator
153 vector_of_iterator<T>::rend()
154 {
155  return get_pointer_from_iterator(std::vector<T>::rend());
156 }
157 template<class T>
158 inline
159 typename vector_of_iterator<T>::const_reverse_iterator
160 vector_of_iterator<T>::rend() const
161 {
162  return get_pointer_from_iterator(std::vector<T>::rend());
163 }
164 #endif // TODO
165 
166 template<class T>
167 inline
168 typename vector_of_iterator<T>::const_reference
170 {
171  return *(begin()+i);
172 }
173 template<class T>
174 inline
177 {
178  return *(begin()+i);
179 }
180 #ifdef TODO
181 template<class T>
182 inline
185 {
186  return const_reference(std::vector<value_type>::operator[] (n));
187 }
188 template<class T>
189 inline
190 typename vector_of_iterator<T>::reference
191 vector_of_iterator<T>::at (size_type n)
192 {
193  return const_reference(std::vector<value_type>::operator[] (n));
194 }
195 template<class T>
196 inline
197 typename vector_of_iterator<T>::const_reference
198 vector_of_iterator<T>::front () const
199 {
200  return const_reference(std::vector<value_type>::front());
201 }
202 template<class T>
203 inline
204 typename vector_of_iterator<T>::reference
205 vector_of_iterator<T>::front ()
206 {
207  return const_reference(std::vector<value_type>::front());
208 }
209 template<class T>
210 inline
211 typename vector_of_iterator<T>::const_reference
212 vector_of_iterator<T>::back () const
213 {
214  return const_reference(std::vector<value_type>::back());
215 }
216 template<class T>
217 inline
218 typename vector_of_iterator<T>::reference
219 vector_of_iterator<T>::back ()
220 {
221  return const_reference(std::vector<value_type>::back());
222 }
223 #endif // TODO
224 } // namespace rheolef
225 #endif // _RHEO_VECTOR_OF_ITERATOR_H
get_pointer_from_iterator.h
rheolef::vector_of_iterator::size
size_type size() const
Definition: vector_of_iterator.h:103
rheolef::vector_of_iterator::size_type
V::size_type size_type
Definition: vector_of_iterator.h:49
rheolef::value
rheolef::std value
rheolef::vector_of_iterator::vector_of_iterator
vector_of_iterator(size_type n=0, const value_type &value=value_type())
Definition: vector_of_iterator.h:84
rheolef::vector_of_iterator::reference
value_type & reference
Definition: vector_of_iterator.h:43
rheolef::vector_of_iterator::CONST_V
std::vector< const T * > CONST_V
Definition: vector_of_iterator.h:38
rheolef::vector_of_iterator::const_iterator
const_value_type *const const_iterator
Definition: vector_of_iterator.h:42
rheolef::vector_of_iterator::const_reference
const typedef value_type & const_reference
Definition: vector_of_iterator.h:44
rheolef::vector_of_iterator::difference_type
V::difference_type difference_type
Definition: vector_of_iterator.h:50
rheolef::vector_of_iterator
Definition: vector_of_iterator.h:33
rheolef::value_type
result_type value_type
Definition: field_expr_recursive.h:499
rheolef::vector_of_iterator::end
const_iterator end() const
Definition: vector_of_iterator.h:124
rheolef::vector_of_iterator::begin
iterator begin()
Definition: vector_of_iterator.h:110
rheolef::get_pointer_from_iterator
std::iterator_traits< Iterator >::pointer get_pointer_from_iterator(Iterator iter)
Definition: get_pointer_from_iterator.h:26
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
rheolef::vector_of_iterator::const_value_type
const typedef T * const_value_type
Definition: vector_of_iterator.h:40
rheolef::const_iterator
Definition: field_expr_recursive.h:552
rheolef::vector_of_iterator::iterator
value_type * iterator
Definition: vector_of_iterator.h:41
rheolef::space_constant::vector
@ vector
Definition: space_constant.h:137
mkgeo_ball.n
n
Definition: mkgeo_ball.sh:150
rheolef::vector_of_iterator::operator[]
const_reference operator[](size_type i) const
Definition: vector_of_iterator.h:169
size_type
field::size_type size_type
Definition: branch.cc:425
rheolef::vector_of_iterator::value_type
T * value_type
Definition: vector_of_iterator.h:39
rheolef::vector_of_iterator::V
std::vector< T * > V
Definition: vector_of_iterator.h:37
rheolef::std
Definition: vec_expr_v2.h:391
T
Expr1::float_type T
Definition: field_expr.h:218