SheafSystem  0.0.0.0
section_space_schema_crg_range.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_CRG_RANGE_H
22 #define SECTION_SPACE_SCHEMA_CRG_RANGE_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef IMPLICIT_CRG_RANGE_H
29 #include "SheafSystem/implicit_crg_range.h"
30 #endif
31 
32 namespace sheaf
33 {
34 class poset_state_handle;
35 }
36 
37 namespace fiber_bundle
38 {
39 
40 using namespace sheaf;
41 
42 class base_space_poset;
43 
47 class SHEAF_DLL_SPEC section_space_schema_crg_range : public implicit_crg_range
48 {
49 
50  // ===========================================================
52  // ===========================================================
54 
55 public:
56 
61 
66 
70  base_space_poset& base_space();
71 
75  const base_space_poset& base_space() const;
76 
80  bool base_space_initialized() const;
81 
85  poset_state_handle& fiber_schema();
86 
90  const poset_state_handle& fiber_schema() const;
91 
95  bool fiber_schema_initialized() const;
96 
97  using implicit_crg_range::contains_member;
98 
103  virtual bool contains_member(pod_index_type xbase_space_id,
104  pod_index_type xfiber_schema_id) const = 0;
105 
110  virtual void tuple(pod_index_type xindex,
111  pod_index_type& xbase_space_id,
112  pod_index_type& xfiber_schema_id) const = 0;
113 
118  virtual void ordinal(pod_index_type xbase_space_id,
119  pod_index_type xfiber_schema_id,
120  pod_index_type& xindex) const = 0;
121 
122 protected:
123 
127  void initialize_base_space(base_space_poset& xbase_space);
128 
132  void initialize_fiber_schema(poset_state_handle& xfiber_schema);
133 
138 
143 
144 private:
145 
147 
148 
149  // ===========================================================
150  // IMPLICIT_CRG_RANGE FACET
151  // ===========================================================
153 
154 public:
155 
156 protected:
157 
158 private:
159 
161 
162 
163  // ===========================================================
165  // ===========================================================
167 
168 public:
169 
170 protected:
171 
177  virtual bool implicit_cover_contains_iterator(bool xlower,
178  pod_index_type xmbr_index,
179  const cover_set_iterator& xitr) const;
180 
185  virtual bool implicit_cover_is_singleton(bool xlower, pod_index_type xmbr_index) const;
186 
187 private:
188 
190 
191 
192  // ===========================================================
194  // ===========================================================
196 
197 public:
198 
203  virtual const std::string& class_name() const;
204 
205 protected:
206 
207 private:
208 
210 
211 
212  // ===========================================================
214  // ===========================================================
216 
217 public:
218 
222  virtual bool is_ancestor_of(const any *other) const;
223 
228  virtual section_space_schema_crg_range* clone() const;
229 
233  virtual bool invariant() const;
234 
235 protected:
236 
237 private:
238 
240 
241 };
242 
243 // ===========================================================
244 // NON-MEMBER FUNCTIONS
245 // ===========================================================
246 
247 } // end namespace fiber_bundle
248 
249 #endif // ifndef SECTION_SPACE_SCHEMA_CRG_RANGE_H
pod_index_type ordinal(pod_index_type xi, pod_index_type xj, size_type xj_ub)
2-tuple to ordinal conversion.
A client handle for a general, abstract partially order set.
Abstract base class with useful features for all objects.
Definition: any.h:39
The lattice of closed cells of a cellular space; a lattice representation of a computational mesh...
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
Namespace for the sheaves component of the sheaf system.
base_space_poset * _base_space
The base space for section spaces on this schema.
void tuple(pod_index_type x, size_type xj_ub, pod_index_type &xi, pod_index_type &xj)
Ordinal to 2-tuple conversion.
Namespace for the fiber_bundles component of the sheaf system.
poset_state_handle * _fiber_schema
The fiber schema for section spaces on this schema.
Abstract emulator for a range of implicit section space schema members.