21 #include "SheafSystem/hash_index_space_iterator.h" 23 #include "SheafSystem/assert_contract.h" 24 #include "SheafSystem/explicit_index_space_handle.h" 25 #include "SheafSystem/index_space_family.h" 26 #include "SheafSystem/hash_index_space_state.h" 64 ensure((*
this) == xother);
88 ensure(
index() == xindex);
97 const std::string& xname)
112 ensure(
name() == xname);
132 (void) explicit_index_space_iterator::operator=(xother);
142 ensure((*
this) == xother);
200 (void) this->
operator=(lother);
205 ensure((*
this) == xother);
229 result = result && (
_itr == lother.
_itr);
257 ensure(*result == *
this);
374 require(xstate != 0);
392 ensure(&
state() == xstate);
413 ensure(is_basic_query);
virtual bool invariant() const
Class invariant.
virtual pod_type index() const
Index of this space.
An abstract iterator over the ids of an id space.
bool _is_done
True if the iteration is finished.
pod_type pod() const
The current id in the iteration.
virtual bool operator==(const index_space_iterator &xother) const
True if this is equivalent to xother.
void invalidate_ids()
Set is_done() and invalidate pod() and hub_pod().
virtual void attach_to(explicit_index_space_state *xstate)
Attach to the explicit id space state xstate.
virtual ~hash_index_space_iterator()
Destructor.
explicit_index_space_state & state()
The explicit state (mutable version).
to_hub_type::const_iterator _itr
The stl iterator over ids.
Abstract base class with useful features for all objects.
std::string name() const
Name of this space.
bool is_done() const
True if iteration is finished.
An immutable abstract state for a space of alternate integer identifiers (aliases) for a subset of th...
const index_space_family & id_spaces() const
The id space family for this (const version).
virtual bool is_ancestor_of(const any *other) const
Conformance test; true if other conforms to this.
pod_type _hub_pod
The current hub id in the iteration.
virtual void next()
Makes item() the next id in the iteration.
void disable_invariant_check() const
Disable invariant check. Intended for preventing recursive calls to invariant and for suppressing inv...
An hash map implementation of class scattered_insertion_index_space_state. This representation is int...
hash_index_space_iterator & operator=(const hash_index_space_iterator &xother)
Assignment operator.
virtual hash_index_space_iterator * clone() const
Virtual constructor, makes a new instance of the same type as this. If the iterator is attached...
virtual bool operator==(const index_space_iterator &xother) const
True if this is equivalent to xother.
hash_index_space_iterator()
Default constructor.
bool invariant_check() const
True if invariant checking is enabled.
virtual bool conforms_to_state(explicit_index_space_state *xstate) const
True if this conforms to the iterator type required by the explicit id space state xstate...
An implementation of class index_space_iterator for an explicit_index_space_state.
explicit_index_space_state * _state
The explicit state.
virtual bool invariant() const
Class invariant.
An iterator over an id space in which the equivalence between the ids in the space and the hub id spa...
virtual void detach()
Detach this iterator form its state, if any.
virtual void reset()
Restarts the iteration.
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.
SHEAF_DLL_SPEC bool is_valid(pod_index_type xpod_index)
True if an only if xpod_index is valid.
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.
virtual bool is_attached() const
True if this iterator is attached to a state.
pod_type hub_pod() const
The current unglued hub id in the iteration. synonym for unglued_hub_pod().
const to_hub_type * _to_hub
The hash to hub ids.