21 #include "SheafSystem/jcb_ed.h" 23 #include "SheafSystem/abstract_poset_member.impl.h" 24 #include "SheafSystem/assert_contract.h" 25 #include "SheafSystem/at1.h" 26 #include "SheafSystem/at1_space.h" 27 #include "SheafSystem/ed.h" 28 #include "SheafSystem/jcb_space.h" 29 #include "SheafSystem/fiber_bundles_namespace.h" 30 #include "SheafSystem/schema_poset_member.h" 31 #include "SheafSystem/wsv_block.h" 137 vd_lite::operator=(xrow_dofs);
141 postcondition_of(vd_lite::operator=(xrow_dofs));
190 const string& result = static_class_name();
194 ensure(!result.empty());
209 static const string result(
"jcb_ed_lite");
213 ensure(!result.empty());
235 ensure(is_same_type(*result));
259 require(&xother != 0);
265 bool result =
dynamic_cast<const jcb_ed_lite*
>(&xother) != 0;
278 if(invariant_check())
282 disable_invariant_check();
286 invariance(jcb_lite::invariant());
292 enable_invariant_check();
324 static const poset_path result(standard_schema_poset_name(),
"jcb_ed_schema");
328 ensure(result.
full());
329 ensure(result.
poset_name() == standard_schema_poset_name());
349 standard_schema_path().member_name(),
350 jcb::standard_schema_path(),
354 lschema.detach_from_state();
380 require(!xhost_path.
empty());
383 require(xschema_path.
full());
385 require(schema_poset_member::conforms_to(xns, xschema_path, standard_schema_path()));
390 require(host_type::d(xns, xschema_path, xauto_access) == host_type::d(xns, xdomain_path, xrange_path, xauto_access));
398 host_type::new_table(xns, xhost_path, xschema_path, xdomain_path, xrange_path, xauto_access);
402 ensure(xns.
owns(result, xauto_access));
403 ensure(result.path(
true) == xhost_path);
404 ensure(result.state_is_not_read_accessible());
405 ensure(result.schema(
true).path(xauto_access) == xschema_path);
407 ensure(result.factor_ct(
true) == result.d(
true));
408 ensure(result.d(
true) == host_type::d(xns, xschema_path, xauto_access));
410 ensure(result.domain_path(
true) == xdomain_path);
413 ensure(result.range_path(
true) == xrange_path);
416 ensure(result.scalar_space_path(
true) ==
418 ensure(result.scalar_space_path(
true) ==
463 attach_to_state(xhost, xhub_id);
469 ensure(index() == xhub_id);
470 ensure(is_attached());
484 attach_to_state(xhost, xid.
hub_pod());
490 ensure(index() ==~ xid);
491 ensure(is_attached());
502 require(!xname.empty());
507 attach_to_state(xhost, xname);
513 ensure(name() == xname);
514 ensure(is_attached());
524 require(xother != 0);
528 attach_to_state(xother);
533 ensure(is_attached());
534 ensure(is_same_state(xother));
544 require(precondition_of(new_jim_state(xhost, 0,
false, xauto_access)));
548 new_jim_state(xhost, 0,
false, xauto_access);
552 ensure(postcondition_of(new_jim_state(xhost, 0,
false, xauto_access)));
566 require(is_ancestor_of(&xother));
567 require(precondition_of(attach_to_state(&xother)));
571 attach_to_state(&xother);
575 ensure(postcondition_of(attach_to_state(&xother)));
589 require(precondition_of(attach_to_state(&xother)));
593 attach_to_state(&xother);
597 ensure(postcondition_of(attach_to_state(&xother)));
693 const string& result = static_class_name();
697 ensure(!result.empty());
712 static const string result(
"jcb_ed");
716 ensure(!result.empty());
765 require(xother != 0);
772 bool result =
dynamic_cast<const jcb_ed*
>(xother) != 0;
794 invariance(jcb::invariant());
796 if (invariant_check())
800 disable_invariant_check();
804 enable_invariant_check();
809 ensure(is_derived_query);
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 ...
bool full() const
True if both poset name and member name are not empty.
Abstract jacobian for d dimensional Euclidean space (volatile version).
The default name space; a poset which contains other posets as members.
bool invariant() const
Class invariant.
bool state_is_read_accessible() const
True if this is attached and if the state is accessible for read or access control is disabled...
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...
virtual const std::string & class_name() const
The name of this class.
bool contains_poset_member(pod_index_type xposet_hub_id, pod_index_type xmember_hub_id, bool xauto_access=true) const
True if this contains a poset with hub id xposet_hub_id which contains a member with hub id xmember_h...
A client handle for a general, abstract partially order set.
static const std::string & static_class_name()
The name of this class.
A path defined by a poset name and a member name separated by a forward slash ('/'). For example: "cell_definitions/triangle".
virtual jcb_ed * clone() const
Make a new handle, no state instance of current.
virtual ~jcb_ed_lite()
Destructor.
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.
T::row_dofs_type & row_dofs(T &x0)
The row dofs pod type for x0 (mutable version).
static const std::string & static_class_name()
The name of this class.
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
Abstract base class with useful features for all volatile objects.
Abstract base class with useful features for all objects.
virtual const std::string & class_name() const
The name of this class.
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 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)
Abstract jacobian class (volatile version).
An index within the external ("client") scope of a given id space.
static host_type & new_host(namespace_type &xns, const poset_path &xhost_path, const poset_path &xschema_path, const poset_path &xdomain_path, const poset_path &xrange_path, bool xauto_access)
Creates a new host table for members of this type. The poset is created in namespace xns with path xh...
virtual jcb_ed & operator=(const abstract_poset_member &xother)
Assignment operator; synonym for attach_to_state(&xother).
std::string poset_name() const
The poset name part of the path.
bool contains_path(const poset_path &xpath, bool xauto_access=true) const
True if this contains the poset or poset member specified by xpath.
bool invariant() const
Class invariant.
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 const volatile_type & lite_prototype() const
Virtual constructor for the associated volatile type.
bool is_ancestor_of(const any *xother) const
True if xother conforms to current.
jcb_ed_lite()
Default constructor.
bool empty() const
True if both poset name and member name are empty.
bool contains_poset(pod_index_type xhub_id, bool xauto_access=true) const
True if this contains a poset with hub id xhub_id..
jcb_ed_lite & operator=(const jcb_ed_lite &xother)
Assignment operator.
poset_path scalar_space_path() const
The path of the underlying space of scalars.
An abstract vector space viewed as an antisymmetric tensor space of degree 1.
static const poset_path & standard_schema_path()
The path to the standard schema for this class.
An abstract space of Jacobians.
int_type pod_index_type
The plain old data index type.
jcb_ed()
Default constructor.
Abstract jacobian for d dimensional Euclidean space (persistent version).
An abstract client handle for a member of a poset.
virtual jcb_ed_lite * clone() const
Virtual constructor, makes a new instance of the same type as this.
Namespace for the fiber_bundles component of the sheaf system.
Row dofs type for class vd.
virtual volatile_type * lite_type() const
Virtual conversion to the associated volatile type.
A client handle for a poset member which has been prepared for use as a schema.
virtual bool is_ancestor_of(const any_lite &xother) const
Conformance test; true if other conforms to this.
pod_type hub_pod() const
The pod value of this mapped to the unglued hub id space.