SheafSystem  0.0.0.0
section_space_schema_jims_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 SECTION_SPACE_SCHEMA_JIMS_INDEX_SPACE_HANDLE_H
22 #define SECTION_SPACE_SCHEMA_JIMS_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 class ij_product_structure;
35 }
36 
37 namespace fiber_bundle
38 {
39 
40 using namespace sheaf;
41 
42 class section_space_schema_jims_index_space_state;
43 
49 {
50 
52 
53  // ===========================================================
55  // ===========================================================
57 
58 public:
59 
67  static
69  new_space(index_space_family& xid_spaces,
70  const std::string& xname,
71  const index_space_handle& xbase_space_id_space,
72  const index_space_handle& xfiber_schema_id_space,
73  const ij_product_structure& xsection_space_schema_product);
74 
75 protected:
76 
77 private:
78 
80 
81 
82  // ===========================================================
84  // ===========================================================
86 
87 public:
88 
93 
98 
103  pod_type xindex);
104 
109  const std::string& xname);
110 
116 
121 
122 protected:
123 
128 
130 
135 
139  const section_space_schema_jims_index_space_state& state() const;
140 
141 private:
142 
144 
145 
146  // ===========================================================
148  // ===========================================================
150 
151 public:
152 
156  void put_factors(const index_space_handle& xbase_space_id_space,
157  const index_space_handle& xfiber_schema_id_space,
158  const ij_product_structure& xsection_space_schema_product);
159 
163  const index_space_handle& base_space() const;
164 
168  const index_space_handle& fiber_schema() const;
169 
173  const ij_product_structure& section_space_schema_product_structure() const;
174 
179  bool is_consistent() const;
180 
185  void update();
186 
187 protected:
188 
189 private:
190 
192 
193 
194  // ===========================================================
196  // ===========================================================
198 
199 public:
200 
201 protected:
202 
203 private:
204 
206 
207 
208  // ===========================================================
210  // ===========================================================
212 
213 public:
214 
219  virtual section_space_schema_jims_index_space_handle& operator=(const index_space_handle& xother);
220 
225  virtual section_space_schema_jims_index_space_handle* clone() const;
226 
227 protected:
228 
229 private:
230 
232 
233 
234  // ===========================================================
236  // ===========================================================
238 
239 public:
240 
242 
247  virtual bool conforms_to_state(const index_space_collection& xhost,
248  pod_type xlocal_id) const;
249 
250 protected:
251 
252 private:
253 
255 
256 
257  // ===========================================================
259  // ===========================================================
261 
262 public:
263 
267  virtual bool is_ancestor_of(const any *other) const;
268 
272  virtual bool invariant() const;
273 
274 protected:
275 
276 private:
277 
279 
280 };
281 
282 // ===========================================================
283 // NON-MEMBER FUNCTIONS
284 // ===========================================================
285 
286 } // end namespace sheaf
287 
288 #endif // ifndef SECTION_SPACE_SCHEMA_JIMS_INDEX_SPACE_HANDLE_H
An implementation of class explicit_index_space_handle that has a section space schema jims id space ...
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.
A collection of id space states. This is a virtual class with provides an interface for accessing the...
A 2D implementation of abstract_product_structure.
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.
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.
Namespace for the fiber_bundles component of the sheaf system.