SheafSystem  0.0.0.0
sheaf::interval_index_space_iterator Class Reference

An iterator over an id space in which the equivalence between the ids in the space and the hub id space is stored in intervals. More...

#include <interval_index_space_iterator.h>

Inheritance diagram for sheaf::interval_index_space_iterator:
sheaf::explicit_index_space_iterator sheaf::index_space_iterator sheaf::any

Friends

class interval_index_space_state
 

INTERVAL_INDEX_SPACE_ITERATOR FACET

typedef std::map< pod_type, pod_typeto_hub_type
 The type of the id maps. More...
 
const to_hub_type_to_hub
 The interval to hub ids. More...
 
to_hub_type::const_iterator _itr
 The stl iterator over ids. More...
 
pod_type _interval_begin
 The begin of the current interval. More...
 
pod_type _interval_end
 The end of the current interval. More...
 
 interval_index_space_iterator ()
 Default constructor. More...
 
 interval_index_space_iterator (const interval_index_space_iterator &xother)
 Copy constructor. More...
 
 interval_index_space_iterator (const index_space_family &xid_spaces, pod_type xindex)
 Constructor: Attach to state with index xindex in the family xid_spaces. More...
 
 interval_index_space_iterator (const index_space_family &xid_spaces, const std::string &xname)
 Constructor: Attach to state with name xname in the family xid_spaces. More...
 
interval_index_space_iteratoroperator= (const interval_index_space_iterator &xother)
 Assignment operator. More...
 
virtual ~interval_index_space_iterator ()
 Destructor. More...
 
void next_interval ()
 Advances the iteration to the beginning of the next interval. More...
 
pod_type interval_begin () const
 The begin of the current interval. More...
 
pod_type interval_end () const
 The end of the current interval. More...
 
void update_interval_ids (pod_type xinterval_begin)
 Update the interval ids with the beginning interval id, xinterval_begin. More...
 
void invalidate_interval_ids ()
 Invalidate the interval ids. More...
 

INDEX_SPACE_ITERATOR FACET

virtual interval_index_space_iteratoroperator= (const index_space_iterator &xother)
 Assignment operator. More...
 
virtual bool operator== (const index_space_iterator &xother) const
 True if this is equivalent to xother. More...
 
virtual interval_index_space_iteratorclone () const
 Virtual constructor, makes a new instance of the same type as this. If the iterator is attached, attach to the same state. More...
 

ITERATOR FACET

virtual void next ()
 Makes item() the next id in the iteration. More...
 
virtual void reset ()
 Restarts the iteration. More...
 

HANDLE FACET

virtual void attach_to (explicit_index_space_state *xstate)
 Attach to the explicit id space state xstate. More...
 
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. More...
 

ANY FACET

virtual bool is_ancestor_of (const any *other) const
 Conformance test; true if other conforms to this. More...
 
virtual bool invariant () const
 Class invariant. More...
 

Additional Inherited Members

- Public Types inherited from sheaf::index_space_iterator
typedef pod_index_type pod_type
 The "plain old data" index type for this. More...
 
- Public Member Functions inherited from sheaf::explicit_index_space_iterator
virtual ~explicit_index_space_iterator ()
 Destructor. More...
 
virtual const index_space_collectionhost () const
 The host collection. More...
 
virtual pod_type index () const
 Index of this space. More...
 
virtual bool is_attached () const
 True if this iterator is attached to a state. More...
 
virtual void attach_to (pod_type xindex)
 Attach to the state with index xindex in the id space family id_spaces(). More...
 
virtual void attach_to (const index_space_collection &xhost, pod_type xlocal_id)
 Attach to the state with local scope id, xlocal_id in the host id space collection xhost. More...
 
virtual void detach ()
 Detach this iterator form its state, if any. More...
 
virtual bool conforms_to_state (const index_space_collection &xhost, pod_type xlocal_id) const
 True if this conforms to the handle type required by the state with local scope id xlocal_id in the host id space collection xhost. More...
 
- Public Member Functions inherited from sheaf::index_space_iterator
virtual ~index_space_iterator ()
 Destructor. More...
 
bool is_done () const
 True if iteration is finished. More...
 
void force_is_done ()
 Makes is_done() true. More...
 
pod_type pod () const
 The current id in the iteration. More...
 
pod_type hub_pod () const
 The current unglued hub id in the iteration. synonym for unglued_hub_pod(). More...
 
pod_type unglued_hub_pod () const
 The current unglued hub id in the iteration. More...
 
pod_type glued_hub_pod () const
 The current glued hub id in the iteration. More...
 
const index_space_familyid_spaces () const
 The id space family for this (const version). More...
 
const hub_index_space_handlehub_id_space () const
 The hub id space. More...
 
std::string name () const
 Name of this space. More...
 
void attach_to (const index_space_family &xid_spaces, pod_type xindex)
 Attach to the state with index xindex in the id space family xid_spaces. More...
 
void attach_to (const index_space_family &xid_spaces, const std::string &xname)
 Attach to the state with name xname in the id space family xid_spaces. More...
 
void attach_to (const std::string &xname)
 Attach to the state with name xname in the id space family id_spaces(). More...
 
void attach_to (const index_space_handle &xid_space)
 Attach to the state of the id space xid_space. More...
 
bool conforms_to_state (const index_space_family &xid_spaces, pod_type xindex) const
 True if this conforms to the handle type required by the state with index xindex in the id space family, xid_spaces. More...
 
bool conforms_to_state (const index_space_family &xid_spaces, const std::string &xname) const
 True if this conforms to the handle type required by the state with name xname in the id space family, xid_spaces. More...
 
bool conforms_to_state (pod_type xid) const
 True if this conforms to the handle type required by the state with id xid. More...
 
bool conforms_to_state (const std::string &xname) const
 True if this conforms to the handle type required by the state with name xname. More...
 
- Public Member Functions inherited from sheaf::any
bool is_same_type (const any *other) const
 True if other is the same type as this. More...
 
virtual ~any ()
 Destructor. More...
 
bool invariant_check () const
 True if invariant checking is enabled. More...
 
void enable_invariant_check () const
 Enable invariant checking. More...
 
void disable_invariant_check () const
 Disable invariant check. Intended for preventing recursive calls to invariant and for suppressing invariant checking during multi-phase initialization. More...
 
int disable_invariance_check_request_depth () const
 Number of times disable_invariant_check has been called without matching call to enable_invariant_check. More...
 
- Protected Member Functions inherited from sheaf::explicit_index_space_iterator
 explicit_index_space_iterator ()
 Default constructor. More...
 
 explicit_index_space_iterator (const explicit_index_space_iterator &xother)
 Copy constructor. More...
 
explicit_index_space_iteratoroperator= (const explicit_index_space_iterator &xother)
 Assignment operator. More...
 
explicit_index_space_statestate ()
 The explicit state (mutable version). More...
 
const explicit_index_space_statestate () const
 The explicit state (const version). More...
 
explicit_index_space_statestate (pod_type xindex) const
 The explicit id space state at id xindex in id space family id_spaces(). Returns null if no id space stae is available at index xindex. More...
 
explicit_index_space_statestate (const index_space_collection &xhost, pod_type xlocal_id) const
 The explicit id space state with local scope id xlocal_id in the host id space collection xhost. More...
 
- Protected Member Functions inherited from sheaf::index_space_iterator
 index_space_iterator ()
 Creates an iterator for the id space. More...
 
 index_space_iterator (const index_space_iterator &xother)
 Copy constructor. More...
 
void invalidate_ids ()
 Set is_done() and invalidate pod() and hub_pod(). More...
 
- Protected Member Functions inherited from sheaf::any
 any ()
 default constructor More...
 
- Protected Attributes inherited from sheaf::explicit_index_space_iterator
explicit_index_space_state_state
 The explicit state. More...
 
- Protected Attributes inherited from sheaf::index_space_iterator
bool _is_done
 True if the iteration is finished. More...
 
pod_type _pod
 The current id in the iteration. More...
 
pod_type _hub_pod
 The current hub id in the iteration. More...
 

Detailed Description

An iterator over an id space in which the equivalence between the ids in the space and the hub id space is stored in intervals.

Todo:
Separate this class into two classes an iterator over ids (interval_index_space_iterator) and an iterator over the intervals (interval_index_space_iterval_iterator).

Definition at line 48 of file interval_index_space_iterator.h.

Member Typedef Documentation

◆ to_hub_type

The type of the id maps.

Definition at line 112 of file interval_index_space_iterator.h.

Constructor & Destructor Documentation

◆ interval_index_space_iterator() [1/4]

sheaf::interval_index_space_iterator::interval_index_space_iterator ( )

Default constructor.

Postcondition
  • !is_attached()

Definition at line 35 of file interval_index_space_iterator.cc.

References invariant(), and sheaf::explicit_index_space_iterator::is_attached().

Referenced by clone(), and interval_index_space_iterator().

◆ interval_index_space_iterator() [2/4]

sheaf::interval_index_space_iterator::interval_index_space_iterator ( const interval_index_space_iterator xother)

Copy constructor.

Postcondition
  • (*this) == xother

Definition at line 52 of file interval_index_space_iterator.cc.

References interval_index_space_iterator(), and invariant().

◆ interval_index_space_iterator() [3/4]

sheaf::interval_index_space_iterator::interval_index_space_iterator ( const index_space_family xid_spaces,
pod_type  xindex 
)

Constructor: Attach to state with index xindex in the family xid_spaces.

Precondition
  • conforms_to_state(xid_spaces, xindex)
Postcondition

Definition at line 71 of file interval_index_space_iterator.cc.

References attach_to(), conforms_to_state(), sheaf::index_space_iterator::id_spaces(), sheaf::explicit_index_space_iterator::index(), interval_index_space_iterator(), invariant(), and sheaf::explicit_index_space_iterator::is_attached().

◆ interval_index_space_iterator() [4/4]

sheaf::interval_index_space_iterator::interval_index_space_iterator ( const index_space_family xid_spaces,
const std::string &  xname 
)

Constructor: Attach to state with name xname in the family xid_spaces.

Precondition
  • conforms_to_state(xid_spaces, xname)
Postcondition

Definition at line 95 of file interval_index_space_iterator.cc.

References attach_to(), conforms_to_state(), sheaf::index_space_iterator::id_spaces(), invariant(), sheaf::explicit_index_space_iterator::is_attached(), sheaf::index_space_iterator::name(), and ~interval_index_space_iterator().

◆ ~interval_index_space_iterator()

sheaf::interval_index_space_iterator::~interval_index_space_iterator ( )
virtual

Destructor.

Definition at line 119 of file interval_index_space_iterator.cc.

References operator=().

Referenced by interval_index_space_iterator().

Member Function Documentation

◆ attach_to()

void sheaf::interval_index_space_iterator::attach_to ( explicit_index_space_state xstate)
protectedvirtual

◆ clone()

sheaf::interval_index_space_iterator * sheaf::interval_index_space_iterator::clone ( ) const
virtual

Virtual constructor, makes a new instance of the same type as this. If the iterator is attached, attach to the same state.

Postcondition
  • result != 0
  • is_same_type(result)
  • *result == *this

Implements sheaf::explicit_index_space_iterator.

Definition at line 371 of file interval_index_space_iterator.cc.

References interval_index_space_iterator(), sheaf::any::is_same_type(), and next().

Referenced by operator==().

◆ conforms_to_state()

bool sheaf::interval_index_space_iterator::conforms_to_state ( explicit_index_space_state xstate) const
protectedvirtual

True if this conforms to the iterator type required by the explicit id space state xstate.

Postcondition
  • is_basic_query

Implements sheaf::explicit_index_space_iterator.

Definition at line 550 of file interval_index_space_iterator.cc.

References is_ancestor_of().

Referenced by attach_to(), and interval_index_space_iterator().

◆ interval_begin()

sheaf::interval_index_space_iterator::pod_type sheaf::interval_index_space_iterator::interval_begin ( ) const

The begin of the current interval.

Definition at line 226 of file interval_index_space_iterator.cc.

References _interval_begin, and interval_end().

Referenced by sheaf::interval_index_space_record::externalize(), next_interval(), and update_interval_ids().

◆ interval_end()

sheaf::interval_index_space_iterator::pod_type sheaf::interval_index_space_iterator::interval_end ( ) const

The end of the current interval.

Definition at line 233 of file interval_index_space_iterator.cc.

References _interval_end, and update_interval_ids().

Referenced by sheaf::interval_index_space_record::externalize(), interval_begin(), and update_interval_ids().

◆ invalidate_interval_ids()

void sheaf::interval_index_space_iterator::invalidate_interval_ids ( )
protected

◆ invariant()

◆ is_ancestor_of()

bool sheaf::interval_index_space_iterator::is_ancestor_of ( const any other) const
virtual

Conformance test; true if other conforms to this.

Precondition
  • other != 0

Reimplemented from sheaf::explicit_index_space_iterator.

Definition at line 580 of file interval_index_space_iterator.cc.

References invariant().

Referenced by conforms_to_state(), operator=(), and operator==().

◆ next()

void sheaf::interval_index_space_iterator::next ( )
virtual

◆ next_interval()

void sheaf::interval_index_space_iterator::next_interval ( )

◆ operator=() [1/2]

◆ operator=() [2/2]

sheaf::interval_index_space_iterator & sheaf::interval_index_space_iterator::operator= ( const index_space_iterator xother)
virtual

Assignment operator.

Precondition
  • is_ancestor_of(&xother)
Postcondition
  • (*this) == xother

Reimplemented from sheaf::explicit_index_space_iterator.

Definition at line 315 of file interval_index_space_iterator.cc.

References invariant(), is_ancestor_of(), and operator==().

◆ operator==()

bool sheaf::interval_index_space_iterator::operator== ( const index_space_iterator xother) const
virtual

True if this is equivalent to xother.

Precondition
  • is_ancestor_of(&xother)
Postcondition

Reimplemented from sheaf::explicit_index_space_iterator.

Definition at line 340 of file interval_index_space_iterator.cc.

References _interval_begin, _interval_end, _itr, _to_hub, clone(), invariant(), is_ancestor_of(), sheaf::explicit_index_space_iterator::is_attached(), and sheaf::explicit_index_space_iterator::operator==().

Referenced by operator=().

◆ reset()

void sheaf::interval_index_space_iterator::reset ( )
virtual

◆ update_interval_ids()

void sheaf::interval_index_space_iterator::update_interval_ids ( pod_type  xinterval_begin)
protected

Update the interval ids with the beginning interval id, xinterval_begin.

Precondition
  • !is_done()
  • is_valid(xinterval_begin)
Postcondition
  • is_valid(pod())
  • is_valid(hub_pod())
  • is_valid(interval_begin())
  • is_valid(interval_end())

Definition at line 242 of file interval_index_space_iterator.cc.

References sheaf::index_space_iterator::_hub_pod, _interval_begin, _interval_end, _itr, sheaf::index_space_iterator::_pod, sheaf::index_space_iterator::hub_pod(), interval_begin(), interval_end(), invalidate_interval_ids(), sheaf::index_space_iterator::is_done(), sheaf::is_valid(), and sheaf::index_space_iterator::pod().

Referenced by interval_end(), next_interval(), and reset().

Member Data Documentation

◆ _interval_begin

pod_type sheaf::interval_index_space_iterator::_interval_begin
protected

The begin of the current interval.

Definition at line 137 of file interval_index_space_iterator.h.

Referenced by interval_begin(), invalidate_interval_ids(), operator=(), operator==(), and update_interval_ids().

◆ _interval_end

pod_type sheaf::interval_index_space_iterator::_interval_end
protected

The end of the current interval.

Definition at line 142 of file interval_index_space_iterator.h.

Referenced by interval_end(), invalidate_interval_ids(), next(), operator=(), operator==(), and update_interval_ids().

◆ _itr

to_hub_type::const_iterator sheaf::interval_index_space_iterator::_itr
protected

The stl iterator over ids.

Definition at line 132 of file interval_index_space_iterator.h.

Referenced by next_interval(), operator=(), operator==(), reset(), and update_interval_ids().

◆ _to_hub

const to_hub_type* sheaf::interval_index_space_iterator::_to_hub
protected

The interval to hub ids.

Definition at line 127 of file interval_index_space_iterator.h.

Referenced by attach_to(), next_interval(), operator=(), operator==(), and reset().


The documentation for this class was generated from the following files: