SheafSystem  0.0.0.0
singleton_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 SINGLETON_INDEX_SPACE_ITERATOR_H
22 #define SINGLETON_INDEX_SPACE_ITERATOR_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef EXPLICIT_INDEX_SPACE_ITERATOR_H
29 #include "SheafSystem/explicit_index_space_iterator.h"
30 #endif
31 
32 namespace sheaf
33 {
34 
39 {
40 
41  friend class singleton_index_space_state;
42 
43  // ===========================================================
45  // ===========================================================
47 
48 public:
49 
54 
59 
64  pod_type xindex);
65 
70  const std::string& xname);
71 
76 
81 
85  pod_type hub_begin() const;
86 
87 protected:
88 
93 
94 private:
95 
97 
98 
99  // ===========================================================
101  // ===========================================================
103 
104 public:
105 
106 protected:
107 
108 private:
109 
111 
112 
113  // ===========================================================
115  // ===========================================================
116 
117 public:
118 
122  virtual singleton_index_space_iterator& operator=(const index_space_iterator& xother);
123 
127  virtual bool operator==(const index_space_iterator& xother) const;
128 
133  virtual singleton_index_space_iterator* clone() const;
134 
135 protected:
136 
137 private:
138 
140 
141 
142  // ===========================================================
144  // ===========================================================
146 
147 public:
148 
152  virtual void next();
153 
157  virtual void reset();
158 
159 protected:
160 
161 private:
162 
164 
165 
166  // ===========================================================
168  // ===========================================================
170 
171 public:
172 
174 
176 
177 protected:
178 
183  virtual void attach_to(explicit_index_space_state* xstate);
184 
189  virtual bool conforms_to_state(explicit_index_space_state* xstate) const;
190 
191 private:
192 
194 
195 
196  // ===========================================================
198  // ===========================================================
200 
201 public:
202 
206  virtual bool is_ancestor_of(const any *other) const;
207 
211  virtual bool invariant() const ;
212 
213 protected:
214 
215 private:
216 
218 
219 };
220 
221 // ===========================================================
222 // NON-MEMBER FUNCTIONS
223 // ===========================================================
224 
225 } // namespace sheaf
226 
227 #endif // ifndef SINGLETON_INDEX_SPACE_ITERATOR_H
An iterator over an id space in which contains only one id.
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.
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...
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...
pod_type _hub_begin
The hub id of the singleton id.
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.
Namespace for the sheaves component of the sheaf system.
An implementation of explicit_index_space_state for an id space containing a single id...
Factory and container for a family of id spaces.
pod_index_type pod_type
The "plain old data" index type for this.