SheafSystem  0.0.0.0
ij_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 IJ_ADJACENCY_IMPLICIT_INDEX_SPACE_ITERATOR_H
22 #define IJ_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 ij_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 i_ct() const;
103 
107  size_type j_ct() const;
108 
109 protected:
110 
115 
120 
125 
130 
135 
140 
141 private:
142 
144 
145 
146  // ===========================================================
148  // ===========================================================
150 
151 public:
152 
153 protected:
154 
155 private:
156 
158 
159 
160  // ===========================================================
162  // ===========================================================
163 
164 public:
165 
169  virtual ij_adjacency_implicit_index_space_iterator& operator=(const index_space_iterator& xother);
170 
174  virtual bool operator==(const index_space_iterator& xother) const;
175 
180  virtual ij_adjacency_implicit_index_space_iterator* clone() const;
181 
182 protected:
183 
184 private:
185 
187 
188 
189  // ===========================================================
191  // ===========================================================
193 
194 public:
195 
199  virtual void next();
200 
204  virtual void reset();
205 
206 protected:
207 
208 private:
209 
211 
212 
213  // ===========================================================
215  // ===========================================================
217 
218 public:
219 
221 
226  virtual void attach_to(const index_space_collection& xhost,
227  pod_type xlocal_id);
228 
230 
235  virtual bool conforms_to_state(const index_space_collection& xhost,
236  pod_type xlocal_id) const;
237 
238 protected:
239 
240 private:
241 
243 
244 
245  // ===========================================================
247  // ===========================================================
249 
250 public:
251 
255  virtual bool is_ancestor_of(const any *other) const;
256 
260  virtual bool invariant() const;
261 
262 protected:
263 
264 private:
265 
267 
268 };
269 
270 // ===========================================================
271 // NON-MEMBER FUNCTIONS
272 // ===========================================================
273 
274 
275 } // namespace fiber_bundle
276 
277 #endif // ifndef IJ_ADJACENCY_IMPLICIT_INDEX_SPACE_ITERATOR_H
pod_type _hub_begin
The hub id of the first zone in the adjacency list.
An abstract iterator over the ids of an id space.
Abstract base class with useful features for all objects.
Definition: any.h:39
An implementation of implicit_index_space_iterator for an implicit id space in an ij_adjacency_index_...
size_type _i_ct
The number of adjacent zones in the i direction.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
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...
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.
size_type _j_ct
The number of adjacent zones in the j direction.
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...