21 #include "SheafSystem/sec_rep_space_member.h" 23 #include "SheafSystem/arg_list.h" 24 #include "SheafSystem/array_index_space_handle.h" 25 #include "SheafSystem/array_index_space_state.h" 26 #include "SheafSystem/array_section_dof_map.h" 27 #include "SheafSystem/assert_contract.h" 28 #include "SheafSystem/binary_section_space_schema_member.impl.h" 29 #include "SheafSystem/binary_section_space_schema_poset.h" 30 #include "SheafSystem/index_space_iterator.h" 31 #include "SheafSystem/poset_dof_map.h" 32 #include "SheafSystem/postorder_iterator.h" 33 #include "SheafSystem/preorder_iterator.h" 34 #include "SheafSystem/primitives_poset.h" 35 #include "SheafSystem/sec_rep_space.h" 36 #include "SheafSystem/section_dof_map.h" 37 #include "SheafSystem/sheaves_namespace.h" 38 #include "SheafSystem/subposet_member_iterator.h" 39 #include "SheafSystem/std_typeinfo.h" 40 #include "SheafSystem/tern.h" 59 const string& result = static_class_name();
63 ensure(!result.empty());
78 static const string result(
"sec_rep_space_member");
82 ensure(!result.empty());
98 string result(xschema_member_name +
"_host");
102 ensure(!result.empty());
119 string lschema(
"_schema");
121 string lschema_member_name(xschema_path.
member_name());
123 int lroot_size = lschema_member_name.size() - lschema.size();
125 if(lschema_member_name.substr(lroot_size) == lschema)
129 result = lschema_member_name.substr(0, lroot_size);
135 result = lschema_member_name +
"_fiber";
140 ensure(!result.empty());
150 const std::string& xbase_space_name)
156 require(poset_path::is_valid_name(xfiber_space_name));
157 require(poset_path::is_valid_name(xbase_space_name));
161 result = xfiber_space_name +
"_on_" + xbase_space_name;
165 ensure(poset_path::is_valid_name(result));
181 ensure(!is_attached());
199 new_jem_state(const_cast<sec_rep_space_member*>(&xother),
true,
true);
203 attach_to_state(&xother);
208 ensure(is_same_state(&xother));
221 require(is_ancestor_of(&xother));
222 require(precondition_of(attach_to_state(&xother)));
226 attach_to_state(&xother);
230 ensure(postcondition_of(attach_to_state(&xother)));
243 require(precondition_of(attach_to_state(&xother)));
247 attach_to_state(&xother);
251 ensure(is_same_state(&xother));
279 require(precondition_of(new_jim_state(same args)));
283 new_jim_state(xhost, xdof_map, xauto_access);
288 ensure(postcondition_of(new_jim_state(same args)));
303 require(precondition_of(\
304 new_jim_state(xhost, xbase_mbr, xbase_version, xauto_access)));
308 new_jim_state(xhost, xbase_mbr, xbase_version, xauto_access);
312 ensure(postcondition_of(\
313 new_jim_state(xhost, xbase_mbr, xbase_version, xauto_access)));
325 require(precondition_of(new_jrm_state(xhost, xbase_parts, xauto_access)));
329 new_jrm_state(xhost, xbase_parts, xauto_access);
333 require(postcondition_of(new_jrm_state(xhost, xbase_parts, xauto_access)));
344 const tern& xnew_jem,
349 require(precondition_of(new_jrm_state(same args)));
354 new_jrm_state(xhost, xexpansion, xexpansion_ct, xnew_jem, xauto_access);
360 ensure(postcondition_of(new_jrm_state(same args)));
374 attach_to_state(xhost, xindex);
379 ensure(host() == xhost);
380 ensure(index() == xindex);
381 ensure(is_attached());
382 ensure(!is_restricted());
395 attach_to_state(xhost, xindex.
hub_pod());
400 ensure(host() == xhost);
401 ensure(index() ==~ xindex);
402 ensure(is_attached());
403 ensure(!is_restricted());
413 require(!xname.empty());
418 attach_to_state(xhost, xname);
423 ensure(host() == xhost);
424 ensure(name() == xname);
425 ensure(is_attached());
426 ensure(!is_restricted());
436 require(precondition_of(attach_to_state(same args)));
440 attach_to_state(xnamespace, xpath, xauto_access);
444 ensure(postcondition_of(attach_to_state(same args)));
458 require(precondition_of(attach_to_state(same args)));
462 attach_to_state(xnamespace, xposet_index, xmember_index);
466 ensure(postcondition_of(attach_to_state(same args)));
480 require(precondition_of(attach_to_state(same args)));
484 attach_to_state(xnamespace,
490 ensure(postcondition_of(attach_to_state(same args)));
502 require(xother != 0);
506 attach_to_state(xother);
511 ensure(is_attached());
512 ensure(is_same_state(xother));
513 ensure(is_same_restriction(xother));
527 require(is_attached());
528 require(precondition_of(\
529 new_jim_state(host(), xbase_mbr, xbase_version, xauto_access)));
533 new_jim_state(host(), xbase_mbr, xbase_version, xauto_access);
537 ensure(postcondition_of\
538 (new_jim_state(host(), xbase_mbr, xbase_version, xauto_access)));
569 new_jim_state(xhost, ltuple_id,
false);
574 ensure(host() == xhost);
575 ensure(is_attached());
576 ensure(base().is_same_state(&xbase_mbr));
577 ensure(version() == schema().unaliased_version(xbase_version));
578 ensure(unexecutable(host()->member_ct() == old host->member_ct() + 1));
579 ensure(!is_restricted());
609 require(unexecutable(
"for all m in xbase_parts, m.le(xhost->schema().base_space())"));
621 new_jim_state(xhost, *litr, CURRENT_HOST_VERSION,
false);
636 new_jrm_state(xhost, lbranches.
base(), lbranches.
ct(), tern::FALSE,
false);
640 host()->multisection_id_space(
false).push_back(index());
644 const string& lbranch_space_name =
645 host()->branch_id_space_name(index(),
false);
648 array_index_space_state::new_space(host()->member_id_spaces(
false),
652 int lbranch_ct = lbranches.
ct();
653 for(
int i=0; i<lbranch_ct; ++i)
655 lbranch_id_space.
push_back(lbranches[i]);
666 ensure(unexecutable(
"this has a branch for each member of xbase_parts"));
667 ensure(has_branch_id_space(
true));
694 require(xauto_access || state_is_read_accessible());
698 result = host()->is_multisection(index(), xauto_access);
716 require(xauto_access || state_is_read_accessible());
720 result = host()->member_id_spaces(xauto_access).
721 contains(host()->branch_id_space_name(index(), xauto_access));
737 require(xauto_access || state_is_read_accessible());
738 require(has_branch_id_space(xauto_access));
743 host()->get_branch_id_space(index(), xauto_access);
760 require(xauto_access || state_is_read_accessible());
761 require(allocated_branch_handle(xid_space, xauto_access));
765 host()->release_branch_id_space(xid_space, xauto_access);
769 ensure(is_basic_query);
782 require(xauto_access || state_is_read_accessible());
786 bool result = host()->allocated_branch_handle(xid_space, xauto_access);
790 ensure(is_basic_query);
803 require(xauto_access || state_is_read_accessible());
804 require(has_branch_id_space(xauto_access));
809 host()->get_branch_id_space_iterator(index(), xauto_access);
826 require(xauto_access || state_is_read_accessible());
827 require(allocated_branch_iterator(xitr, xauto_access));
831 host()->release_branch_id_space_iterator(xitr, xauto_access);
835 ensure(is_basic_query);
848 require(xauto_access || state_is_read_accessible());
852 bool result = host()->allocated_branch_iterator(xitr, xauto_access);
856 ensure(is_basic_query);
883 require(state_is_read_accessible());
908 require(state_is_read_accessible());
930 require(xauto_access || state_is_read_accessible());
948 ensure(postcondition_of(schema()));
961 require(xauto_access || state_is_read_accessible());
979 ensure(postcondition_of(schema()));
992 require(state_is_read_accessible());
998 (partial_poset_member::unrestricted_schema());
1002 ensure(is_jim(
false) ?
1017 require(state_is_read_accessible());
1023 (partial_poset_member::unrestricted_schema());
1027 ensure(is_jim(
false) ?
1053 require(is_attached());
1072 require(is_attached());
1093 require(state_is_read_accessible());
1094 require(xother != 0);
1099 result = schema().same_base_space(xother->
schema());
1117 require(is_attached());
1121 result = schema().db();
1125 ensure(result >= 0);
1140 require(state_is_read_accessible());
1141 require(xother != 0);
1151 result = schema().same_rep(xother->
schema()) && same_base(xother);
1169 require(state_is_read_accessible());
1186 result = schema().discretization_ct();
1190 result = dof_map().schema().discretization_ct();
1203 host()->member_dof_map(litr.
index()).schema().discretization_ct();
1211 ensure(result >= 0);
1226 require(xauto_access || state_is_read_accessible());
1235 result = discretization_ct();
1244 ensure(postcondition_of(discretization_ct()));
1259 require(state_is_read_accessible());
1276 result = schema().evaluation_ct();
1280 result = dof_map().schema().evaluation_ct();
1296 result += host()->member_dof_map(litr.
index()).schema().evaluation_ct();
1304 ensure(result >= 0);
1317 require(is_attached());
1336 require(is_attached());
1355 require(state_is_read_accessible());
1359 poset& result = schema().fiber_space();
1374 require(state_is_read_accessible());
1378 const poset& result = schema().fiber_space();
1395 require(is_attached());
1399 result = schema().df();
1403 ensure(result >= 0);
1416 require(state_is_read_accessible());
1426 schema().attach_to_state(xbase_id, xfiber_schema_id);
1445 require(state_is_read_accessible());
1474 require(state_is_read_accessible());
1475 require(xbase != 0);
1476 require(xbase->
le(&(unrestricted_schema().base_space())));
1477 require(xfiber_schema != 0);
1478 require(xfiber_schema->
le(&(unrestricted_schema().fiber_schema())));
1482 schema().attach_to_state(xbase->
index(), xfiber_schema->
index());
1486 ensure(base().is_same_state(xbase));
1487 ensure(fiber_schema().is_same_state(xfiber_schema));
1502 require(is_attached() ? state_is_read_accessible() :
true);
1503 require(is_attached() ? base().state_is_read_accessible() :
true);
1507 result = is_attached() &&
1508 !(base().is_same_state(&(unrestricted_schema().base_space())));
1525 require(is_attached() ? state_is_read_accessible() :
true);
1529 result = is_attached() &&
1530 !(fiber_schema().is_same_state(&(unrestricted_schema().fiber_schema())));
1547 require(state_is_read_accessible());
1553 result = dof_map().version();
1557 result = NOT_A_STANDARD_VERSION_INDEX;
1562 ensure(is_jim() ? host()->base().host()->has_version(result) :
1563 result == NOT_A_STANDARD_VERSION_INDEX);
1587 require(state_is_read_accessible());
1588 require(schema().discretization_id_space().contains(xdisc_id));
1589 require(schema().fiber_schema_id_space(
false).contains(xfiber_dof_id));
1590 require(unexecutable(
"xdof points to buffer of size xdof_size"));
1591 require(xdof_size >= schema().size(xdisc_id, xfiber_dof_id,
false));
1595 dof_map(
false).get_dof(xdisc_id, xfiber_dof_id, xdof, xdof_size);
1611 bool xauto_access)
const 1615 require(state_is_auto_read_accessible(xauto_access));
1616 require(schema(xauto_access).discretization_id_space(xauto_access).contains(xdisc_id));
1617 require(schema(xauto_access).fiber_schema_id_space(
false, xauto_access).contains(xfiber_dof_id));
1618 require(unexecutable(
"xdof points to buffer of size xdof_size"));
1619 require(xdof_size >= schema(xauto_access).size(xdisc_id, xfiber_dof_id,
false, xauto_access));
1628 dof_map(
false).get_dof(xdisc_id, xfiber_dof_id, xdof, xdof_size);
1649 require(state_is_read_write_accessible());
1650 require(schema().discretization_id_space().contains(xdisc_id));
1651 require(schema().fiber_schema_id_space(
false).contains(xfiber_dof_id));
1652 require(unexecutable(
"xdof points to buffer of size xdof_size"));
1653 require(xdof_size >= schema().size(xdisc_id, xfiber_dof_id,
false));
1657 dof_map(
true).put_dof(xdisc_id, xfiber_dof_id, xdof, xdof_size);
1676 require(state_is_auto_read_write_accessible(xauto_access));
1677 require(schema(xauto_access).discretization_id_space(xauto_access).contains(xdisc_id));
1678 require(schema(xauto_access).fiber_schema_id_space(
false, xauto_access).contains(xfiber_dof_id));
1679 require(unexecutable(
"xdof points to buffer of size xdof_size"));
1680 require(xdof_size >= schema(xauto_access).size(xdisc_id, xfiber_dof_id,
false, xauto_access));
1686 get_read_write_access(
true);
1689 dof_map(
true).put_dof(xdisc_id, xfiber_dof_id, xdof, xdof_size);
1710 require(state_is_read_accessible());
1711 require(schema().discretization_id_space().contains(xdisc_id));
1712 require(unexecutable(
"xfiber points to buffer of size xfiber_size"));
1713 require(xfiber_size >= schema().fiber_size());
1717 dof_map(
false).get_fiber(xdisc_id, xfiber, xfiber_size);
1733 require(state_is_auto_read_accessible(xauto_access));
1734 require(schema(xauto_access).discretization_id_space(xauto_access).contains(xdisc_id));
1735 require(unexecutable(
"xfiber points to buffer of size xfiber_size"));
1736 require(xfiber_size >= schema(xauto_access).fiber_size(xauto_access));
1745 dof_map(
false).get_fiber(xdisc_id, xfiber, xfiber_size);
1766 require(state_is_read_write_accessible());
1767 require(schema().discretization_id_space().contains(xdisc_id));
1768 require(unexecutable(
"dof_map().fiber_in_bounds(xdisc_id, false)"));
1769 require(unexecutable(
"xfiber points to buffer of size xfiber_size"));
1770 require(xfiber_size >= schema().fiber_size());
1774 dof_map(
true).put_fiber(xdisc_id, xfiber, xfiber_size);
1790 require(state_is_auto_read_write_accessible(xauto_access));
1791 require(schema(xauto_access).discretization_id_space(xauto_access).contains(xdisc_id));
1792 require(unexecutable(
"dof_map().fiber_in_bounds(xdisc_id, false)"));
1793 require(unexecutable(
"xfiber points to buffer of size xfiber_size"));
1794 require(xfiber_size >= schema(xauto_access).fiber_size(xauto_access));
1800 get_read_write_access(
true);
1803 dof_map(
true).put_fiber(xdisc_id, xfiber, xfiber_size);
1824 require(state_is_read_write_accessible());
1825 require(schema().discretization_id_space().contains(xdisc_id));
1826 require(unexecutable(
"xfiber points to buffer of size xfiber_size"));
1827 require(xfiber_size >= schema().fiber_size());
1831 dof_map(
true).force_fiber(xdisc_id, xfiber, xfiber_size);
1847 require(state_is_auto_read_write_accessible(xauto_access));
1848 require(schema(xauto_access).discretization_id_space(xauto_access).contains(xdisc_id));
1849 require(unexecutable(
"xfiber points to buffer of size xfiber_size"));
1850 require(xfiber_size >= schema(xauto_access).fiber_size(xauto_access));
1856 get_read_write_access(
true);
1859 dof_map(
true).force_fiber(xdisc_id, xfiber, xfiber_size);
1880 require(state_is_read_accessible());
1881 require(schema().fiber_schema_id_space(
false).contains(xfiber_dof_id));
1882 require(unexecutable(
"xcomponent points to buffer of size xcomponent_size"));
1883 require(xcomponent_size >= schema().component_size(xfiber_dof_id));
1887 dof_map(
false).get_component(xfiber_dof_id, xcomponent, xcomponent_size);
1902 bool xauto_access)
const 1906 require(state_is_auto_read_accessible(xauto_access));
1907 require(schema(xauto_access).fiber_schema_id_space(
false, xauto_access).contains(xfiber_dof_id));
1908 require(unexecutable(
"xcomponent points to buffer of size xcomponent_size"));
1909 require(xcomponent_size >= schema(xauto_access).component_size(xfiber_dof_id, xauto_access));
1918 dof_map(
false).get_component(xfiber_dof_id, xcomponent, xcomponent_size);
1939 require(state_is_read_write_accessible());
1940 require(schema().fiber_schema_id_space(
false).contains(xfiber_dof_id));
1941 require(unexecutable(
"xcomponent points to buffer of size xcomponent_size"));
1942 require(xcomponent_size >= schema().component_size(xfiber_dof_id));
1946 dof_map(
true).put_component(xfiber_dof_id, xcomponent, xcomponent_size);
1959 const void* xcomponent,
1965 require(state_is_auto_read_write_accessible(xauto_access));
1966 require(schema(xauto_access).fiber_schema_id_space(
false, xauto_access).contains(xfiber_dof_id));
1967 require(unexecutable(
"xcomponent points to buffer of size xcomponent_size"));
1968 require(xcomponent_size >= schema(xauto_access).component_size(xfiber_dof_id, xauto_access));
1974 get_read_write_access(
true);
1977 dof_map(
true).put_component(xfiber_dof_id, xcomponent, xcomponent_size);
2033 require(state_is_read_accessible());
2034 require(fiber_schema().state_is_read_accessible());
2038 result = schema().fiber_schema().dof_tuple_ub(
false);
2053 require(xrequire_write_access ?
2054 state_is_read_write_accessible() :
2055 state_is_read_accessible());
2056 require(is_jim(
false));
2061 reinterpret_cast<const section_dof_map&
>(partial_poset_member::dof_map(xrequire_write_access));
2076 require(xrequire_write_access ?
2077 state_is_read_write_accessible() :
2078 state_is_read_accessible());
2079 require(is_jim(
false));
2084 reinterpret_cast<section_dof_map&
>(partial_poset_member::dof_map(xrequire_write_access));
2101 require(xdof_map != 0);
2139 ensure( (_host != 0) == (result != 0) );
2160 ensure(result == (dynamic_cast<const sec_rep_space*>(xother) != 0));
2212 ensure(result != 0);
2231 result = result && poset_member::invariant();
2233 if(invariant_check())
2235 disable_invariant_check();
2242 enable_invariant_check();
void get_fiber(pod_index_type xdisc_id, void *xfiber, size_type xfiber_size) const
Sets xfiber to the fiber referred to by discretization id xdisc_id.
virtual void get_read_write_access(bool xrelease_read_only_access=false)
Get read write access to the state associated with this. If release_read_only_access is requested...
virtual bool host_is_ancestor_of(const poset_state_handle *xother) const
True if other conforms to host.
void put_fiber(pod_index_type xdisc_id, const void *xfiber, size_type xfiber_size)
Sets the fiber referred to by discretization id xdisc_id to xfiber.
virtual void put_dof(pod_index_type xdisc_id, pod_index_type xfiber_dof_id, const void *xdof, size_type xdof_size)
Sets the dof referred to by xdof_id to the value at xdof.
void put_component(pod_index_type xfiber_dof_id, const void *xcomponent, size_type xcomponent_size)
Sets the xcomponent referred to by fiber id xfiber_dof_id to xcomponent.
schema_poset_member & fiber_schema()
The schema of the restricted fiber of this section space member (mutable version) ...
A client handle for a subposet.
void truncate()
Makes this the next member of the subset which is not less than old this, i.e. the depth-first descen...
static std::string standard_section_space_name(const std::string &xfiber_space_name, const std::string &xbase_space_name)
The standard name for the section space with fiber space poset name xfiber_space_name and base space ...
int df() const
The dimension of the restricted fiber.
virtual int db() const
The dimension of the restricted base.
sec_rep_space * host() const
The section representation space this is a member of.
section_space_schema_poset * host() const
The poset which this is a handle to a component of.
size_type ct() const
The number of items currently in use.
const pod_type & pod() const
The "plain old data" storage of this; the value in the external id space.
The abstract map from section dof ids to section dof values of heterogeneous type.
An abstract iterator over the ids of an id space.
subposet_member_iterator * member_iterator() const
An iterator for members of this poset; handle version.
bool allocated_branch_iterator(index_space_iterator &xitr, bool xauto_access) const
True if the id space iterator xitr was allocated by the iterator pool.
The default name space; a poset which contains other posets as members.
bool state_is_read_accessible() const
True if this is attached and if the state is accessible for read or access control is disabled...
A client handle for a general, abstract partially order set.
A three state "bool". Does not provide the operations of ternary logic and is intended for use mostly...
virtual bool includes_subposet(pod_index_type xsubposet_hub_id, bool xauto_access=true) const
True if this poset includes subposet with hub id xsubposet_hub_id.
A path defined by a poset name and a member name separated by a forward slash ('/'). For example: "cell_definitions/triangle".
A member of a sec_rep_space; a section.
bool is_done() const
True if iteration finished.
abstract_poset_member & base()
The restricted base of this section space member (mutable version)
bool is_same_state(const poset_state_handle *xhost, pod_index_type xhub_id) const
True is this is attached to state with hub id xhub_id in host xhost.
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
virtual const std::string & class_name() const
The name of this class.
bool has_branch_id_space(bool xauto_access) const
True if this is a multisection and it has a branch sequence id space.
static std::string standard_fiber_space_name(const poset_path &xschema_path)
The standard name for the fiber space constructed for the schema member with path xschema_path...
const scoped_index & index() const
The index of the component state this handle is attached to.
The general, abstract map from dof ids to dof values.
~sec_rep_space_member()
Destructor.
abstract_poset_member & base()
The base space for this section space (mutable version)
bool invariant() const
Class invariant.
void next()
Makes this the next member of the subset.
Abstract base class with useful features for all objects.
virtual sec_rep_space_member * clone() const
Make a new handle, no state instance of current.
virtual section_space_schema_member & schema()
The schema for this poset (mutable version)
const bool NOT_STRICT
Iteration strictness control.
size_t dof_tuple_size()
Get the size in bytes of the restricted dof tuple for this member.
const bool DOWN
Iteration directions.
void push_back(const_reference_type item)
Insert item at the end of the items in the auto_block.
A client handle for a mutable partially ordered set.
bool state_is_read_write_accessible() const
True if this is attached and if the state is accessible for read and write or access control is disab...
bool leqv(pod_index_type xother_index) const
True if this is less than or equivalent to the member with index xother_index.
bool same_base(const sec_rep_space_member *xother) const
True if this has the same base as xother.
bool allocated_branch_handle(index_space_handle &xid_space, bool xauto_access) const
True if the handle pool allocated xid_space.
pointer_type base() const
The underlying storage array.
virtual const scoped_index & new_row_dof_map()
Creates a new row dof map for total sections of this.
An index within the external ("client") scope of a given id space.
virtual bool is_attached() const
True if this handle is attached to a state.
virtual void restrict_to(pod_index_type xbase_id, pod_index_type xfiber_schema_id)
Restricts this section to base with index xbase_id and fiber schema with index xfiber_schema_id.
virtual bool is_attached() const
True if this handle is attached to a non-void state.
An array implementation of class scattered_insertion_index_space_handle. This representation is inten...
int version() const
The base space version this section is defined on.
bool same_rep(const sec_rep_space_member *xother) const
True if this has the same rep and same base as xother. /.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
scattered_insertion_index_space_handle & get_branch_id_space(bool xauto_access)
Allocate an id space handle from the handle pool attached to the branch id space for this member...
virtual void get_dof(pod_index_type xdisc_id, pod_index_type xfiber_dof_id, void *xdof, size_type xdof_size) const
Copies the dof referred to by xdisc_id, xfiber_dof_id into xdof.
bool is_empty() const
True if this poset is empty.
virtual bool contains_member(pod_index_type xmbr_hub_id, bool xauto_access=true) const
True if some version of this poset contains poset member with hub id xmbr_hub_id. ...
virtual void begin_jim_edit_mode(bool xauto_access=true)
allow editing of jims and jim order relation
bool le(pod_index_type xother_index) const
True if this is less than or equal to the member with index xother_index.
index_space_iterator & get_branch_id_space_iterator(bool xauto_access) const
Allocates an iterator from the iterator pool attached to the branch id space for this member...
bool fiber_schema_is_restricted() const
True if fiber_schema() is not the same as host()->fiber_schema().
virtual bool dof_map_is_ancestor_of(const poset_dof_map *xdof_map) const
True if xdof_map conforms to (is derived from) the type of dof map required by this handle...
virtual void release_access(bool xall=false) const
Release access. If xall is true, release all levels of access. Otherwise, release one level of access...
static std::string standard_schema_poset_name(const std::string &xschema_member_name)
The standard name for the section_space_schema_poset constructed for the schema member with name xsch...
virtual sec_rep_space_member & operator=(const abstract_poset_member &xother)
Assignment operator; synonym for attach_to_state(xother).
void force_fiber(pod_index_type xdisc_id, const void *xfiber, size_type xfiber_size)
Sets the fiber referred to by discretization id xdisc_id to xfiber; reallocates dof map memory if nec...
bool is_done() const
True if iteration finished.
virtual bool is_attached() const
True if this is attached to a state.
void get_component(pod_index_type xfiber_dof_id, void *xcomponent, size_type xcomponent_size) const
Sets xcomponent to the component referred to by fiber id xfiber_dof_id.
virtual bool is_ancestor_of(const any *other) const
True if other conforms to current.
void release_branch_id_space_iterator(index_space_iterator &xitr, bool xauto_access) const
Returns the iterator xitr to the iterator pool.
virtual bool is_attached() const =0
True if this iterator is attached to a state.
virtual section_space_schema_member & schema()
The restricted schema for this (mutable version).
int_type pod_index_type
The plain old data index type.
virtual section_space_schema_member & unrestricted_schema()
The unrestricted schema for this poset membe (mutable version).
std::string member_name() const
The member name part of the path.
int evaluation_ct() const
The number of members of the evaluation subposet contained in the down set of the restricted base...
A handle for a scattered_insertion_index_space_state.
A client handle for a poset member which has been prepared for use as a schema for a section space...
virtual void end_jim_edit_mode(bool xensure_lattice_invariant=true, bool xauto_access=true)
prevent editing of jims and jim order relation
void new_jrm_state(sec_rep_space *xhost, const subposet &xbase_parts, bool xauto_access)
Multisection constructor; creates a new jrm state which is a multi-section with a branch for each mem...
static const std::string & static_class_name()
The name of this class.
void push_back(const scoped_index &xhub_id)
Make the next id in this space equivalent to xhub_id in the hub id space. synonym for push_back(xhub_...
size_t fiber_size()
Get the size in bytes of the restricted fiber for this member.
void new_jim_state(abstract_poset_member &xbase_mbr, int xbase_version=CURRENT_HOST_VERSION, bool xauto_access=true)
Creates a new jim state in host() and attaches this handle to the state. The state is a partial secti...
An abstract client handle for a member of a poset.
bool base_is_restricted() const
True if base() is not the same as host()->base();.
void release_branch_id_space(index_space_handle &xid_space, bool xauto_access) const
Returns the id space handle xid_space to the handle pool.
sec_rep_space_member()
Default constructor; creates an unattached handle.
bool in_jim_edit_mode() const
True if editing jims and jim order relation is allowed.
bool is_multisection(bool xauto_access) const
True if this is a multisection.
Namespace for the fiber_bundles component of the sheaf system.
int discretization_ct() const
The number of members of the discretization subposet contained in the down set of the restricted base...
poset & fiber()
The unrestricted fiber of host() (mutable version).
virtual section_dof_map & dof_map(bool xrequire_write_access=false)
The map from client_ids to dof values for this poset member (mutable version)
A client handle for a poset member which has been prepared for use as a schema.
bool has_version(int xversion) const
True if xversion is a valid version for this.
base_space_poset & base_space()
The base space for section spaces on this schema.
pod_type hub_pod() const
The pod value of this mapped to the unglued hub id space.
const scoped_index & index() const
The index of the current member of the iteration.
A handle for a poset whose members are numerical representations of sections of a fiber bundle...