21 #ifndef SUM_INDEX_SPACE_STATE_H 22 #define SUM_INDEX_SPACE_STATE_H 24 #ifndef SHEAF_DLL_SPEC_H 25 #include "SheafSystem/sheaf_dll_spec.h" 28 #ifndef EXPLICIT_INDEX_SPACE_STATE_H 29 #include "SheafSystem/explicit_index_space_state.h" 33 #include "SheafSystem/block.h" 36 #ifndef STD_UNORDERED_MAP_H 37 #include "SheafSystem/std_unordered_map.h" 41 #include "SheafSystem/std_map.h" 45 #include "SheafSystem/std_list.h" 51 class sum_index_space_state;
132 void equivalence_class(
pod_type xhub_id, equivalence_class_type& result)
const;
143 virtual bool contains_rep(
pod_type xhub_id)
const = 0;
149 bool contains_unique_rep(
pod_type xhub_id)
const;
165 virtual pod_type term_id_begin()
const = 0;
170 virtual pod_type term_id_end()
const = 0;
175 virtual bool contains_term_id(
pod_type xi)
const = 0;
235 virtual void clear();
242 typedef unordered::unordered_multimap<pod_type, pod_type>
rem_inv_type;
342 virtual const std::string& class_name()
const;
361 virtual bool is_ancestor_of(
const any* other)
const;
366 virtual bool invariant()
const;
388 #endif // ifndef SUM_INDEX_SPACE_STATE_H An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
block< pod_type > _term_end
The end of the interval in the sum id space for each term.
A auto_block initialization policy that initializes the values to zero.
sum_index_space_state(const sum_index_space_state &xother)
Copy constructor; disabled.
Abstract base class with useful features for all objects.
An immutable abstract state for a space of alternate integer identifiers (aliases) for a subset of th...
std::list< pod_type > equivalence_class_type
The type used to represent an equivalence class.
An index within the external ("client") scope of a given id space.
An abstract id space of alternate integer identifiers which is the sum (disjoint union) of two or mor...
SHEAF_DLL_SPEC size_t deep_size(const dof_descriptor_array &xp, bool xinclude_shallow=true)
The deep size of the referenced object of type dof_descriptor_array.
terms_type _terms
The terms of this sum.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
unordered::unordered_multimap< pod_type, pod_type > rem_inv_type
The type of the inverse of the rem map.
zero_block_initialization_policy< index_space_handle * > terms_init_type
The type of the terms block initialization policy.
bool operator==(const singly_linked_list< T, Alloc > &lhs, const singly_linked_list< T, Alloc > &rhs)
Checks if the contents of lhs and rhs are equal, that is, whether lhs.size() == rhs.size() and each element in lhs compares equal with the element in rhs at the same position.
auto_block< index_space_handle *, terms_init_type > terms_type
The type of the terms block.
pod_index_type pod_type
The "plain old data" index type for this.
block< pod_type > _term_begin
The beginning of the interval in the sum id space for each term.
Namespace for the sheaves component of the sheaf system.
sum_to_term_type _sum_to_term_map
The term id corresponding to each sum id.
rem_inv_type _rem_inv
The inverse rem map.
std::map< pod_type, pod_type > sum_to_term_type
The type of sum_to_term_map.