21 #ifndef SECTION_SPACE_SCHEMA_MEMBER_H 22 #define SECTION_SPACE_SCHEMA_MEMBER_H 24 #ifndef SHEAF_DLL_SPEC_H 25 #include "SheafSystem/sheaf_dll_spec.h" 28 #ifndef SCOPED_INDEX_H 29 #include "SheafSystem/scoped_index.h" 32 #ifndef SECTION_DOF_ITERATOR_H 33 #include "SheafSystem/section_dof_iterator.h" 36 #ifndef SCHEMA_POSET_MEMBER_H 37 #include "SheafSystem/schema_poset_member.h" 47 using namespace sheaf;
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;
91 static const poset_path& standard_schema_path();
115 virtual const std::string& class_name()
const;
120 static const std::string& static_class_name();
126 static std::string standard_member_name(
const std::string& xfiber_schema_member_name,
127 const std::string& xbase_member_name);
171 bool xcopy_dof_map =
false,
172 bool xauto_access =
true)
182 bool xauto_access =
true)
193 bool xcopy_dof_map =
false,
194 bool xauto_access =
true)
205 bool xauto_access =
true)
224 bool xauto_access =
true)
237 const tern& xnew_jem,
238 bool xauto_access =
true)
252 const tern& xnew_jem,
253 bool xauto_access =
true)
351 poset& fiber_space();
356 const poset& fiber_space()
const;
370 const F& fiber_space()
const;
385 int df(
bool xauto_access);
391 int evaluation_ct()
const;
397 int discretization_ct()
const;
407 const subposet& discretization()
const;
417 bool is_multivalued()
const;
427 const subposet& multivalued()
const;
452 std::string evaluator_family_name()
const;
469 virtual size_t size()
const = 0;
474 virtual size_t alignment()
const = 0;
486 int xversion = CURRENT_MEMBER_VERSION)
const;
494 return dof_iterator(
true, xversion);
502 return dof_iterator(
false, xversion);
519 bool xauto_access =
true);
535 virtual void make_schema_info(
bool xis_table_dof);
541 virtual void attach_handle_data_members();
583 void update_row_cache_without_disc_id_space()
const;
588 void update_row_cache_with_disc_id_space()
const;
593 void update_row_dof_id_space()
const;
650 return contains_dof(xother,
true);
659 return contains_dof(xother,
false);
691 return contains_dof(xother_id,
true);
701 return contains_dof(xother_id,
true);
711 return contains_dof(xother_id,
false);
721 return contains_dof(xother_id,
false);
732 bool xin_table_dofs)
const;
742 bool xin_table_dofs)
const;
752 return contains_dof(xbase_id, xfiber_id,
true);
763 return contains_dof(xbase_id, xfiber_id,
true);
774 return contains_dof(xbase_id, xfiber_id,
false);
785 return contains_dof(xbase_id, xfiber_id,
false);
792 virtual bool is_dof(
bool xin_table_dofs)
const = 0;
799 virtual void update_table_cache()
const;
804 virtual void update_row_cache(
bool xupdate_id_space =
false)
const;
852 const index_space_handle& fiber_schema_id_space(
bool xis_table_dofs,
bool xauto_access)
const;
873 bool xis_table_dof)
const;
882 bool xauto_access)
const;
905 bool xauto_access)
const;
929 bool xauto_access)
const;
952 bool xauto_access)
const;
962 size_type fiber_size(
bool xauto_access)
const;
1000 virtual pod_index_type get_ext_id(
const std::string& xid_space_name)
const;
1114 virtual void down_pa(
subposet* result)
const;
1132 virtual void up_pa(
subposet* result)
const;
1138 virtual int jim_ct()
const;
1148 virtual void jims_pa(
subposet* result);
1154 virtual int maximal_jim_ct()
const;
1166 virtual void maximal_jims_pa(
subposet* result)
const;
1280 virtual void put_version(
int xversion,
bool xunalias =
false);
1300 void put_standard_name(
bool xunique,
bool xauto_access);
1329 void attach_to_state(
const scoped_index& xbase_space_id,
1359 virtual void detach_from_state();
1414 virtual bool is_ancestor_of(
const any* other)
const;
1424 virtual bool invariant()
const;
1443 virtual void to_stream(std::ostream& xos = std::cout)
const;
1456 #ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN 1463 #endif // ifndef DOXYGEN_1_5_4_SKIP_UNKNOWN 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.
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...
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 ('/'). For example: "cell_definitions/triangle".
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.
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.
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.
An index within the external ("client") scope of a given id space.
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.
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.
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.
A description for a section representation scheme.
pod_index_type _base_space_id
The member id of the base space component of this.