SheafSystem  0.0.0.0
offset_index_space_handle.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 OFFSET_INDEX_SPACE_HANDLE_H
22 #define OFFSET_INDEX_SPACE_HANDLE_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef EXPLICIT_INDEX_SPACE_HANDLE_H
29 #include "SheafSystem/explicit_index_space_handle.h"
30 #endif
31 
32 namespace sheaf
33 {
34 
35 class offset_index_space_state;
36 
42 {
43 
44  friend class offset_index_space_state;
45 
46  // ===========================================================
48  // ===========================================================
50 
51 public:
52 
58  static offset_index_space_handle new_space(index_space_family& xid_spaces,
59  const std::string& xname,
60  pod_type xoffset,
61  size_type xct);
62 
63 protected:
64 
65 private:
66 
68 
69 
70  // ===========================================================
72  // ===========================================================
74 
75 public:
76 
81 
86 
91  pod_type xindex);
92 
97  const std::string& xname);
98 
103  offset_index_space_handle& operator=(const offset_index_space_handle& xother);
104 
108  virtual ~offset_index_space_handle();
109 
110 protected:
111 
116 
118 
122  offset_index_space_state& state();
123 
127  const offset_index_space_state& state() const;
128 
129 private:
130 
132 
133 
134  // ===========================================================
136  // ===========================================================
138 
139 public:
140 
144  pod_type offset() const;
145 
146 protected:
147 
148 private:
149 
151 
152 
153  // ===========================================================
155  // ===========================================================
157 
158 public:
159 
160 protected:
161 
162 private:
163 
165 
166 
167  // ===========================================================
169  // ===========================================================
171 
172 public:
173 
178  virtual offset_index_space_handle& operator=(const index_space_handle& xother);
179 
184  virtual offset_index_space_handle* clone() const;
185 
186 protected:
187 
188 private:
189 
191 
192 
193  // ===========================================================
195  // ===========================================================
197 
198 public:
199 
201 
206  virtual bool conforms_to_state(const index_space_collection& xhost,
207  pod_type xlocal_id) const;
208 
209 protected:
210 
211 private:
212 
214 
215 
216  // ===========================================================
218  // ===========================================================
220 
221 public:
222 
226  virtual bool is_ancestor_of(const any *other) const;
227 
231  virtual bool invariant() const;
232 
233 protected:
234 
235 private:
236 
238 
239 };
240 
241 // ===========================================================
242 // NON-MEMBER FUNCTIONS
243 // ===========================================================
244 
245 } // end namespace sheaf
246 
247 #endif // ifndef OFFSET_INDEX_SPACE_HANDLE_H
An implementation of class explicit_index_space_handle that has a offset id space state...
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
explicit_index_space_state & state()
The explicit state (mutable version).
Abstract base class with useful features for all objects.
Definition: any.h:39
An implementation of class index_space_handle for an explicit_index_space_state.
pod_index_type pod_type
The "plain old data" index type for this.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
A computed implementation of abstract class explicit_index_space_state. This representation assumes t...
A collection of id space states. This is a virtual class with provides an interface for accessing the...
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...
Namespace for the sheaves component of the sheaf system.
Factory and container for a family of id spaces.