21 #ifndef ABSTRACT_POSET_MEMBER_H 22 #define ABSTRACT_POSET_MEMBER_H 24 #ifndef SHEAF_DLL_SPEC_H 25 #include "SheafSystem/sheaf_dll_spec.h" 28 #ifndef POSET_COMPONENT_H 29 #include "SheafSystem/poset_component.h" 32 #ifndef PRIMITIVE_VALUE_H 33 #include "SheafSystem/primitive_value.h" 36 #ifndef STD_IOSTREAM_H 37 #include "SheafSystem/std_iostream.h" 41 #include "SheafSystem/std_string.h" 48 template <
typename T>
class block;
50 class poset_member_iterator;
52 class schema_poset_member;
53 class sheaves_namespace;
93 const dof_type& operator[] (
size_type xi)
const;
98 table_dofs_type* clone()
const;
142 const dof_type& operator[] (
size_type xi)
const;
147 row_dofs_type* clone()
const;
167 friend class cover_set_iterator;
168 friend class filtered_iterator;
174 friend class subposet_joiner;
203 static host_type& new_host(namespace_type& xns,
260 bool xcopy_dof_map =
false,
261 bool xauto_access =
true);
267 virtual void new_jim_state(
pod_index_type xtuple_id,
bool xauto_access =
true);
273 void new_jim_state(
const scoped_index& xtuple_id,
bool xauto_access =
true);
281 bool xcopy_dof_map =
false,
282 bool xauto_access =
true);
290 bool xauto_access =
true);
298 bool xauto_access =
true);
304 virtual void new_jrm_state(
bool xauto_access =
true);
319 virtual void new_jrm_state(
const scoped_index* xexpansion,
321 const tern& xgreatest,
322 bool xauto_access =
true);
334 const tern& xgreatest,
335 bool xauto_access =
true);
375 virtual void attach_handle_data_members();
380 char* table_dof_ptr(
bool xrequire_write_access =
false)
const;
385 char* row_dof_ptr(
bool xrequire_write_access =
false);
405 virtual bool is_jim(
bool xin_current_version =
true)
const;
410 virtual bool is_atom()
const;
459 bool schema_is(
const std::string& xschema_name)
const;
484 virtual bool is_restricted()
const;
509 virtual int dof_ct()
const = 0;
515 virtual poset_dof_map& dof_map(
bool xrequire_write_access =
false);
521 virtual const poset_dof_map& dof_map(
bool xrequire_write_access =
false)
const;
527 virtual bool dof_map_is_ancestor_of(
const poset_dof_map* xdof_map)
const;
532 void dof_tuple(
const void* xbuf,
size_t xbuflen)
const;
537 void put_dof_tuple(
const void* xbuf,
size_t xbuflen);
547 void dof_tuple_id(
scoped_index& result,
bool xauto_access)
const;
552 void put_dof_tuple_id(
pod_index_type xtuple_index,
bool xauto_access);
557 void put_dof_tuple_id(
const scoped_index& xtuple_index,
bool xauto_access);
577 const void*
table_dofs(
bool xauto_access)
const;
597 const void*
row_dofs(
bool xauto_access)
const;
861 bool cover_is_empty(
bool xlower)
const;
867 bool cover_is_singleton(
bool xlower)
const;
879 bool cover_contains_member(
bool xlower,
pod_index_type xother_mbr_index)
const;
885 bool cover_contains_member(
bool xlower,
const scoped_index& xother_mbr_index)
const;
893 bool cover_is_equal(
bool xlower,
pod_index_type xother_mbr_index)
const;
901 bool cover_is_equal(
bool xlower,
const scoped_index& xother_mbr_index)
const;
913 void first_cover_member(
bool xlower,
scoped_index& result)
const;
919 void insert_cover_member(
pod_index_type xother_mbr_index,
bool xlower);
925 void insert_cover_member(
const scoped_index& xother_mbr_index,
bool xlower);
931 void remove_cover_member(
pod_index_type xother_mbr_index,
bool xlower);
939 void remove_cover_member(
const scoped_index& xother_mbr_index,
bool xlower);
951 void clear_cover(
bool xlower);
963 void copy_cover(
bool xlower,
const scoped_index& xother_mbr_index);
1004 virtual void down_pa(
subposet* result)
const;
1010 void delete_down(
bool xdelete_exterior =
false,
1011 bool xenter_jim_edit_mode =
true);
1038 virtual void up_pa(
subposet* result)
const;
1044 virtual int jim_ct()
const;
1054 virtual void jims_pa(
subposet* result);
1060 virtual int maximal_jim_ct()
const;
1072 virtual void maximal_jims_pa(
subposet* result)
const;
1078 virtual int atom_ct()
const;
1088 virtual void atoms_pa(
subposet* result)
const;
1216 void l_not_sa(
bool xnew_jem =
true)
const;
1240 int xversion = CURRENT_HOST_VERSION)
const;
1248 int xversion = CURRENT_HOST_VERSION)
const;
1277 const std::string& xname)
const;
1283 const std::string& xname,
1315 virtual std::string name(
bool xauto_access)
const;
1320 virtual void all_names(
block<std::string>& xresult,
bool xauto_access =
false)
const;
1325 virtual size_type name_ct(
bool xauto_access)
const;
1330 virtual bool has_name(
const std::string& xname,
bool xauto_access =
false)
const;
1335 virtual void put_name(
const std::string& xname,
bool xunique,
bool xauto_access);
1340 virtual void delete_name(
const std::string& xname,
bool xauto_access =
false);
1345 virtual void delete_all_names(
bool xauto_access =
false);
1368 bool xauto_access =
true);
1377 bool xauto_access =
true);
1386 bool xauto_access =
true);
1391 virtual void delete_state(
bool xauto_access =
false);
1410 virtual bool is_ancestor_of(
const any* other)
const;
1420 virtual bool invariant()
const;
1439 virtual void to_stream(std::ostream& xos = std::cout)
const;
1456 template <
typename T>
1457 typename T::table_dofs_type&
table_dofs(T& x0);
1462 template <
typename T>
1463 const typename T::table_dofs_type&
table_dofs(
const T& x0);
1468 template <
typename T>
1469 typename T::table_dofs_type&
table_dofs(T& x0,
bool xauto_access);
1474 template <
typename T>
1475 const typename T::table_dofs_type&
table_dofs(
const T& x0,
bool xauto_access);
1480 template <
typename T>
1481 typename T::row_dofs_type&
row_dofs(T& x0);
1486 template <
typename T>
1487 const typename T::row_dofs_type&
row_dofs(
const T& x0);
1492 template <
typename T>
1493 typename T::row_dofs_type&
row_dofs(T& x0,
bool xauto_access);
1498 template <
typename T>
1499 const typename T::row_dofs_type&
row_dofs(
const T& x0,
bool xauto_access);
1512 #endif // ABSTRACT_POSET_MEMBER_H SHEAF_DLL_SPEC void lower(const met &xmetric, const ed &xvector, ed &xresult, bool xauto_access)
Lower vector (pre-allocated version for persistent type).
A client handle for a subposet.
poset host_type
The type of host poset for this type of member.
An abstract iterator over the ids of an id space.
The default name space; a poset which contains other posets as members.
namespace_poset namespace_type
The type of namespace for this type of member.
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.
A path defined by a poset name and a member name separated by a forward slash ('/'). For example: "cell_definitions/triangle".
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
abstract_poset_member_row_dofs_type row_dofs_type
The type of the row dofs.
Features shared by poset_member and subposet. Subposet and poset_member objects can be attached...
std::string name() const
A name for this.
The general, abstract map from dof ids to dof values.
Dperecated. Use postorder_itr. Specialization of the filtered depth-first iterator which exposes the ...
An implementation of class sum_index_space_handle that has a primary sum id space state...
T::row_dofs_type & row_dofs(T &x0)
The row dofs pod type for x0 (mutable version).
void attach_to_state(const poset_state_handle *xhost, pod_index_type xhub_id)
Attach this handle to the state with hub id xhub_id in the current version of host xhost...
Abstract base class with useful features for all objects.
abstract_poset_member_table_dofs_type table_dofs_type
The type of the table dofs.
abstract_poset_member_row_dofs_type row_dofs_type
The type of the row dofs (type of this).
A client handle for a mutable partially ordered set.
An index within the external ("client") scope of a given id space.
unsigned char dof_type
The type of the dofs.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Row dofs type for class abstract_poset_member.
abstract_poset_member_table_dofs_type table_dofs_type
The type of the table dofs (type of this).
T::table_dofs_type & table_dofs(T &x0)
The table dofs pod type for x0 (mutable version).
int_type pod_index_type
The plain old data index type.
std::string name() const
OBSOLETE: use name(bool xauto_access). A name for this.
SHEAF_DLL_SPEC std::ostream & operator<<(std::ostream &os, const dof_descriptor_array &p)
Insert dof_descriptor_array& p into ostream& os.
Namespace for the sheaves component of the sheaf system.
unsigned char dof_type
The type of the dofs.
Abstract object wrapper for an instance of a primitive type.
An abstract client handle for a member of a poset.
Factory and container for a family of id spaces.
Traverser to ensure validity of order relation.
Computes the join of given poset members.
Abstract traverser (internal iterator) for poset which traverses the cover relation graph in depth fi...
A client handle for a poset member which has been prepared for use as a schema.
Table dofs type for class abstract_poset_member.
Agent responsible for importing and exporting posets from an external name space which resides on dis...