SheafSystem  0.0.0.0
schema_poset_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 SCHEMA_POSET_MEMBER_H
22 #define SCHEMA_POSET_MEMBER_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef TOTAL_POSET_MEMBER_H
29 #include "SheafSystem/total_poset_member.h"
30 #endif
31 
32 #ifndef EXPLICIT_INDEX_SPACE_HANDLE_H
33 #include "SheafSystem/explcit_index_space_handle.h"
34 #endif
35 
36 #ifndef STD_UNORDERED_MAP_H
37 #include "SheafSystem/std_unordered_map.h"
38 #endif
39 
40 #ifndef STD_LIST_H
41 #include "SheafSystem/std_list.h"
42 #endif
43 
44 #ifndef STD_IOSTREAM_H
45 #include "SheafSystem/std_iostream.h"
46 #endif
47 
48 #ifndef PRIMITIVES_POSET_DOF_MAP_H
49 #include "SheafSystem/primitives_poset_dof_map.h"
50 #endif
51 
52 #ifndef STD_STRING_H
53 #include "SheafSystem/std_string.h"
54 #endif
55 
56 namespace sheaf
57 {
58 
59 template <typename T> class block;
60 template <class T> class wsv_block;
61 class index_iterator;
62 class list_cover_set;
63 class dof_descriptor_array;
64 class poset_bounds;
65 class poset_member_dof_iterator;
66 class poset_member_iterator;
67 class poset_dof_iterator;
68 class schema_descriptor;
69 class storage_agent;
70 class subposet;
71 
75 class SHEAF_DLL_SPEC schema_poset_member : public total_poset_member
76 {
77  friend class array_poset_dof_map;
78  friend class dof_tuple_record_set;
79  friend SHEAF_DLL_SPEC size_t deep_size(const schema_poset_member& xp, bool xinclude_shallow);
80 
81  // ===========================================================
83  // ===========================================================
85 
86 public:
87 
88  // Typedefs:
89 
90 
94  static const poset_path& standard_schema_path();
95 
101  static host_type& new_host(namespace_type& xns,
102  const poset_path& xhost_path,
103  const poset_path& xschema_path,
104  bool xauto_access);
105 
110  static host_type& standard_host(namespace_type& xns, const poset_path& xhost_path, bool xauto_access);
111 
112 protected:
113 
114 private:
115 
117 
118  // ===========================================================
120  // ===========================================================
122 
123 public:
124 
129 
136  explicit schema_poset_member(const abstract_poset_member& xother,
137  bool xnew_jem = false,
138  bool xauto_access = true);
139 
145  inline schema_poset_member* clone(bool xnew_state, bool xauto_access = true) const
146  {
147  return static_cast<schema_poset_member*>(total_poset_member::clone(xnew_state, xauto_access));
148  }
149 
153  virtual schema_poset_member& operator=(const abstract_poset_member& xother);
154 
158  schema_poset_member& operator=(const schema_poset_member& xother);
159 
163  virtual ~schema_poset_member();
164 
165  // NEW HANDLE, NEW STATE CONSTRUCTORS
166 
172  primitive_type xprimitive_type,
173  bool xauto_access = true);
174 
180  explicit schema_poset_member(poset_state_handle* xhost,
181  primitives_poset_dof_map* xdof_map = 0,
182  bool xcopy_dof_map = false,
183  bool xauto_access = true);
184 
191  const scoped_index* xexpansion,
192  int xexpansion_ct,
193  const tern& xnew_jem,
194  bool xauto_access);
195 
196 
202  const std::string& xname,
203  const poset_path& xparent_path,
204  const wsv_block<schema_descriptor>& xdof_specs,
205  bool xauto_access);
206 
207  // NEW HANDLE, EXISTING STATE CONSTRUCTORS
208 
214 
220 
225  schema_poset_member(const poset_state_handle* xhost, const std::string& xname);
226 
231  schema_poset_member(const namespace_poset* xnamespace,
232  const poset_path& xpath,
233  bool xauto_access = true);
234 
235  // EXISTING HANDLE, NEW STATE "CONSTRUCTORS"
236 
237  // Make sure next declaration overloads
238  // inherited new_jim_state functions.
239 
241 
246  void new_jim_state(primitive_type xprimitive_type,
247  bool xauto_access = true);
248 
253  void new_jim_state(poset_state_handle* xhost,
254  primitive_type xprimitive_type,
255  bool xauto_access = true);
256 
269  void new_jim_state(const namespace_poset& xns,
270  const std::string& xname,
271  const poset_path& xparent_path,
272  const wsv_block<schema_descriptor>& xdof_specs,
273  bool xauto_access);
274 
280  static int dof_ct(const namespace_poset& xns,
281  const poset_path& xpath,
282  bool xis_table_dof,
283  bool xauto_access = true);
284 
290  static int table_dof_ct(const namespace_poset& xns,
291  const poset_path& xpath,
292  bool xauto_access = true);
293 
299  static int row_dof_ct(const namespace_poset& xns,
300  const poset_path& xpath,
301  bool xauto_access = true);
302 
307  int dof_ct(bool xis_table_dof) const;
308 
313  int table_dof_ct() const;
314 
319  int row_dof_ct() const;
320 
324  virtual int dof_ct() const
325  {
327  };
328 
333  size_t dof_tuple_ub(bool xis_table_dof) const;
334 
339  size_t table_dof_tuple_ub() const;
340 
345  size_t row_dof_tuple_ub() const;
346 
353  virtual primitive_type dof_tuple_type(bool xis_table_dof) const;
354 
355 
356 
362  {
363  return dof_tuple_type(true);
364  };
365 
366 
367 
373  {
374  return dof_tuple_type(false);
375  };
376 
382  bool dof_tuple_is_homogeneous(bool xis_table_dof) const;
383 
388  inline bool table_dof_tuple_is_homogeneous() const
389  {
390  return dof_tuple_is_homogeneous(true);
391  };
392 
397  inline bool row_dof_tuple_is_homogeneous() const
398  {
399  return dof_tuple_is_homogeneous(false);
400  };
401 
407  static std::string dof_subposet_name(const std::string& xname, bool xis_table_dof);
408 
414  static inline std::string table_dof_subposet_name(const std::string& xname)
415  {
416  return dof_subposet_name(xname, true);
417  };
418 
424  static inline std::string row_dof_subposet_name(const std::string& xname)
425  {
426  return dof_subposet_name(xname, false);
427  };
428 
434  std::string dof_subposet_name(bool xis_table_dof) const;
435 
441  inline std::string table_dof_subposet_name() const
442  {
443  return dof_subposet_name(true);
444  };
445 
451  inline std::string row_dof_subposet_name() const
452  {
453  return dof_subposet_name(false);
454  };
455 
457 
463  const scoped_index& table_dof_subposet_index() const;
464 
470  const scoped_index& row_dof_subposet_index() const;
471 
478  inline const scoped_index& dof_subposet_index(bool xis_table_dof) const
479  {
480  return xis_table_dof ? table_dof_subposet_index(): row_dof_subposet_index();
481  };
482 
487  bool contains_dof(const schema_poset_member& xother, bool xin_table_dofs) const;
488 
493  inline bool contains_table_dof(const schema_poset_member& xother) const
494  {
495  return contains_dof(xother, true);
496  };
497 
502  inline bool contains_row_dof(const schema_poset_member& xother) const
503  {
504  return contains_dof(xother, false);
505  };
506 
513  bool contains_dof(pod_index_type xother_id, bool xin_table_dofs) const;
514 
521  bool contains_dof(const scoped_index& xother_id, bool xin_table_dofs) const;
522 
529  bool contains_dof(const std::string& xname, bool xin_table_dofs) const;
530 
536  inline bool contains_table_dof(pod_index_type xother_id) const
537  {
538  return contains_dof(xother_id, true);
539  };
540 
546  inline bool contains_table_dof(const scoped_index& xother_id) const
547  {
548  return contains_dof(xother_id.hub_pod(), true);
549  };
550 
556  inline bool contains_row_dof(pod_index_type xother_id) const
557  {
558  return contains_dof(xother_id, false);
559  };
560 
566  inline bool contains_row_dof(const scoped_index& xother_id) const
567  {
568  return contains_dof(xother_id.hub_pod(), false);
569  };
570 
575  virtual bool is_dof(bool xin_table_dofs) const;
576 
581  inline bool is_table_dof() const
582  {
583  return is_dof(true);
584  };
585 
590  inline bool is_row_dof() const
591  {
592  return is_dof(false);
593  };
594 
599  bool is_component() const;
600 
605  bool is_component_of(const schema_poset_member& xother) const;
606 
611  bool is_factor() const;
612 
617  bool is_factor_of(const schema_poset_member& xother) const;
618 
622  virtual size_t size() const;
623 
627  virtual size_t alignment() const;
628 
632  virtual primitive_type type() const;
633 
639  virtual poset_dof_iterator* dof_iterator(bool xis_table_dofs,
640  int xversion = CURRENT_MEMBER_VERSION) const;
641 
646  inline poset_dof_iterator* table_dof_iterator(int xversion = CURRENT_MEMBER_VERSION) const
647  {
648  return dof_iterator(true, xversion);
649  };
650 
654  inline poset_dof_iterator* row_dof_iterator(int xversion = CURRENT_MEMBER_VERSION) const
655  {
656  return dof_iterator(false, xversion);
657  };
658 
664  bool conforms_to(const schema_poset_member& xother) const;
665 
672  virtual bool conforms_to(const schema_poset_member& xother, bool xis_table_dofs) const;
673 
680  bool conforms_to(const poset_path& xpath) const;
681 
689  bool conforms_to(const poset_path& xpath, bool xis_table_dofs) const;
690 
697  bool table_conforms_to(const schema_poset_member& xother) const;
698 
706  bool table_conforms_to(const poset_path& xpath) const;
707 
714  bool row_conforms_to(const schema_poset_member& xother) const;
715 
723  bool row_conforms_to(const poset_path& xpath) const;
724 
731  static bool conforms_to(const namespace_poset& xns,
732  const poset_path& xchild_path,
733  const poset_path& xparent_path,
734  bool xauto_access = true);
735 
744  static bool conforms_to(const namespace_poset& xns,
745  const poset_path& xchild_path,
746  const poset_path& xparent_path,
747  bool xis_table_dofs,
748  bool xauto_access);
749 
758  static bool table_conforms_to(const namespace_poset& xns,
759  const poset_path& xchild_path,
760  const poset_path& xparent_path,
761  bool xauto_access = true);
762 
771  static bool row_conforms_to(const namespace_poset& xns,
772  const poset_path& xchild_path,
773  const poset_path& xparent_path,
774  bool xauto_access = true);
775 
776 
781  static poset_path make_schema(const namespace_poset& xns,
782  const poset_path& xparent_path,
783  const std::string& xname);
784 
785 
789  static void make_schema_no_jims(namespace_poset* xns,
790  const std::string& xposet_name,
791  const std::string& xmember_name,
792  const std::string& xparent_name);
793 
801  static poset_path make_schema(const namespace_poset& xns,
802  const poset_path& xparent_path,
803  const std::string& xname,
804  const std::string xdof_names[],
805  const primitive_type xdof_types[],
806  const bool xis_table_dof[],
807  size_type xdof_ct,
808  bool xauto_access);
809 
816  static poset_path make_row_schema(const namespace_poset& xns,
817  const poset_path& xparent_path,
818  const std::string& xname,
819  const std::string xdof_names[],
820  const primitive_type xdof_types[],
821  size_type xdof_ct,
822  bool xauto_access);
823 
830  static poset_path
831  make_homogeneous_row_schema(const namespace_poset& xns,
832  const poset_path& xparent_path,
833  const std::string& xname,
834  const std::string xdof_names[],
835  const primitive_type xdof_type,
836  size_type xdof_ct,
837  bool xauto_access);
838 
844  static void make_row_dofs_schema(namespace_poset* xns,
845  const std::string member_names[],
846  const int num_members,
847  const int member_dof_type,
848  const std::string& schema_poset_name,
849  const std::string& schema_member_name,
850  const std::string& schema_inherits_name);
851 
857  static void make_table_dofs_schema(namespace_poset* xns,
858  const std::string member_names[],
859  const int num_members,
860  const int member_dof_type,
861  const std::string& schema_poset_name,
862  const std::string& schema_member_name,
863  const std::string& schema_inherits_name);
864 
868  void force_cache_update();
869 
879  dof_descriptor_array* dof_descriptors(bool xis_table_dof) const;
880 
887  dof_descriptor_array* table_dof_descriptors() const;
888 
895  dof_descriptor_array* row_dof_descriptors() const;
896 
897 protected:
898 
902  virtual void attach_handle_data_members();
903 
908 
913 
917  subposet_state* dof_subposet_state(bool xis_table_dof);
918 
924 
929  mutable int _table_cache_version;
930 
935  bool table_cache_consistent() const;
936 
940  virtual void update_table_cache() const;
941 
946  virtual bool initialize_table_dof_id_space() const;
947 
951  virtual void update_table_dof_id_space() const;
952 
956  virtual void update_table_dof_descriptors() const;
957 
963 
968  mutable int _row_cache_version;
969 
974  bool row_cache_consistent() const;
975 
980  virtual void update_row_cache(bool xupdate_id_space = false) const;
981 
986  virtual bool initialize_row_dof_id_space() const;
987 
991  virtual void update_row_dof_id_space() const;
992 
996  virtual void update_row_dof_descriptors() const;
997 
1003  bool initialize_dof_id_space(bool xis_table_dof) const;
1004 
1010  void update_dof_id_space(bool xis_table_dof) const;
1011 
1016  void update_dof_descriptors(bool xis_table_dof,
1017  dof_descriptor_array*& xdof_descriptors,
1018  size_type xdof_ct,
1019  size_type& xdof_tuple_ub) const;
1020 
1025 
1030 
1035 
1040 
1045 
1050 
1051 private:
1052 
1054 
1055 
1056  // ===========================================================
1058  // ===========================================================
1060 
1061 public:
1062 
1067  const index_space_handle& dof_id_space(bool xis_table_dofs) const;
1068 
1073  const index_space_handle& dof_id_space(bool xis_table_dofs, bool xauto_access) const;
1074 
1078  const index_space_handle& table_dof_id_space() const;
1079 
1083  const index_space_handle& table_dof_id_space(bool xauto_access) const;
1084 
1088  const index_space_handle& row_dof_id_space() const;
1089 
1093  const index_space_handle& row_dof_id_space(bool xauto_access) const;
1094 
1096 
1101  std::string name(pod_index_type xdof_id, bool xis_table_dof) const;
1102 
1107  std::string name(const scoped_index& xdof_id, bool xis_table_dof, bool xauto_access) const;
1108 
1113  virtual size_type size(pod_index_type xdof_id, bool xis_table_dof) const;
1114 
1119  size_type size(const scoped_index& xdof_id, bool xis_table_dof, bool xauto_access) const;
1120 
1125  size_type size(const std::string& xname, bool xis_table_dof, bool xauto_access) const;
1126 
1131  virtual size_type alignment(pod_index_type xdof_id, bool xis_table_dof) const;
1132 
1137  size_type alignment(const scoped_index& xdof_id, bool xis_table_dof, bool xauto_access) const;
1138 
1143  size_type alignment(const std::string& xname, bool xis_table_dof, bool xauto_access) const;
1144 
1149  virtual primitive_type type(pod_index_type xdof_id,
1150  bool xis_table_dof) const;
1151 
1156  primitive_type type(const scoped_index& xdof_id, bool xis_table_dof,
1157  bool xauto_access) const;
1158 
1163  primitive_type type(const std::string& xname, bool xis_table_dof, bool xauto_access) const;
1164 
1169  virtual size_type offset(pod_index_type xdof_id, bool xis_table_dof) const;
1170 
1175  size_type offset(const scoped_index& xdof_id, bool xis_table_dof,
1176  bool xauto_access) const;
1177 
1182  size_type offset(const std::string& xname, bool xis_table_dof, bool xauto_access) const;
1183 
1184 protected:
1185 
1190 
1195 
1196 private:
1197 
1199 
1200 
1201  // ===========================================================
1203  // ===========================================================
1205 
1206 public:
1207 
1208  // The product subposet hack, version 2 (PSH2).
1209  // ============================================
1210  // The abstraction that PSH2 exports via the virtual functions below
1211  // and their use in the i/o susbsystem is:
1212  //
1213  // 1) All member ids, in particular those associated with bounds and
1214  // bound iterators, are actual member ids for the poset they belong to.
1215  // The PSH1 use of section space schema member ids that were actually
1216  // base space member ids is now gone.
1217  //
1218  // 2) Subposet ids appearing in bounds are base space subposet ids
1219  // for section space schema classes and ordinary subposet ids for
1220  // all other classes.
1221  //
1222  // 3) All conversion of base space ids to schema ids is handled by
1223  // virtual functions in poset_state_handle, schema_poset_member,
1224  // and their descendants.
1225 
1231  virtual index_iterator* get_decomposition(pod_index_type xindex) const;
1232 
1240  index_iterator* bound_iterator(const poset_bounds& xbnd_id, bool xis_ub) const;
1241 
1248  virtual pod_index_type get_int_id(pod_index_type xext_id,
1249  const std::string& xid_space_name) const;
1250 
1257  virtual pod_index_type get_ext_id(const std::string& xid_space_name) const;
1258 
1265  virtual void get_ext_ids(const std::string& xid_space_name,
1266  pod_index_type& xschema_poset_ext_id,
1267  pod_index_type& xschema_member_ext_id,
1268  pod_index_type& xbase_space_ext_id,
1269  pod_index_type& xfiber_schema_ext_id,
1270  pod_index_type& xlocal_schema_ext_id) const;
1271 
1275  virtual schema_poset_member& ext_data_type_schema();
1276 
1281  virtual size_t ext_data_type_ct(bool xis_table_schema) const;
1282 
1283 protected:
1284 
1285 private:
1286 
1288 
1289 
1290  // ===========================================================
1292  // ===========================================================
1294 
1295 public:
1296 
1301  virtual primitives_poset_dof_map& dof_map(bool xrequire_write_access = false);
1302 
1307  virtual const primitives_poset_dof_map& dof_map(bool xrequire_write_access = false) const;
1308 
1313  virtual bool dof_map_is_ancestor_of(const poset_dof_map* xdof_map) const;
1314 
1315 protected:
1316 
1317 private:
1318 
1320 
1321 
1322  // ===========================================================
1324  // ===========================================================
1326 
1327 public:
1328 
1333  {
1335  };
1336 
1341  {
1342  return static_cast<schema_poset_member*>(abstract_poset_member::least_jem());
1343  };
1344 
1345 protected:
1346 
1347 private:
1348 
1350 
1351 
1352  // ===========================================================
1354  // ===========================================================
1356 
1357 public:
1358 
1364  {
1365  return static_cast<schema_poset_member*>(abstract_poset_member::p_join(other));
1366  };
1367 
1373  {
1374  return static_cast<schema_poset_member*>(abstract_poset_member::p_meet(other));
1375  };
1376 
1377 protected:
1378 
1379 private:
1380 
1382 
1383 
1384  // ===========================================================
1386  // ===========================================================
1388 
1389 public:
1390 
1396  inline schema_poset_member* l_join(abstract_poset_member* other, bool xnew_jem = true)
1397  {
1398  return static_cast<schema_poset_member*>(abstract_poset_member::l_join(other, xnew_jem));
1399  };
1400 
1406  inline schema_poset_member* l_meet(abstract_poset_member* other, bool xnew_jem = true)
1407  {
1408  return static_cast<schema_poset_member*>(abstract_poset_member::l_meet(other, xnew_jem));
1409  };
1410 
1416  inline schema_poset_member* l_not(bool xnew_jem = true) const
1417  {
1418  return static_cast<schema_poset_member*>(abstract_poset_member::l_not(xnew_jem));
1419  };
1420 
1421 protected:
1422 
1423 private:
1424 
1426 
1427 
1428  // ===========================================================
1430  // ===========================================================
1432 
1433 public:
1434 
1438  virtual void detach_from_state();
1439 
1440 protected:
1441 
1442 private:
1443 
1445 
1446 
1447  // ===========================================================
1449  // ===========================================================
1451 
1452 public:
1453 
1457  virtual bool is_ancestor_of(const any* other) const;
1458 
1462  virtual schema_poset_member* clone() const;
1463 
1467  virtual bool invariant() const;
1468 
1469 protected:
1470 
1471 private:
1472 
1474 };
1475 
1476 // ===========================================================
1477 // NON-MEMBER FUNCTIONS
1478 // ===========================================================
1479 
1483 SHEAF_DLL_SPEC
1484 size_t deep_size(const schema_poset_member& xp, bool xinclude_shallow = true);
1485 
1486 } // namespace sheaf
1487 
1488 #endif // SCHEMA_POSET_MEMBER_H
1489 
primitive_type row_dof_tuple_type() const
The type of row dofs defined by this. Synonym for dof_tuple_type(false).
poset_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 row_dof_tuple_is_homogeneous() const
True if all the row dofs have the same type. Synonym for dof_tuple_is_homogeneous(false);.
virtual total_poset_member * clone() const
Make a new handle, no state instance of current.
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 host() and attaches this to it. If xdof_map == 0 a new dof map is created. If xdof_map != 0 and xcopy_dof_map == false, xdof_map is used as the dof map. If xdof_map != 0 and xcopy_dof_map is true, a copy of xdof_map is used.
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 int dof_ct() const
The number of dofs in the dof tuple for jims of this poset;.
poset_dof_iterator * row_dof_iterator(int xversion=CURRENT_MEMBER_VERSION) const
A postorder iterator over the row dofs defined by this.
schema_poset_member * l_not(bool xnew_jem=true) const
lattice pseudo-complement of this, auto-, pre- and self allocated versions The lattice pseudo-complem...
The default name space; a poset which contains other posets as members.
The data structure representing the state of a subposet.
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...
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.
schema_poset_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...
static std::string row_dof_subposet_name(const std::string &xname)
The standard name for the row dof subposet associated with the schema member with name xname...
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
index_space_handle * _row_dof_id_space
The row dof id space for the schema defined by this.
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
std::string row_dof_subposet_name() const
The standard name for the row dof subposet associated with this schema member. Synonym for dof_subpos...
A (lower, upper) bounds pair for a poset. Specifies a portion of a poset for a bounded i/o operation...
Definition: poset_bounds.h:50
index_space_handle * _table_dof_id_space
The table dof id space for the schema defined by this.
std::string name() const
A name for this.
The general, abstract map from dof ids to dof values.
Definition: poset_dof_map.h:59
schema_poset_member * p_join(abstract_poset_member *other) const
poset join of this with other, auto-, pre-, and self-allocated versions the poset join is the least u...
schema_poset_member * least_jem() const
The smallest member which is join-equivalent to this.
schema_poset_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...
virtual int dof_ct() const
The number of dofs in the dof tuple for jims of this poset;.
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_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...
schema_poset_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...
Abstract base class with useful features for all objects.
Definition: any.h:39
scoped_index _row_cache_index
The index with respect to which the cached row properties were evaluated.
schema_poset_member * p_meet(abstract_poset_member *other)
poset meet of this with other, auto-, pre-, and self-allocated versions the poset meet is the greates...
primitive_type
Type ids for sheaf primitives.
A client handle for a mutable partially ordered set.
Definition: poset.h:40
size_type _row_dof_ct
The number of row dofs defined by this schema.
A map from schema poset member ids to dof values for primitives_poset members.
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
size_type _row_dof_tuple_ub
The size in bytes of the row dof tuple defined by this schema.
dof_descriptor_array * _row_dof_descriptors
The dof_descriptors_array for the row dof tuple defined by this schema.
SHEAF_DLL_SPEC size_t deep_size(const dof_descriptor_array &xp, bool xinclude_shallow=true)
The deep size of the referenced object of type dof_descriptor_array.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
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...
abstract_poset_member * l_not(bool xnew_jem=true) const
lattice pseudo-complement of this, auto-allocated The lattice pseudo-complement is the largest latt...
abstract_poset_member * least_jem() const
The smallest member which is join-equivalent to this.
int _table_cache_version
The version with respect to which the cached table properties were evaluated.
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...
int _row_cache_version
The version with respect to which the cached row properties were evaluated.
abstract_poset_member * l_meet(abstract_poset_member *other, bool xnew_jem=true)
lattice meet of this with other, auto-allocated the lattice meet is the greatest lower bound in the...
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).
A record_set which contains dof tuple records. Supports both record selection and record restriction ...
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...
size_type _table_dof_ct
The number of table dofs defined by this schema.
Iterates over the subset of Zn defined by the characteristic function host().
bool is_table_dof() const
True if this is in the table_dofs part of some schema. Synonym for is_dof(true).
Iterates in postorder over dofs of a schema member anchor. Attaches a handle of type schema_poset_mem...
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
primitive_type table_dof_tuple_type() const
The type of table dofs defined by this. Synonym for dof_tuple_type(true).
static std::string table_dof_subposet_name(const std::string &xname)
The standard name for the table dof subposet associated with the schema member with name xname...
Namespace for the sheaves component of the sheaf system.
bool table_dof_tuple_is_homogeneous() const
True if all the table dofs have the same type. Synonym for dof_tuple_is_homogeneous(true);.
dof_descriptor_array * _table_dof_descriptors
The dof_descriptors_array for the table dof tuple defined by this schema.
size_type _table_dof_tuple_ub
The size in bytes of the table dof tuple defined by this schema.
scoped_index _row_dof_subposet_index
The index within host of the row dofs subposet associated with this.
schema_poset_member * greatest_jem() const
The largest member which is join-equivalent to this.
An abstract client handle for a member of a poset.
scoped_index _table_dof_subposet_index
The index within host of the table dofs subposet associated with this.
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...
const scoped_index & dof_subposet_index(bool xis_table_dof) const
The index in host() of the subposet containing the the table dofs (xis_table_dof true) or row dofs in...
An array representation of abstract class poset_dof_map.
std::string table_dof_subposet_name() const
The standard name for the table dof subposet associated with this schema member. Synonym for dof_subp...
A client handle for a poset member which has been prepared for use as a schema.
scoped_index _table_cache_index
The index with respect to which the cached table properties were evaluated.
Whitespace-separated-value block; A block of objects of type T that can be conveniently initialized b...
Definition: tuple.h:62
A client handle for an unrestricted member of a poset. A total_poset_member is guaranteed not to be r...
abstract_poset_member * l_join(abstract_poset_member *other, bool xnew_jem=true)
lattice join of this with other, auto-allocated the lattice join is the least upper bound in the la...
bool is_row_dof() const
True if this is in in the row_dofs part of some schema. Synonym for is_dof(false).
pod_type hub_pod() const
The pod value of this mapped to the unglued hub id space.
Definition: scoped_index.h:710