21 #ifndef INDEX_SPACE_ITERATOR_H 22 #define INDEX_SPACE_ITERATOR_H 24 #ifndef SHEAF_DLL_SPEC_H 25 #include "SheafSystem/sheaf_dll_spec.h" 29 #include "SheafSystem/any.h" 33 #include "SheafSystem/pod_types.h" 39 class hub_index_space_handle;
40 class index_space_collection;
41 class index_space_family;
42 class index_space_handle;
114 virtual void next() = 0;
119 bool is_done()
const;
124 virtual void reset() = 0;
129 void force_is_done();
153 pod_type pod()
const;
159 pod_type hub_pod()
const;
164 pod_type unglued_hub_pod()
const;
169 pod_type glued_hub_pod()
const;
176 void invalidate_ids();
232 virtual pod_type index()
const = 0;
237 std::string name()
const;
242 virtual bool is_attached()
const = 0;
257 virtual void attach_to(pod_type xindex) = 0;
262 void attach_to(
const std::string& xname);
274 pod_type xlocal_id) = 0;
279 virtual void detach() = 0;
286 pod_type xindex)
const;
293 const std::string& xname)
const;
299 bool conforms_to_state(pod_type xid)
const;
305 bool conforms_to_state(
const std::string& xname)
const;
312 pod_type xlocal_id)
const = 0;
331 virtual bool is_ancestor_of(
const any *other)
const;
336 virtual bool invariant()
const;
358 #endif // ifndef INDEX_SPACE_ITERATOR_H An abstract iterator over the ids of an id space.
bool _is_done
True if the iteration is finished.
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
An implementation of class sum_index_space_handle that has a primary sum id space state...
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...
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.
pod_type _hub_pod
The current hub id in the iteration.
A collection of id space states. This is a virtual class with provides an interface for accessing the...
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.
int_type pod_index_type
The plain old data index type.
Namespace for the sheaves component of the sheaf system.
pod_type _pod
The current id in the iteration.
Factory and container for a family of id spaces.
pod_index_type pod_type
The "plain old data" index type for this.