SheafSystem  0.0.0.0
section_space_schema_table_dof_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_TABLE_DOF_CRG_RANGE_H
22 #define SECTION_SPACE_SCHEMA_TABLE_DOF_CRG_RANGE_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SECTION_SPACE_SCHEMA_CRG_RANGE_H
29 #include "SheafSystem/section_space_schema_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 product_section_space_schema_crg_range;
43 class product_section_space_schema_poset;
44 
49 {
50 
51  // ===========================================================
53  // ===========================================================
55 
56 public:
57 
62 
67 
71  bool product_range_initialized() const;
72 
73 protected:
74 
78  void initialize_product_range(product_section_space_schema_crg_range& xproduct_range);
79 
84 
85 private:
86 
88 
89 
90  // ===========================================================
91  // SECTION_SPACE_SCHEMA_CRG_RANGE FACET
92  // ===========================================================
94 
95 public:
96 
97  using section_space_schema_crg_range::contains_member;
98 
103  virtual bool contains_member(pod_index_type xbase_space_id,
104  pod_index_type xfiber_schema_id) const;
105 
110  virtual void tuple(pod_index_type xindex,
111  pod_index_type& xbase_space_id,
112  pod_index_type& xfiber_schema_id) const;
113 
118  virtual void ordinal(pod_index_type xbase_space_id,
119  pod_index_type xfiber_schema_id,
120  pod_index_type& xindex) const;
121 
122 protected:
123 
124 private:
125 
127 
128 
129  // ===========================================================
130  // IMPLICIT_CRG_RANGE FACET
131  // ===========================================================
133 
134 public:
135 
136 protected:
137 
138 private:
139 
141 
142 
143  // ===========================================================
145  // ===========================================================
147 
148 public:
149 
153  static void get_size(const product_section_space_schema_poset& xhost,
154  size_type& result);
155 
159  virtual cover_set_iterator atoms() const;
160 
161 protected:
162 
163 private:
164 
166 
167 
168  // ===========================================================
170  // ===========================================================
172 
173 public:
174 
175 protected:
176 
181  virtual cover_set_iterator implicit_cover_iterator(bool xlower,
182  pod_index_type xmbr_index) const;
183 
188  virtual bool implicit_cover_is_empty(bool xlower, pod_index_type xmbr_index) const;
189 
194  virtual size_type implicit_cover_size(bool xlower, pod_index_type xmbr_index) const;
195 
200  virtual bool implicit_cover_contains_member(bool xlower,
201  pod_index_type xmbr_index,
202  pod_index_type xother_index) const;
203 
207  virtual pod_index_type implicit_first_cover_member(bool xlower,
208  pod_index_type xmbr_index) const;
209 
210 private:
211 
213 
214 
215  // ===========================================================
217  // ===========================================================
219 
220 public:
221 
222  using implicit_crg_range::is_jim;
223 
227  virtual bool is_jim(pod_index_type xmbr_index) const;
228 
229  using implicit_crg_range::dof_tuple_id;
230 
234  virtual const scoped_index& dof_tuple_id(pod_index_type xmbr_index) const;
235 
236 protected:
237 
238 private:
239 
241 
242 
243  // ===========================================================
245  // ===========================================================
247 
248 public:
249 
250 protected:
251 
255  virtual size_type implicit_private_data_size() const;
256 
260  virtual void get_implicit_private_data(block<pod_index_type>& xdata) const;
261 
265  virtual void put_implicit_private_data(const block<pod_index_type>& xdata);
266 
267 private:
268 
270 
271 
272  // ===========================================================
274  // ===========================================================
276 
277 public:
278 
282  virtual void finalize(poset_state_handle& xhost);
283 
284 protected:
285 
286 private:
287 
289 
290 
291  // ===========================================================
293  // ===========================================================
295 
296 public:
297 
301  virtual bool is_initialized() const;
302 
307  virtual const std::string& class_name() const;
308 
309 protected:
310 
311 private:
312 
316  static bool make_prototype();
317 
319 
320 
321  // ===========================================================
323  // ===========================================================
325 
326 public:
327 
331  virtual bool is_ancestor_of(const any *other) const;
332 
337  virtual section_space_schema_table_dof_crg_range* clone() const;
338 
342  virtual bool invariant() const;
343 
344 protected:
345 
346 private:
347 
349 
350 };
351 
352 // ===========================================================
353 // NON-MEMBER FUNCTIONS
354 // ===========================================================
355 
356 } // end namespace fiber_bundle
357 
358 #endif // ifndef SECTION_SPACE_SCHEMA_TABLE_DOF_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.
An schema poset for a section space represented by a Cartesian product subspace of the tensor product...
const product_section_space_schema_crg_range * _product_range
The product crg range.
Abstract base class with useful features for all objects.
Definition: any.h:39
Abstract emulator for a range of implicit section space schema members.
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
Emulator for a range of implicit section space schema members representing the Cartesian product the ...
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.
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.
Abstract emulator for a range of implicit section space schema members.