21 #include "SheafSystem/sec_tuple_space.impl.h" 23 #include "SheafSystem/abstract_poset_member.impl.h" 24 #include "SheafSystem/assert_contract.h" 25 #include "SheafSystem/binary_section_space_schema_member.impl.h" 26 #include "SheafSystem/binary_section_space_schema_poset.h" 27 #include "SheafSystem/fiber_bundles_namespace.h" 28 #include "SheafSystem/namespace_poset.impl.h" 29 #include "SheafSystem/namespace_poset_member.h" 30 #include "SheafSystem/poset_handle_factory.h" 31 #include "SheafSystem/section_space_schema_member.impl.h" 32 #include "SheafSystem/section_space_schema_poset.h" 33 #include "SheafSystem/sec_tuple.h" 34 #include "SheafSystem/tuple.h" 35 #include "SheafSystem/tuple_space.h" 61 require(!xsection_schema_path.
empty());
64 require(xfiber_schema_path.
full());
93 require(!xpath.
empty());
96 require(xschema_path.
full());
98 require(fiber_space_conforms<fiber_type::host_type>(xns, xschema_path, xauto_access));
106 table_type& result = *(
new table_type());
110 schema_type lschema(xns, xschema_path, xauto_access);
130 result.new_state(xns, xpath, lschema, lmap);
139 ensure(xns.
owns(result, xauto_access));
140 ensure(result.path(
true) == xpath);
141 ensure(result.state_is_not_read_accessible());
142 ensure(result.schema(
true).path(xauto_access) == xschema_path);
144 ensure(result.factor_ct(
true) == result.schema(
true).fiber_space<
fiber_type::host_type>().factor_ct(xauto_access));
162 require(state_is_read_accessible());
181 require(state_is_auto_read_accessible(xauto_access));
190 int result = factor_ct();
243 require(xbottom != 0);
272 fiber_bundle::sec_tuple_space::
305 return SEC_TUPLE_SPACE_ID;
319 static const char* result =
"sec_tuple_space";
bool state_is_auto_read_write_accessible(bool xauto_access) const
True if state is auto accessible for read and write, that is, if the state is already accessible for ...
void insert_prototype(const poset_state_handle *xprototype)
Sets xprototype as the prototype for its client class.
A client handle for a poset member which has been prepared for use as a schema for a section space...
bool full() const
True if both poset name and member name are not empty.
A Cartesian product section space.
virtual sec_tuple_space * clone() const
Virtual constructor; creates a new handle of the same actual type as this, attached to the same state...
bool conforms_to(const schema_poset_member &xother) const
True if the dofs defined by this agree in type and in order with the dofs defined by xother...
A section of a bundle with fiber type tuple.
The default name space; a poset which contains other posets as members.
virtual poset_type type_id() const
Identifier for the type of this poset.
bool path_is_auto_read_accessible(const poset_path &xpath, bool xauto_access) const
True if the state referred to xpath exists and is auto read accessible.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
poset_type
Identifiers for poset types.
bool state_is_auto_read_accessible(bool xauto_access) const
True if the state is auto accessible for read, that is, if the state is already accessible for read o...
A path defined by a poset name and a member name separated by a forward slash ('/'). For example: "cell_definitions/triangle".
A schema poset for a section space. A binary Cartesian product subspace of the binary tensor product ...
A Cartesian product space.
virtual void get_read_access() const
Get read access to the state associated with this.
poset_state_handle & member_poset(pod_index_type xhub_id, bool xauto_access=true) const
The poset_state_handle object referred to by hub id xhub_id.
sec_tuple_space()
Default constructor; creates a new sec_tuple_space handle not attached to any state.
void copy_dof_tuple(const poset_dof_map &xother)
Copies the dof tuple of xother into this.
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...
Abstract base class with useful features for all objects.
bool invariant() const
The class invariant.
poset & fiber_space()
The fiber space for section spaces on this schema.
virtual ~sec_tuple_space()
Destructor.
virtual schema_poset_member & schema()
The schema for this poset (mutable version).
bool owns(const poset_state_handle &xposet, bool xauto_access) const
True if and only if this contains the poset xposet. synonym for contains_poset(xposet.poset_path(true), xauto_access)
bool contains_path(const poset_path &xpath, bool xauto_access=true) const
True if this contains the poset or poset member specified by xpath.
static bool fiber_schema_conforms(const namespace_poset &xns, const poset_path &xsection_schema_path, const poset_path &xfiber_schema_path, bool xauto_access)
True if and only if the schema of the fiber space of the section schema specified by xsection_schema_...
virtual const char * class_name() const
The name of this class.
bool empty() const
True if both poset name and member name are empty.
void disable_invariant_check() const
Disable invariant check. Intended for preventing recursive calls to invariant and for suppressing inv...
poset_state_handle()
Default constructor.
static poset_handle_factory & factory()
The poset handle factory.
virtual bool is_attached() const
True if this is attached to a state.
int factor_ct() const
The number of factors in this product.
An abstract schema poset for a section space. A Cartesian product subspace of the tensor product of a...
bool invariant_check() const
True if invariant checking is enabled.
T::table_dofs_type & table_dofs(T &x0)
The table dofs pod type for x0 (mutable version).
poset & fiber_space()
The fiber space for section spaces on this schema (mutable version).
sec_rep_space()
Default constructor; creates an unattached handle.
virtual bool invariant() const
Class invariant.
An array representation of abstract class poset_dof_map.
Namespace for the fiber_bundles component of the sheaf system.
bool is_same_type(const any *other) const
True if other is the same type as this.
void enable_invariant_check() const
Enable invariant checking.
virtual bool is_ancestor_of(const any *xother) const
True if other conforms to this.
static sec_tuple_space & new_table(namespace_type &xhost, const poset_path &xpath, const poset_path &xschema_path, bool xauto_access)
Creates a new sec_tuple_space in namespace xns with path xpath and schema specified by xschema_path...
virtual array_poset_dof_map & table_dof_map(bool xrequire_write_access=false)
The map from table dof client_ids to table dof values for this poset (mutable version) ...
A handle for a poset whose members are numerical representations of sections of a fiber bundle...