SheafSystem  0.0.0.0
section_space_schema_jims_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 SECTION_SPACE_SCHEMA_JIMS_INDEX_SPACE_ITERATOR_H
22 #define SECTION_SPACE_SCHEMA_JIMS_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 EXPLICIT_INDEX_SPACE_ITERATOR_H
33 #include "SheafSystem/explicit_index_space_iterator.h"
34 #endif
35 
36 namespace sheaf
37 {
38 class ij_product_structure;
39 class array_index_space_state;
40 }
41 
42 namespace fiber_bundle
43 {
44 
45 class section_space_schema_jims_index_space_state;
46 
47 using namespace sheaf;
48 
54 {
55 
56  friend class array_index_space_state;
57 
58  // ===========================================================
60  // ===========================================================
62 
63 public:
64 
69 
74 
79  pod_type xindex);
80 
85  const std::string& xname);
86 
91 
96 
97 protected:
98 
102  index_space_iterator& base_space_iterator();
103 
107  index_space_iterator& fiber_schema_iterator();
108 
112  void update_ids();
113 
118 
123 
128 
133 
134 private:
135 
137 
138 
139  // ===========================================================
141  // ===========================================================
143 
144 public:
145 
146 protected:
147 
152 
156  const section_space_schema_jims_index_space_state& state() const;
157 
158 private:
159 
161 
162 
163  // ===========================================================
165  // ===========================================================
166 
167 public:
168 
173 
177  virtual bool operator==(const index_space_iterator& xother) const;
178 
183  virtual section_space_schema_jims_index_space_iterator* clone() const;
184 
185 protected:
186 
187 private:
188 
190 
191 
192  // ===========================================================
194  // ===========================================================
196 
197 public:
198 
202  virtual void next();
203 
207  virtual void reset();
208 
209 protected:
210 
211 private:
212 
214 
215 
216  // ===========================================================
218  // ===========================================================
220 
221 public:
222 
223 protected:
224 
226 
231  virtual void attach_to(explicit_index_space_state* xstate);
232 
236  virtual void detach();
237 
239 
244  virtual bool conforms_to_state(explicit_index_space_state* xstate) const;
245 
246 private:
247 
249 
250 
251  // ===========================================================
253  // ===========================================================
255 
256 public:
257 
261  virtual bool is_ancestor_of(const any *other) const;
262 
266  virtual bool invariant() const;
267 
268 protected:
269 
270 private:
271 
273 
274 };
275 
276 // ===========================================================
277 // NON-MEMBER FUNCTIONS
278 // ===========================================================
279 
280 
281 } // namespace sheaf
282 
283 #endif // ifndef SECTION_SPACE_SCHEMA_JIMS_INDEX_SPACE_ITERATOR_H
index_space_iterator * _fiber_schema_itr
The fiber schema jims id space iterator.
virtual void attach_to(pod_type xindex)
Attach to the state with index xindex in the id space family id_spaces().
An abstract iterator over the ids of an id space.
An array implementation of class scattered_insertion_index_space_state. This representation is intend...
ij_product_structure * _section_space_schema_jims_product
The product structure of the section space schema jims id space.
ij_product_structure * _section_space_schema_product
The product structure of the section space schema id space.
Abstract base class with useful features for all objects.
Definition: any.h:39
An immutable abstract state for a space of alternate integer identifiers (aliases) for a subset of th...
index_space_iterator * _base_space_itr
The base space jims id space iterator.
virtual bool conforms_to_state(const index_space_collection &xhost, pod_type xlocal_id) const
True if this conforms to the handle type required by the state with local scope id xlocal_id in the h...
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.
An implementation of class index_space_iterator for an explicit_index_space_state.
A 2D implementation of abstract_product_structure.
Namespace for the sheaves component of the sheaf system.
An implementation class explicit_index_space_state for the jims id space of the section space schema...
Factory and container for a family of id spaces.
An iterator over an id space in which the equivalence between the ids in the space and the hub id spa...
pod_index_type pod_type
The "plain old data" index type for this.
Namespace for the fiber_bundles component of the sheaf system.