21 #include "SheafSystem/section_space_schema_jims_index_space_handle.h" 22 #include "SheafSystem/assert_contract.h" 23 #include "SheafSystem/ij_product_structure.h" 24 #include "SheafSystem/index_space_family.h" 25 #include "SheafSystem/section_space_schema_jims_index_space_state.h" 26 #include "SheafSystem/scoped_index.h" 39 const std::string& xname,
46 require(!xname.empty());
47 require(!xid_spaces.
contains(xname));
55 xfiber_schema_id_space,
56 xsection_space_schema_product);
60 ensure(&result.id_spaces() == &xid_spaces);
62 ensure(result.conforms_to_state(xname));
64 ensure(result.name() == xname);
65 ensure(!result.is_persistent());
67 ensure(result.base_space() == xbase_space_id_space);
68 ensure(result.fiber_schema() == xfiber_schema_id_space);
69 ensure(unexecutable(
"result.section_space_schema_product_structure() == xsection_space_schema_product"));
71 ensure(result.begin() == 0);
72 ensure(result.end() == xbase_space_id_space.
end()*xfiber_schema_id_space.
end());
73 ensure(result.ct() == xbase_space_id_space.
ct()*xfiber_schema_id_space.
ct());
120 ensure((*
this) == xother);
133 require(xid_spaces.
contains(xindex));
145 ensure(
index() == xindex);
154 const std::string& xname)
158 require(xid_spaces.
contains(xname));
170 ensure(
name() == xname);
192 ensure((*
this) == xother);
230 ensure(&
state() == &xstate);
252 ensure(is_basic_query);
274 ensure(is_basic_query);
301 xfiber_schema_id_space,
302 xsection_space_schema_product);
324 ensure(is_basic_query);
341 ensure(is_basic_query);
358 ensure(is_basic_query);
377 ensure(is_basic_query);
440 ensure((*
this) == xother);
461 ensure(*result == *
this);
495 ensure(is_basic_query);
An implementation of class explicit_index_space_handle that has a section space schema jims id space ...
virtual void attach_to(pod_type xindex)
Attach to the state with index xindex in the id space family id_spaces().
virtual pod_type index() const
Index of this space.
virtual pod_type end() const =0
Ending id of this space.
void put_factors(const index_space_handle &xbase_space_id_space, const index_space_handle &xfiber_schema_id_space, const ij_product_structure &xsection_space_schema_product)
Set the factors for this section space schema id space.
virtual ~section_space_schema_jims_index_space_handle()
Destructor.
const index_space_handle & fiber_schema() const
The fiber schema jims id space.
virtual const index_space_family & id_spaces() const
The id space family for this (const version).
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
section_space_schema_jims_index_space_handle & operator=(const section_space_schema_jims_index_space_handle &xother)
Assignment operator; attach this handle to the state of xother. synonym for attach_to(xother).
virtual bool is_attached() const =0
True if this handle is attached to a state.
bool is_consistent() const
True, if this id space is consistent with the base space and the fiber schema jims id spaces...
virtual bool conforms_to_state(const index_space_collection &xhost, pod_type xlocal_id) const
True if this conforms to the handle type required by the state with local scope id xlocal_id in the h...
Abstract base class with useful features for all objects.
const ij_product_structure & section_space_schema_product_structure() const
The product structure of the section space schema id space.
virtual bool invariant() const
Class invariant.
virtual bool is_ancestor_of(const any *other) const
Conformance test; true if other conforms to this.
An implementation of class index_space_handle for an explicit_index_space_state.
std::string name() const
Name of this space.
pod_index_type pod_type
The "plain old data" index type for this.
static section_space_schema_jims_index_space_handle new_space(index_space_family &xid_spaces, const std::string &xname, const index_space_handle &xbase_space_id_space, const index_space_handle &xfiber_schema_id_space, const ij_product_structure &xsection_space_schema_product)
Create a new section space schema jims id space in the id space family xid_space with name xname...
virtual bool is_attached() const
True if this handle is attached to a state.
section_space_schema_jims_index_space_state & state()
The section space schema jims id space state (mutable version).
const index_space_handle & base_space() const
The base space jims id space.
virtual bool invariant() const
Class invariant.
const ij_product_structure & section_space_schema_product_structure() const
The product structure of the section space schema id space.
virtual size_type ct() const =0
The number of members.
static section_space_schema_jims_index_space_handle new_space(index_space_family &xid_spaces, const std::string &xname, const index_space_handle &xbase_space_id_space, const index_space_handle &xfiber_schema_id_space, const ij_product_structure &xsection_space_schema_product)
Create a new section space schema jims id space in the id space family xid_space at the next availabl...
A collection of id space states. This is a virtual class with provides an interface for accessing the...
void disable_invariant_check() const
Disable invariant check. Intended for preventing recursive calls to invariant and for suppressing inv...
virtual bool contains(pod_type xlocal_id) const =0
True if this collection contains the id space with local id xlocal_id.
virtual section_space_schema_jims_index_space_handle * clone() const
Virtual constructor, makes a new instance of the same type as this. If the handle is attached...
bool invariant_check() const
True if invariant checking is enabled.
A 2D implementation of abstract_product_structure.
An implementation class explicit_index_space_state for the jims id space of the section space schema...
bool contains(pod_type xid) const
True, if this contains an id space with id xid.
const index_space_handle & base_space() const
The base space jims id space.
void put_factors(const index_space_handle &xbase_space_id_space, const index_space_handle &xfiber_schema_id_space, const ij_product_structure &xsection_space_schema_product)
Set the factors for this section space schema id space.
void update()
Make this id space consistent with the base space and fiber schema jims id spaces.
Factory and container for a family of id spaces.
bool is_consistent() const
True, if this id space is consistent with the base space and the fiber schema jims id spaces...
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.
section_space_schema_jims_index_space_handle()
Default constructor.
const index_space_handle & fiber_schema() const
The fiber schema jims id space.
void update()
Make this id space consistent with the base space and fiber schema jims id spaces.