SheafSystem  0.0.0.0
ijk_adjacency_implicit_index_space_iterator.h
Go to the documentation of this file.
1 
2 //
3 // Copyright (c) 2014 Limit Point Systems, Inc.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 
20 
21 #ifndef IJK_ADJACENCY_IMPLICIT_INDEX_SPACE_ITERATOR_H
22 #define IJK_ADJACENCY_IMPLICIT_INDEX_SPACE_ITERATOR_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef AUTO_BLOCK_H
29 #include "SheafSystem/auto_block.h"
30 #endif
31 
32 #ifndef IMPLICIT_INDEX_SPACE_ITERATOR_H
33 #include "SheafSystem/implicit_index_space_iterator.h"
34 #endif
35 
36 namespace fiber_bundle
37 {
38 
39 using namespace sheaf;
40 
46 {
47 
48  friend class ijk_adjacency_implicit_index_space_interval;
49 
50  // ===========================================================
52  // ===========================================================
54 
55 public:
56 
61 
66 
71  pod_type xindex);
72 
77  const std::string& xname);
78 
83 
88 
92  pod_type hub_begin() const;
93 
97  size_type j_size() const;
98 
102  size_type k_size() const;
103 
107  size_type i_ct() const;
108 
112  size_type j_ct() const;
113 
117  size_type k_ct() const;
118 
119 protected:
120 
125 
130 
135 
140 
145 
150 
155 
160 
165 
166 private:
167 
169 
170 
171  // ===========================================================
173  // ===========================================================
175 
176 public:
177 
178 protected:
179 
180 private:
181 
183 
184 
185  // ===========================================================
187  // ===========================================================
188 
189 public:
190 
194  virtual ijk_adjacency_implicit_index_space_iterator& operator=(const index_space_iterator& xother);
195 
199  virtual bool operator==(const index_space_iterator& xother) const;
200 
205  virtual ijk_adjacency_implicit_index_space_iterator* clone() const;
206 
207 protected:
208 
209 private:
210 
212 
213 
214  // ===========================================================
216  // ===========================================================
218 
219 public:
220 
224  virtual void next();
225 
229  virtual void reset();
230 
231 protected:
232 
233 private:
234 
236 
237 
238  // ===========================================================
240  // ===========================================================
242 
243 public:
244 
246 
251  virtual void attach_to(const index_space_collection& xhost,
252  pod_type xlocal_id);
253 
255 
260  virtual bool conforms_to_state(const index_space_collection& xhost,
261  pod_type xlocal_id) const;
262 
263 protected:
264 
265 private:
266 
268 
269 
270  // ===========================================================
272  // ===========================================================
274 
275 public:
276 
280  virtual bool is_ancestor_of(const any *other) const;
281 
285  virtual bool invariant() const;
286 
287 protected:
288 
289 private:
290 
292 
293 };
294 
295 // ===========================================================
296 // NON-MEMBER FUNCTIONS
297 // ===========================================================
298 
299 
300 } // namespace fiber_bundle
301 
302 #endif // ifndef IJK_ADJACENCY_IMPLICIT_INDEX_SPACE_ITERATOR_H
An abstract iterator over the ids of an id space.
An implementation of implicit_index_space_iterator for an implicit id space in an ijk_adjacency_index...
Abstract base class with useful features for all objects.
Definition: any.h:39
size_type _i_ct
The number of adjacent zones in the i direction.
size_type _k_ct
The number of adjacent zones in the k direction.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
size_type _j_ct
The number of adjacent zones in the j direction.
An implementation of class index_space_iterator for id spaces that are implicitly represtented...
virtual void attach_to(pod_type xindex)
Attach to the state with index xindex in the id space family id_spaces().
A collection of id space states. This is a virtual class with provides an interface for accessing the...
pod_type _hub_begin
The hub id of the first zone in the adjacency list.
bool operator==(const singly_linked_list< T, Alloc > &lhs, const singly_linked_list< T, Alloc > &rhs)
Checks if the contents of lhs and rhs are equal, that is, whether lhs.size() == rhs.size() and each element in lhs compares equal with the element in rhs at the same position.
Namespace for the sheaves component of the sheaf system.
Factory and container for a family of id spaces.
pod_index_type pod_type
The "plain old data" index type for this.
Namespace for the fiber_bundles component of the sheaf system.
bool conforms_to_state(const index_space_family &xid_spaces, pod_type xindex) const
True if this conforms to the handle type required by the state with index xindex in the id space fami...