SheafSystem  0.0.0.0
section_space_schema_member.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_MEMBER_H
22 #define SECTION_SPACE_SCHEMA_MEMBER_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SCOPED_INDEX_H
29 #include "SheafSystem/scoped_index.h"
30 #endif
31 
32 #ifndef SECTION_DOF_ITERATOR_H
33 #include "SheafSystem/section_dof_iterator.h"
34 #endif
35 
36 #ifndef SCHEMA_POSET_MEMBER_H
37 #include "SheafSystem/schema_poset_member.h"
38 #endif
39 
40 // #ifndef SECTION_SPACE_SCHEMA_POSET_H
41 // #include "SheafSystem/section_space_schema_poset.h"
42 // #endif
43 
44 namespace fiber_bundle
45 {
46 
47 using namespace sheaf;
48 
49 class fiber_bundles_namespace;
50 class sec_rep_descriptor;
51 class section_component_iterator;
52 class section_space_schema_poset;
53 class section_space_schema_jims_index_space_handle;
54 
55 
66 class SHEAF_DLL_SPEC section_space_schema_member : public schema_poset_member
67 {
68  friend class section_space_schema_poset; // For access to get_ext_ids.
69 
70 
71  // ===========================================================
73  // ===========================================================
75 
76 public:
77 
82 
87 
91  static const poset_path& standard_schema_path();
92 
96  static void make_standard_schema(namespace_poset& xns);
97 
98 protected:
99 
100 private:
101 
103 
104 
105  // ===========================================================
107  // ===========================================================
109 
110 public:
111 
115  virtual const std::string& class_name() const;
116 
120  static const std::string& static_class_name();
121 
126  static std::string standard_member_name(const std::string& xfiber_schema_member_name,
127  const std::string& xbase_member_name);
128 
132  virtual section_space_schema_member& operator=(const abstract_poset_member& xother);
133 
138 
142  virtual ~section_space_schema_member();
143 
149  inline section_space_schema_member* clone(bool xnew_state, bool xauto_access = true) const
150  {
151  return static_cast<section_space_schema_member*>(schema_poset_member::clone(xnew_state, xauto_access));
152  }
153 
154  // NEW HANDLE, NEW STATE CONSTRUCTORS
155 
156  // None - section_space_schema_poset is immutable.
157 
158  // NEW HANDLE, EXISTING STATE CONSTRUCTORS
159 
160  // None - section_space_schema_member is abstract
161 
162  // EXISTING HANDLE, NEW STATE "CONSTRUCTORS"
163 
164  // None - section_space_schema_member is immutable
165 
170  virtual void new_jim_state(poset_dof_map* xdof_map = 0,
171  bool xcopy_dof_map = false,
172  bool xauto_access = true)
173  {
174  not_implemented();
175  };
176 
181  virtual void new_jim_state(pod_index_type xtuple_id,
182  bool xauto_access = true)
183  {
184  not_implemented();
185  };
186 
191  virtual void new_jim_state(poset_state_handle* xhost,
192  poset_dof_map* xdof_map = 0,
193  bool xcopy_dof_map = false,
194  bool xauto_access = true)
195  {
196  not_implemented();
197  };
198 
203  virtual void new_jim_state(poset_state_handle* xhost,
204  pod_index_type xtuple_id,
205  bool xauto_access = true)
206  {
207  not_implemented();
208  };
209 
214  virtual void new_jrm_state(bool xauto_access = true)
215  {
216  not_implemented();
217  }
218 
223  virtual void new_jrm_state(poset_state_handle* xhost,
224  bool xauto_access = true)
225  {
226  not_implemented();
227  };
228 
235  virtual void new_jrm_state(const scoped_index* xexpansion,
236  int xexpansion_ct,
237  const tern& xnew_jem,
238  bool xauto_access = true)
239  {
240  not_implemented();
241  };
242 
249  virtual void new_jrm_state(poset_state_handle* xhost,
250  const scoped_index* xexpansion,
251  int xexpansion_ct,
252  const tern& xnew_jem,
253  bool xauto_access = true)
254  {
255  not_implemented();
256  };
257 
259 
264  virtual void new_jem_state(abstract_poset_member* xother,
265  bool xgreatest,
266  bool xauto_access)
267  {
268  not_implemented();
269  };
270 
275  virtual void new_jem_state(poset_state_handle* xhost,
276  pod_index_type xhub_id,
277  bool xgreatest,
278  bool xauto_access)
279  {
280  not_implemented();
281  };
282 
286  sec_rep_descriptor& rep();
287 
291  const sec_rep_descriptor& rep() const;
292 
296  bool same_rep(const section_space_schema_member& xother) const;
297 
301  pod_index_type base_space_id() const;
302 
306  void base_space_id(scoped_index& result) const;
307 
311  total_poset_member& base_space();
312 
316  const total_poset_member& base_space() const;
317 
321  bool same_base_space(const section_space_schema_member& xother) const;
322 
326  pod_index_type fiber_schema_id() const;
327 
331  void fiber_schema_id(scoped_index& result) const;
332 
336  schema_poset_member& fiber_schema();
337 
341  const schema_poset_member& fiber_schema() const;
342 
346  bool same_fiber_schema(const section_space_schema_member& xother) const;
347 
351  poset& fiber_space();
352 
356  const poset& fiber_space() const;
357 
362  template<typename F>
363  F& fiber_space();
364 
369  template<typename F>
370  const F& fiber_space() const;
371 
375  int db() const;
376 
380  int df() const;
381 
385  int df(bool xauto_access);
386 
391  int evaluation_ct() const;
392 
397  int discretization_ct() const;
398 
402  subposet& discretization();
403 
407  const subposet& discretization() const;
408 
412  bool same_discretization(const section_space_schema_member& xother) const;
413 
417  bool is_multivalued() const;
418 
422  subposet& multivalued();
423 
427  const subposet& multivalued() const;
428 
432  subposet& evaluation();
433 
437  const subposet& evaluation() const;
438 
442  bool same_evaluation(const section_space_schema_member& xother) const;
443 
447  virtual section_component_iterator* component_iterator() const;
448 
452  std::string evaluator_family_name() const;
453 
458  static std::string intersection_id_space_name(const subposet& xsp, const pod_index_type xhub_id);
459 
464  static std::string intersection_id_space_name(const subposet& xsp, const scoped_index& xid);
465 
469  virtual size_t size() const = 0;
470 
474  virtual size_t alignment() const = 0;
475 
479  virtual sheaf::primitive_type type() const = 0;
480 
485  virtual section_dof_iterator* dof_iterator(bool xis_table_dofs,
486  int xversion = CURRENT_MEMBER_VERSION) const;
487 
492  inline section_dof_iterator* table_dof_iterator(int xversion = CURRENT_MEMBER_VERSION) const
493  {
494  return dof_iterator(true, xversion);
495  };
496 
500  inline section_dof_iterator* row_dof_iterator(int xversion = CURRENT_MEMBER_VERSION) const
501  {
502  return dof_iterator(false, xversion);
503  };
504 
510  virtual bool conforms_to(const schema_poset_member& xother, bool xis_table_dofs) const;
511 
516  static bool fiber_schema_conforms_to(const namespace_poset& xns,
517  const poset_path& xpath,
518  const poset_path& xfiber_schema_path,
519  bool xauto_access = true);
520 
521 protected:
522 
529 
535  virtual void make_schema_info(bool xis_table_dof);
536 
541  virtual void attach_handle_data_members();
542 
547 
552 
557 
562 
566  mutable int _db;
567 
572  mutable int _evaluation_ct;
573 
578  mutable int _discretization_ct;
579 
583  void update_row_cache_without_disc_id_space() const;
584 
588  void update_row_cache_with_disc_id_space() const;
589 
593  void update_row_dof_id_space() const;
594 
595 private:
596 
598 
599 
600  // ===========================================================
602  // ===========================================================
604 
605 public:
606 
613  virtual primitive_type dof_tuple_type(bool xis_table_dof) const = 0;
614 
625  virtual dof_descriptor_array* dof_descriptors(bool xis_table_dof) const = 0;
626 
634 
639  inline bool contains_dof(const schema_poset_member& xother, bool xin_table_dofs) const
640  {
641  return schema_poset_member::contains_dof(xother, xin_table_dofs);
642  };
643 
648  inline bool contains_table_dof(const schema_poset_member& xother) const
649  {
650  return contains_dof(xother, true);
651  };
652 
657  inline bool contains_row_dof(const schema_poset_member& xother) const
658  {
659  return contains_dof(xother, false);
660  };
661 
668  inline bool contains_dof(pod_index_type xother_id, bool xin_table_dofs) const
669  {
670  return schema_poset_member::contains_dof(xother_id, xin_table_dofs);
671  };
672 
679  inline bool contains_dof(const scoped_index& xother_id, bool xin_table_dofs) const
680  {
681  return schema_poset_member::contains_dof(xother_id, xin_table_dofs);
682  };
683 
689  inline bool contains_table_dof(pod_index_type xother_id) const
690  {
691  return contains_dof(xother_id, true);
692  };
693 
699  inline bool contains_table_dof(const scoped_index& xother_id) const
700  {
701  return contains_dof(xother_id, true);
702  };
703 
709  inline bool contains_row_dof(pod_index_type xother_id) const
710  {
711  return contains_dof(xother_id, false);
712  };
713 
719  inline bool contains_row_dof(const scoped_index& xother_id) const
720  {
721  return contains_dof(xother_id, false);
722  };
723 
730  bool contains_dof(pod_index_type xbase_id,
731  pod_index_type xfiber_id,
732  bool xin_table_dofs) const;
733 
740  bool contains_dof(const scoped_index& xbase_id,
741  const scoped_index& xfiber_id,
742  bool xin_table_dofs) const;
743 
749  inline bool contains_table_dof(pod_index_type xbase_id,
750  pod_index_type xfiber_id) const
751  {
752  return contains_dof(xbase_id, xfiber_id, true);
753  };
754 
760  inline bool contains_table_dof(const scoped_index& xbase_id,
761  const scoped_index& xfiber_id) const
762  {
763  return contains_dof(xbase_id, xfiber_id, true);
764  };
765 
771  inline bool contains_row_dof(pod_index_type xbase_id,
772  pod_index_type xfiber_id) const
773  {
774  return contains_dof(xbase_id, xfiber_id, false);
775  };
776 
782  inline bool contains_row_dof(const scoped_index& xbase_id,
783  const scoped_index& xfiber_id) const
784  {
785  return contains_dof(xbase_id, xfiber_id, false);
786  };
787 
792  virtual bool is_dof(bool xin_table_dofs) const = 0;
793 
794 protected:
795 
799  virtual void update_table_cache() const;
800 
804  virtual void update_row_cache(bool xupdate_id_space = false) const;
805 
806 private:
807 
809 
810 
811  // ===========================================================
813  // ===========================================================
815 
816 public:
817 
822  const index_space_handle& discretization_id_space() const;
823 
828  const index_space_handle& discretization_id_space(bool xauto_access) const;
829 
834  index_space_handle& discretization_id_space();
835 
840  index_space_handle& discretization_id_space(bool xauto_access);
841 
846  const index_space_handle& fiber_schema_id_space(bool xis_table_dofs) const;
847 
852  const index_space_handle& fiber_schema_id_space(bool xis_table_dofs, bool xauto_access) const;
853 
855 
860  virtual size_type size(pod_index_type xdof_id, bool xis_table_dof) const;
861 
871  size_type size(pod_index_type xdisc_id,
872  pod_index_type xfiber_dof_id,
873  bool xis_table_dof) const;
874 
879  size_type size(const scoped_index& xdisc_id,
880  const scoped_index& xfiber_dof_id,
881  bool xis_table_dof,
882  bool xauto_access) const;
883 
885 
890  virtual size_type alignment(pod_index_type xdof_id, bool xis_table_dof) const;
891 
896  size_type alignment(pod_index_type xdisc_id, pod_index_type xfiber_dof_id, bool xis_table_dof) const;
897 
902  size_type alignment(const scoped_index& xdisc_id,
903  const scoped_index& xfiber_dof_id,
904  bool xis_table_dof,
905  bool xauto_access) const;
906 
908 
913  virtual primitive_type type(pod_index_type xdof_id, bool xis_table_dof) const;
914 
919  primitive_type type(pod_index_type xdisc_id, pod_index_type xfiber_dof_id, bool xis_table_dof) const;
920 
921 
926  primitive_type type(const scoped_index& xdisc_id,
927  const scoped_index& xfiber_dof_id,
928  bool xis_table_dof,
929  bool xauto_access) const;
930 
932 
937  virtual size_type offset(pod_index_type xdof_id, bool xis_table_dof) const;
938 
943  size_type offset(pod_index_type xdisc_id, pod_index_type xfiber_dof_id, bool xis_table_dof) const;
944 
949  size_type offset(const scoped_index& xdisc_id,
950  const scoped_index& xfiber_dof_id,
951  bool xis_table_dof,
952  bool xauto_access) const;
953 
957  size_type fiber_size() const;
958 
962  size_type fiber_size(bool xauto_access) const;
963 
967  size_type component_size(pod_index_type xfiber_dof_id) const;
968 
972  size_type component_size(const scoped_index& xfiber_dof_id, bool xauto_access) const;
973 
974 protected:
975 
981 
982 private:
983 
985 
986 
987  // ===========================================================
989  // ===========================================================
991 
992 public:
993 
1000  virtual pod_index_type get_ext_id(const std::string& xid_space_name) const;
1001 
1002 protected:
1003 
1004 private:
1005 
1007 
1008 
1009  // ===========================================================
1011  // ===========================================================
1013 
1014 public:
1015 
1019  virtual schema_poset_member& unrestricted_schema();
1020 
1024  virtual const schema_poset_member& unrestricted_schema() const;
1025 
1026 protected:
1027 
1028 private:
1029 
1031 
1032 
1033  // ===========================================================
1035  // ===========================================================
1037 
1038 public:
1039 
1045  {
1046  not_implemented();
1047  };
1048 
1054  {
1055  not_implemented();
1056  };
1057 
1062  {
1064  };
1065 
1070  {
1072  };
1073 
1079  virtual void merge_jem(const abstract_poset_member* xjem)
1080  {
1081  not_implemented();
1082  };
1083 
1084 protected:
1085 
1086 private:
1087 
1089 
1090 
1091  // ===========================================================
1093  // ===========================================================
1095 
1096 public:
1097 
1099 
1104  virtual int down_ct(pod_index_type xfilter_index) const;
1105 
1109  virtual subposet* down() const;
1110 
1114  virtual void down_pa(subposet* result) const;
1115 
1117 
1122  virtual int up_ct(pod_index_type xfilter_index) const;
1123 
1127  virtual subposet* up() const;
1128 
1132  virtual void up_pa(subposet* result) const;
1133 
1138  virtual int jim_ct() const;
1139 
1143  virtual subposet* jims();
1144 
1148  virtual void jims_pa(subposet* result);
1149 
1154  virtual int maximal_jim_ct() const;
1155 
1160  virtual subposet* maximal_jims();
1161 
1166  virtual void maximal_jims_pa(subposet* result) const;
1167 
1168 protected:
1169 
1170 private:
1171 
1173 
1174 
1175  // ===========================================================
1177  // ===========================================================
1179 
1180 public:
1181 
1187  {
1188  return static_cast<section_space_schema_member*>(abstract_poset_member::p_join(other));
1189  };
1190 
1195  virtual void p_join_pa(abstract_poset_member* other, abstract_poset_member* result) const;
1196 
1202  {
1203  return static_cast<section_space_schema_member*>(abstract_poset_member::p_meet(other));
1204  };
1205 
1210  virtual void p_meet_pa(abstract_poset_member* other, abstract_poset_member* result);
1211 
1212 protected:
1213 
1214 private:
1215 
1217 
1218 
1219  // ===========================================================
1221  // ===========================================================
1223 
1224 public:
1225 
1227 
1233  inline section_space_schema_member* l_join(abstract_poset_member* other, bool xnew_jem = true)
1234  {
1235  not_implemented();
1236  return this;
1237  };
1238 
1244  inline section_space_schema_member* l_meet(abstract_poset_member* other, bool xnew_jem = true)
1245  {
1246  not_implemented();
1247  return this;
1248  }
1249 
1255  inline section_space_schema_member* l_not(bool xnew_jem = true) const
1256  {
1257  not_implemented();
1258  section_space_schema_member* cthis = const_cast<section_space_schema_member*>(this);
1259  return cthis;
1260  };
1261 
1262 protected:
1263 
1264 private:
1265 
1267 
1268 
1269  // ===========================================================
1271  // ===========================================================
1273 
1274 public:
1275 
1280  virtual void put_version(int xversion, bool xunalias = false);
1281 
1282 protected:
1283 
1284 private:
1285 
1287 
1288 
1289  // ===========================================================
1291  // ===========================================================
1293 
1294 public:
1295 
1300  void put_standard_name(bool xunique, bool xauto_access);
1301 
1302 protected:
1303 
1304 private:
1305 
1307 
1308 
1309  // ===========================================================
1311  // ===========================================================
1313 
1314 public:
1315 
1317 
1322  virtual void attach_to_state(pod_index_type xbase_space_id,
1323  pod_index_type xfiber_schema_id) = 0;
1324 
1329  void attach_to_state(const scoped_index& xbase_space_id,
1330  const scoped_index& xfiber_schema_id);
1331 
1336  virtual void attach_to_state(const section_space_schema_poset* xhost,
1337  pod_index_type xbase_space_id,
1338  pod_index_type xfiber_schema_id) = 0;
1339 
1344  void attach_to_state(const section_space_schema_poset* xhost,
1345  const scoped_index& xbase_space_id,
1346  const scoped_index& xfiber_schema_id);
1347 
1352  virtual void attach_to_state(const section_space_schema_poset* xhost,
1353  const poset_path& xbase_path,
1354  const poset_path& xfiber_schema_path) = 0;
1355 
1359  virtual void detach_from_state();
1360 
1365  virtual void delete_state(bool xauto_access = false)
1366  {
1367  not_implemented();
1368  };
1369 
1370 protected:
1371 
1372 private:
1373 
1375 
1376 
1377  // ===========================================================
1379  // ===========================================================
1381 
1382 public:
1383 
1388  {
1389  return reinterpret_cast<section_space_schema_poset*>(schema_poset_member::host());
1390  }
1391 
1395  virtual bool host_is_ancestor_of(const poset_state_handle* other) const;
1396 
1397 protected:
1398 
1399 private:
1400 
1402 
1403 
1404  // ===========================================================
1406  // ===========================================================
1408 
1409 public:
1410 
1414  virtual bool is_ancestor_of(const any* other) const;
1415 
1419  virtual section_space_schema_member* clone() const = 0;
1420 
1424  virtual bool invariant() const;
1425 
1426 protected:
1427 
1428 private:
1429 
1431 
1432 
1433  // ===========================================================
1435  // ===========================================================
1437 
1438 public:
1439 
1443  virtual void to_stream(std::ostream& xos = std::cout) const;
1444 
1445 protected:
1446 
1447 private:
1448 
1450 };
1451 
1452 // ===========================================================
1453 // NONMEMBER FUNCTIONS
1454 // ===========================================================
1455 
1456 #ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN
1457 
1461 SHEAF_DLL_SPEC std::ostream& operator << (std::ostream &os, section_space_schema_member& p);
1462 
1463 #endif // ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN
1464 
1465 } // namespace fiber_bundle
1466 
1467 #endif // SECTION_SPACE_SCHEMA_MEMBER_H
virtual void new_jrm_state(poset_state_handle *xhost, bool xauto_access=true)
Creates a new jrm (join-reducible member) state in xhost and attaches this to it. ...
section_space_schema_member * greatest_jem() const
The largest member which is join-equivalent to this.
bool contains_row_dof(const schema_poset_member &xother) const
True if this is in the row dofs part of the schema defined by this. Synonym for contains_dof(xother, false).
poset_state_handle * host() const
The poset which this is a handle to a component of.
bool contains_dof(pod_index_type xother_id, bool xin_table_dofs) const
True if xother_id is the index of a dof in the table dofs part (xin_table_dofs == true) or in the row...
A client handle for a subposet.
Definition: subposet.h:86
schema_poset_member _fiber_schema
The fiber schema component of this.
virtual void delete_cover_link(abstract_poset_member *lesser)
Delete a link from lesser to this (i.e. lesser <= greater). /.
section_space_schema_poset * host() const
The poset which this is a handle to a component of.
int down_ct() const
The number of members in the down set of this member.
virtual void new_jrm_state(poset_state_handle *xhost, const scoped_index *xexpansion, int xexpansion_ct, const tern &xnew_jem, bool xauto_access=true)
Computes the join of the members with the indices given in xexpansion. If the join already exists and...
virtual void create_cover_link(abstract_poset_member *xlesser)
Insert a link from lesser to this (i.e. lesser <= greater). /.
abstract_poset_member * p_join(abstract_poset_member *other) const
poset join of this with other, auto-allocated the poset join is the least upper bound in the poset ...
abstract_poset_member * greatest_jem() const
The largest member which is join-equivalent to this.
virtual schema_poset_member * clone() const
Make a new handle, no state instance of current.
virtual size_t size() const
The number of bytes in this dof.
virtual void new_jrm_state(bool xauto_access=true)
Creates a new jrm (join-reducible member) state in host() and attaches this to it.
int _db
The dimension of the base space component.
virtual void new_jem_state(poset_state_handle *xhost, pod_index_type xhub_id, bool xgreatest, bool xauto_access)
Creates a new jrm state in xhost which is join equivalent to xother and attaches this to it...
bool contains_table_dof(const schema_poset_member &xother) const
True if this is in the table dofs part of the schema defined by this. Synonym for contains_dof(xother...
pod_index_type _fiber_schema_id
The member id of the fiber schema component of this.
The default name space; a poset which contains other posets as members.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
section_space_schema_poset host_type
The type of host poset.
A three state "bool". Does not provide the operations of ternary logic and is intended for use mostly...
Definition: tern.h:45
A client handle for a general, abstract partially order set.
total_poset_member _base_space
The base space componewnt of this.
Iterates in postorder over dofs of a schema member anchor. Attaches an a handle of type section_space...
section_space_schema_member * p_join(abstract_poset_member *other) const
Poset join of this with other, auto-aloocated version. The poset join is the least upper bound in the...
A path defined by a poset name and a member name separated by a forward slash (&#39;/&#39;). For example: "cell_definitions/triangle".
Definition: poset_path.h:48
int up_ct() const
The number of members in the up set of this member.
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
The general, abstract map from dof ids to dof values.
Definition: poset_dof_map.h:59
virtual primitive_type type() const
The primitive type index of the dof defined by this.
virtual void new_jem_state(abstract_poset_member *xother, bool xgreatest, bool xauto_access)
Creates a new jrm state in xhost which is join equivalent to xother and attaches this to it...
virtual void new_jrm_state(const scoped_index *xexpansion, int xexpansion_ct, const tern &xnew_jem, bool xauto_access=true)
Computes the join of the members with the indices given in xexpansion. If the join already exists and...
section_dof_iterator * row_dof_iterator(int xversion=CURRENT_MEMBER_VERSION) const
A postorder iterator over the row dofs defined by this.
Abstract base class with useful features for all objects.
Definition: any.h:39
virtual size_t alignment() const
The alignment for this dof.
fiber_bundles_namespace namespace_type
The type of namespace for this type of member.
primitive_type
Type ids for sheaf primitives.
bool contains_table_dof(pod_index_type xbase_id, pod_index_type xfiber_id) const
True if xother_id is the index of a dof in the table dofs part of the schema defined by this...
bool contains_dof(const scoped_index &xother_id, bool xin_table_dofs) const
True if xother_id is the index of a dof in the table dofs part (xin_table_dofs == true) or in the row...
A client handle for a mutable partially ordered set.
Definition: poset.h:40
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
section_space_schema_member * least_jem() const
The smallest member which is join-equivalent to this.
virtual void new_jim_state(poset_dof_map *xdof_map=0, bool xcopy_dof_map=false, bool xauto_access=true)
Creates a new jim (join-irreducible member) state in xhost and attaches this to it.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
virtual void delete_state(bool xauto_access=false)
Detach this from its state and delete the state. /.
Iterates in postorder over components of a section_space_schema_member anchor. The components of a se...
abstract_poset_member * least_jem() const
The smallest member which is join-equivalent to this.
bool contains_row_dof(const scoped_index &xother_id) const
True if xother_id is the index of a dof in the row dofs part of the schema defined by this...
dof_tuple_type
Identifiers for dof tuple types.
An array for storing structs which describe the size, alignment, and offset of dofs within a dof tupl...
bool contains_row_dof(const scoped_index &xbase_id, const scoped_index &xfiber_id) const
True if xother_id is the index of a dof in the row dofs part of the schema defined by this...
virtual void new_jim_state(poset_state_handle *xhost, poset_dof_map *xdof_map=0, bool xcopy_dof_map=false, bool xauto_access=true)
Creates a new jim (join-irreducible member) state in xhost and attaches this to it.
bool contains_row_dof(pod_index_type xbase_id, pod_index_type xfiber_id) const
True if xother_id is the index of a dof in the row dofs part of the schema defined by this...
bool contains_row_dof(pod_index_type xother_id) const
True if xother_id is the index of a dof in the row dofs part of the schema defined by this...
bool contains_dof(const schema_poset_member &xother, bool xin_table_dofs) const
True if xother is a dof in the table dofs part (xin_table_dofs == true) or in the row dofs part (xin_...
section_space_schema_member * p_meet(abstract_poset_member *other)
Poset meet of this with other, auto-allocated version. The poset meet is the greatest lower bound in ...
virtual void merge_jem(const abstract_poset_member *xjem)
Merge the join-equivalence class of xjem under the join equivalence class of this /...
virtual void new_jim_state(pod_index_type xtuple_id, bool xauto_access=true)
Creates a new jim (join-irreducible member) state in host() and attaches this to it. The existing dof map with index xtuple_id is used as the dof map.
index_space_handle * _discretization_id_space
The id space for the discretization members in the down set of the base space of this.
An abstract schema poset for a section space. A Cartesian product subspace of the tensor product of a...
bool contains_dof(const schema_poset_member &xother, bool xin_table_dofs) const
True if xother is a dof in the table dofs part (xin_table_dofs == true) or in the row dofs part (xin_...
section_space_schema_member * l_meet(abstract_poset_member *other, bool xnew_jem=true)
lattice meet of this with other, auto-, pre-, and self-allocated versions the lattice meet is the gre...
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
int _evaluation_ct
The number of members in the intersection of the evaluation subposet the down set of the base space c...
section_space_schema_member * l_not(bool xnew_jem=true) const
lattice pseudo-complement of this, auto-, pre- and self allocated versions The lattice pseudo-complem...
Namespace for the sheaves component of the sheaf system.
A client handle for a poset member which has been prepared for use as a schema for a section space...
void attach_to_state(const namespace_poset *xns, const poset_path &xpath, bool xauto_access=true)
Attach to the state specified by path xpath in the namespace xns.
virtual size_type offset(pod_index_type xdof_id, bool xis_table_dof) const
The offset for the table dof (xis_table_dof true) or row dof referred to by xdof_id in the schema def...
An abstract client handle for a member of a poset.
bool contains_table_dof(const scoped_index &xbase_id, const scoped_index &xfiber_id) const
True if xother_id is the index of a dof in the table dofs part of the schema defined by this...
virtual void new_jem_state(abstract_poset_member *xother, bool xgreatest, bool xauto_access)
Creates a new jrm state in host() which is the greatest jem (xgreatest true) or least jem (xgreatest ...
abstract_poset_member * p_meet(abstract_poset_member *other)
poset meet of this with other, auto-allocated the poset meet is the greatest lower bound in the pos...
bool contains_table_dof(const scoped_index &xother_id) const
True if xother_id is the index of a dof in the table dofs part of the schema defined by this...
Namespace for the fiber_bundles component of the sheaf system.
int _discretization_ct
The number of members in the intersection of the discretization subposet the down set of the base spa...
section_dof_iterator * table_dof_iterator(int xversion=CURRENT_MEMBER_VERSION) const
A postorder iterator over the table dofs defined by this. Synonym for dof_iterator(true).
bool contains_table_dof(pod_index_type xother_id) const
True if xother_id is the index of a dof in the table dofs part of the schema defined by this...
virtual void new_jim_state(poset_state_handle *xhost, pod_index_type xtuple_id, bool xauto_access=true)
Creates a new jim (join-irreducible member) state in host() and attaches this to it. The existing dof map with index xtuple_id is used as the dof map.
section_space_schema_member * l_join(abstract_poset_member *other, bool xnew_jem=true)
lattice join of this with other, auto-, pre-, and self-allocated versions the lattice join is the lea...
A client handle for a poset member which has been prepared for use as a schema.
A client handle for an unrestricted member of a poset. A total_poset_member is guaranteed not to be r...
section_space_schema_member * clone(bool xnew_state, bool xauto_access=true) const
Make a new handle instance of current. Attach the new instance to a new state if xnew_state is true...
SHEAF_DLL_SPEC std::ostream & operator<<(std::ostream &os, const binary_index &xbi)
Insert binary_index& xbi into ostream& os.
Definition: binary_index.cc:35
A description for a section representation scheme.
pod_index_type _base_space_id
The member id of the base space component of this.