SheafSystem  0.0.0.0
sheaf::array_index_space_handle Class Reference

An array implementation of class scattered_insertion_index_space_handle. This representation is intended to efficiently represent id spaces that are positive and dense, that is, the domain ids are in the domain (~0, ~end()) and hence the id to hub id map can be efficiently stored in an array. In particular it is intended for id spaces used to index arrays, in which case the ids are in the domain [0, end()). More...

#include <array_index_space_handle.h>

Inheritance diagram for sheaf::array_index_space_handle:
sheaf::scattered_insertion_index_space_handle sheaf::gathered_insertion_index_space_handle sheaf::explicit_index_space_handle sheaf::index_space_handle sheaf::any

Friends

class array_index_space_state
 

SPACE FACTORY FACET

static array_index_space_handle new_space (index_space_family &xid_spaces, const std::string &xname, bool xis_persistent, size_type xcapacity)
 Create a new array id space in the id space family xid_space with name xname, persistence xis_persistent, and capacity xcapacity.. Returns a handle to the id space created. More...
 

ARRAY_INDEX_SPACE_HANDLE FACET

 array_index_space_handle ()
 Default constructor. More...
 
 array_index_space_handle (const array_index_space_handle &xother)
 Copy constructor. More...
 
 array_index_space_handle (const index_space_family &xid_spaces, pod_type xindex)
 Constructor: Attach to state with index xindex in the family xid_spaces. More...
 
 array_index_space_handle (const index_space_family &xid_spaces, const std::string &xname)
 Constructor: Attach to state with name xname in the family xid_spaces. More...
 
array_index_space_handleoperator= (const array_index_space_handle &xother)
 Assignment operator; attach this handle to the state of xother. synonym for attach_to(xother). More...
 
virtual ~array_index_space_handle ()
 Destructor. More...
 
 array_index_space_handle (array_index_space_state &xstate)
 Constructor: Attach to state xstate. More...
 
array_index_space_statestate ()
 The array id space state (mutable version). More...
 
const array_index_space_statestate () const
 The array id space state (const version). More...
 

INDEX_SPACE_HANDLE FACET

virtual array_index_space_handleoperator= (const index_space_handle &xother)
 Assignment operator; attach this handle to the state of xother. synonym for attach_to(xother). More...
 
virtual array_index_space_handleclone () const
 Virtual constructor, makes a new instance of the same type as this. If the handle is attached, attach to the same state. More...
 

HANDLE FACET

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...
 

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_handle
typedef pod_index_type pod_type
 The "plain old data" index type for this. More...
 
- Public Member Functions inherited from sheaf::scattered_insertion_index_space_handle
 scattered_insertion_index_space_handle ()
 Default constructor. More...
 
 scattered_insertion_index_space_handle (const scattered_insertion_index_space_handle &xother)
 Copy constructor. More...
 
 scattered_insertion_index_space_handle (const index_space_family &xid_spaces, pod_type xindex)
 Constructor: Attach to state with index xindex in the family xid_spaces. More...
 
 scattered_insertion_index_space_handle (const index_space_family &xid_spaces, const std::string &xname)
 Constructor: Attach to state with name xname in the family xid_spaces. More...
 
scattered_insertion_index_space_handleoperator= (const scattered_insertion_index_space_handle &xother)
 Assignment operator; attach this handle to the state of xother. synonym for attach_to(xother). More...
 
virtual ~scattered_insertion_index_space_handle ()
 Destructor. More...
 
void insert (pod_type xid, const scoped_index &xhub_id)
 Make id xid in this id space equivalent to xhub_id in the hub id space. synonym for insert(xid, xhub_id.hub_pod()). More...
 
void insert (pod_type xid, pod_type xhub_id)
 Make id xid in this id space equivalent to xhub_id in the hub id space. More...
 
- Public Member Functions inherited from sheaf::gathered_insertion_index_space_handle
 gathered_insertion_index_space_handle ()
 Default constructor. More...
 
 gathered_insertion_index_space_handle (const gathered_insertion_index_space_handle &xother)
 Copy constructor. More...
 
 gathered_insertion_index_space_handle (const index_space_family &xid_spaces, pod_type xindex)
 Constructor: Attach to state with index xindex in the family xid_spaces. More...
 
 gathered_insertion_index_space_handle (const index_space_family &xid_spaces, const std::string &xname)
 Constructor: Attach to state with name xname in the family xid_spaces. More...
 
gathered_insertion_index_space_handleoperator= (const gathered_insertion_index_space_handle &xother)
 Assignment operator; attach this handle to the state of xother. synonym for attach_to(xother). More...
 
virtual ~gathered_insertion_index_space_handle ()
 Destructor. More...
 
void push_back (const scoped_index &xhub_id)
 Make the next id in this space equivalent to xhub_id in the hub id space. synonym for push_back(xhub_id.hub_pod()). More...
 
void push_back (pod_type xid)
 Make the next id in this space equivalent to xhub_id in the hub id space. More...
 
void push (index_space_iterator &xitr, const scoped_index &xhub_id)
 Makes id xitr.id() in this id space equivalent to xhub_id in the hub id space. Increments all ids greater than xitr.id() if any by one. Xitr will be set to the entry with id, xitr.id()+1. synonym for push(xitr, xhub_id.pod()). More...
 
void push (index_space_iterator &xitr, pod_type xhub_id)
 Makes id xitr.id() in this id space equivalent to xhub_id in the hub id space. Increments all ids greater than xitr.id() if any by one. Xitr will be set to the entry with id, xitr.id()+1. More...
 
pod_type next_id () const
 The id inserted by the next call to push_back. More...
 
size_type remove (const scoped_index &xid, bool update_extrema)
 Removes the equivalence associated with xid.hub_pod(). synonym for remove_hub(xid.hub_pod(), xupdate_extrema). Returns the number of entries actually removed, either 0 or 1. More...
 
size_type remove (pod_type xid, bool update_extrema)
 Removes the equivalence associated with id xid. Returns the number of entries actually removed, either 0 or 1. More...
 
size_type remove_hub (pod_type xhub_id, bool update_extrema)
 Removes the equivalence associated with hub id xhub_id. Returns the number of entries actually removed, either 0 or 1. More...
 
void remove (index_space_iterator &xitr, bool update_extrema)
 Removes the equivalence associated with id xitr.pod(). Increments xitr to the next entry if any. More...
 
void gather ()
 Gathers this id space into an interval. More...
 
void update_extrema ()
 Update the id extrema. More...
 
void reserve (size_type xcapacity)
 Reserve enough memory for xcapacity number of ids. More...
 
size_type capacity () const
 The number of ids reserved in memory. More...
 
void clear ()
 Delete all ids. More...
 
void put_is_persistent (bool xis_persistent)
 Set if this id space should be written to disk. More...
 
- Public Member Functions inherited from sheaf::explicit_index_space_handle
 explicit_index_space_handle ()
 Default constructor. More...
 
 explicit_index_space_handle (const explicit_index_space_handle &xother)
 Copy constructor. More...
 
 explicit_index_space_handle (const index_space_family &xid_spaces, pod_type xindex)
 Constructor: Attach to state with index xindex in the family xid_spaces. More...
 
 explicit_index_space_handle (const index_space_family &xid_spaces, const std::string &xname)
 Constructor: Attach to state with name xname in the family xid_spaces. More...
 
explicit_index_space_handleoperator= (const explicit_index_space_handle &xother)
 Assignment operator; attach this handle to the state of xother. synonym for attach_to(xother). More...
 
virtual ~explicit_index_space_handle ()
 Destructor. More...
 
virtual const index_space_familyid_spaces () const
 The id space family for this (const version). More...
 
virtual index_space_familyid_spaces ()
 The id space family for this (mutable version). More...
 
virtual size_type ct () const
 The number of members. More...
 
virtual pod_type begin () const
 Beginning id of this space. More...
 
virtual pod_type end () const
 Ending id of this space. More...
 
virtual bool contains (pod_type xid) const
 True if this space contains id xid. More...
 
virtual bool contains_unglued_hub (pod_type xid) const
 True if this space contains an id equivalent to xid in the unglued hub id space. More...
 
virtual bool contains_glued_hub (pod_type xid) const
 True if this space contains an id equivalent to xid in the glued hub id space. More...
 
virtual bool contains (pod_type xid, pod_type xhub_id) const
 True if this space contains an id xid equivalent to xhub_id in the hub id space. More...
 
virtual pod_type pod (pod_type xid) const
 The pod index in this space equivalent to xid in the hub id space. More...
 
virtual pod_type unglued_hub_pod (pod_type xid) const
 The pod index in the unglued hub id space equivalent to xid in this id space. More...
 
virtual pod_type glued_hub_pod (pod_type xid) const
 The pod index in the hub id space equivalent to xid in this id space. synonym for unglued_hub_pod(xid). More...
 
virtual bool is_persistent () const
 True if this id space should be written to disk. More...
 
virtual void new_product_structure (const abstract_product_structure &xproduct)
 Creates a new product structure for this id space by cloning the product structure, xproduct. More...
 
virtual void delete_product_structure ()
 Deletes the product structure for this id space. More...
 
virtual const abstract_product_structureproduct_structure () const
 The product structure for this id space (const version). More...
 
virtual abstract_product_structureproduct_structure ()
 The product structure for this id space (mutable version). More...
 
virtual bool has_product_structure () const
 True if this id space has a product structure. 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 handle 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 handle form its state, if any. More...
 
virtual index_space_handleget_id_space () const
 Allocates an id space handle from the handle pool. More...
 
virtual void release_id_space () const
 Returns this id space handle to the handle pool. More...
 
virtual bool allocated_id_space () const
 True if and only if this id space handle was allocated by the handle pool. More...
 
virtual index_space_iteratorget_iterator () const
 Allocates an id space iterator from the iterator pool. More...
 
virtual void release_iterator (index_space_iterator &xitr) const
 Returns the id space iterator xitr to the iterator pool. More...
 
virtual bool allocated_iterator (const index_space_iterator &xitr) const
 True if and only if id space iterator xitr was allocated by the iterator pool. More...
 
- Public Member Functions inherited from sheaf::index_space_handle
virtual ~index_space_handle ()
 Destructor. More...
 
bool operator== (const index_space_handle &xother) const
 True if this is a handle has the same state as xother. More...
 
const hub_index_space_handlehub_id_space () const
 The hub id space. More...
 
bool is_empty () const
 True if there are no ids in the space. More...
 
bool is_gathered () const
 True if begin() == 0 and end() == ct(). More...
 
bool contains (const scoped_index &xid) const
 True if this space contains an id equivalent to xid. synonym for contains_hub(xid.hub_pod()). More...
 
bool contains_hub (pod_type xid) const
 True if this space contains an id equivalent to xid in the unglued hub id space. synonym for contains_unglued_hub(xid) More...
 
bool contains (pod_type xid, const scoped_index &xhub_id) const
 True if this space contains an id xid equivalent to xhub_id in the hub id space. synonym for contains(xid, xhub_id.hub_pod()). More...
 
pod_type pod (const scoped_index &xid) const
 The pod index in this space equivalent to xid. synonym for pod(xid.hub_pod()). More...
 
pod_type hub_pod (pod_type xid) const
 The pod index in the unglued hub id space equivalent to xid in this id space; synonym for unglued_hub_pod(pod_type). More...
 
template<typename T >
const T & product_structure () const
 The product structure of type T for this id space (const version). More...
 
template<typename T >
T & product_structure ()
 The product structure of type T for this id space (mutable version). More...
 
template<typename T >
bool product_structure_conforms_to () const
 True if the product structure for this id space conforms to type T. More...
 
std::string name () const
 Name of this space. More...
 
void put_name (const std::string &xname)
 Associate name xname with this id 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 &xother)
 Attach to the state of the id space xother. 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...
 
bool conforms_to_state (const index_space_handle &xother) const
 True if this conforms to the handle type required by the state of xother. 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::scattered_insertion_index_space_handle
scattered_insertion_index_space_statestate ()
 The mutable id space state (mutable version). More...
 
const scattered_insertion_index_space_statestate () const
 The mutable id space state (const version). More...
 
- Protected Member Functions inherited from sheaf::gathered_insertion_index_space_handle
gathered_insertion_index_space_statestate ()
 The gathered_insertion id space state (gathered_insertion version). More...
 
const gathered_insertion_index_space_statestate () const
 The gathered_insertion id space state (const version). More...
 
- Protected Member Functions inherited from sheaf::explicit_index_space_handle
explicit_index_space_statestate ()
 The explicit state (mutable version). More...
 
const explicit_index_space_statestate () const
 The explicit state (const version). More...
 
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...
 
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_handle
 index_space_handle ()
 Default constructor. More...
 
 index_space_handle (const index_space_handle &xother)
 Copy constructor; disabled. More...
 
- Protected Member Functions inherited from sheaf::any
 any ()
 default constructor More...
 
- Protected Attributes inherited from sheaf::explicit_index_space_handle
explicit_index_space_state_state
 The explicit state. More...
 

Detailed Description

An array implementation of class scattered_insertion_index_space_handle. This representation is intended to efficiently represent id spaces that are positive and dense, that is, the domain ids are in the domain (~0, ~end()) and hence the id to hub id map can be efficiently stored in an array. In particular it is intended for id spaces used to index arrays, in which case the ids are in the domain [0, end()).

Definition at line 46 of file array_index_space_handle.h.

Constructor & Destructor Documentation

◆ array_index_space_handle() [1/5]

sheaf::array_index_space_handle::array_index_space_handle ( )

Default constructor.

Postcondition

Definition at line 81 of file array_index_space_handle.cc.

References invariant().

Referenced by array_index_space_handle(), clone(), new_space(), and ~array_index_space_handle().

◆ array_index_space_handle() [2/5]

sheaf::array_index_space_handle::array_index_space_handle ( const array_index_space_handle xother)

Copy constructor.

Postcondition
  • (*this) == xother

Definition at line 98 of file array_index_space_handle.cc.

References array_index_space_handle(), and invariant().

◆ array_index_space_handle() [3/5]

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

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

Precondition
  • xid_spaces.contains(xindex)
  • conforms_to_state(xid_spaces, xindex)
Postcondition

Definition at line 117 of file array_index_space_handle.cc.

References array_index_space_handle(), sheaf::explicit_index_space_handle::attach_to(), conforms_to_state(), sheaf::index_space_family::contains(), sheaf::explicit_index_space_handle::id_spaces(), sheaf::explicit_index_space_handle::index(), invariant(), and sheaf::explicit_index_space_handle::is_attached().

◆ array_index_space_handle() [4/5]

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

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

Precondition
  • xid_spaces.contains(xname)
  • conforms_to_state(xid_spaces, xname)
Postcondition

Definition at line 142 of file array_index_space_handle.cc.

References sheaf::explicit_index_space_handle::attach_to(), conforms_to_state(), sheaf::index_space_family::contains(), sheaf::explicit_index_space_handle::id_spaces(), invariant(), sheaf::explicit_index_space_handle::is_attached(), sheaf::index_space_handle::name(), and operator=().

◆ ~array_index_space_handle()

sheaf::array_index_space_handle::~array_index_space_handle ( )
virtual

Destructor.

Definition at line 189 of file array_index_space_handle.cc.

References array_index_space_handle().

Referenced by operator=().

◆ array_index_space_handle() [5/5]

sheaf::array_index_space_handle::array_index_space_handle ( array_index_space_state xstate)
protected

Constructor: Attach to state xstate.

Postcondition

Definition at line 207 of file array_index_space_handle.cc.

References sheaf::explicit_index_space_handle::attach_to(), invariant(), sheaf::explicit_index_space_handle::is_attached(), and state().

Member Function Documentation

◆ clone()

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

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

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

Reimplemented from sheaf::scattered_insertion_index_space_handle.

Definition at line 314 of file array_index_space_handle.cc.

References array_index_space_handle(), conforms_to_state(), and sheaf::any::is_same_type().

Referenced by operator=().

◆ conforms_to_state()

bool sheaf::array_index_space_handle::conforms_to_state ( const index_space_collection xhost,
pod_type  xlocal_id 
) const
virtual

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.

Precondition
  • xhost.contains(xlocal_id)
Postcondition
  • is_basic_query

Reimplemented from sheaf::scattered_insertion_index_space_handle.

Definition at line 346 of file array_index_space_handle.cc.

References sheaf::index_space_collection::contains(), is_ancestor_of(), and state().

Referenced by array_index_space_handle(), clone(), new_space(), sheaf::array_index_space_state::new_space(), and operator=().

◆ invariant()

◆ is_ancestor_of()

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

Conformance test; true if other conforms to this.

Precondition
  • other != 0

Reimplemented from sheaf::scattered_insertion_index_space_handle.

Definition at line 380 of file array_index_space_handle.cc.

References invariant().

Referenced by conforms_to_state().

◆ new_space()

sheaf::array_index_space_handle sheaf::array_index_space_handle::new_space ( index_space_family xid_spaces,
const std::string &  xname,
bool  xis_persistent,
size_type  xcapacity 
)
static

Create a new array id space in the id space family xid_space with name xname, persistence xis_persistent, and capacity xcapacity.. Returns a handle to the id space created.

Precondition
  • !xname.empty()
  • !xid_spaces.contains(xname)
  • xcapacity >= 0
Postcondition
  • &result.id_spaces() == &xid_spaces
  • xid_spaces.contains(xname)
  • result.conforms_to_state(xname)
  • result.is_persistent() == xis_persistent
  • result.name() == xname
  • result.capacity() >= xcapacity

Definition at line 34 of file array_index_space_handle.cc.

References array_index_space_handle(), sheaf::gathered_insertion_index_space_handle::capacity(), conforms_to_state(), sheaf::index_space_family::contains(), sheaf::explicit_index_space_handle::id_spaces(), sheaf::explicit_index_space_handle::is_persistent(), sheaf::index_space_handle::name(), and sheaf::array_index_space_state::new_space().

◆ operator=() [1/2]

sheaf::array_index_space_handle & sheaf::array_index_space_handle::operator= ( const array_index_space_handle xother)

Assignment operator; attach this handle to the state of xother. synonym for attach_to(xother).

Precondition
  • xother.is_attached() ? conforms_to_state(xother) : true
Postcondition
  • (*this) == xother

Definition at line 168 of file array_index_space_handle.cc.

References sheaf::explicit_index_space_handle::attach_to(), conforms_to_state(), invariant(), sheaf::explicit_index_space_handle::is_attached(), and ~array_index_space_handle().

Referenced by array_index_space_handle(), and state().

◆ operator=() [2/2]

sheaf::array_index_space_handle & sheaf::array_index_space_handle::operator= ( const index_space_handle xother)
virtual

Assignment operator; attach this handle to the state of xother. synonym for attach_to(xother).

Precondition
  • xother.is_attached() ? conforms_to_state(xother) : true
Postcondition
  • (*this) == xother

Reimplemented from sheaf::scattered_insertion_index_space_handle.

Definition at line 292 of file array_index_space_handle.cc.

References sheaf::explicit_index_space_handle::attach_to(), clone(), conforms_to_state(), invariant(), and sheaf::index_space_handle::is_attached().

◆ state() [1/2]

sheaf::array_index_space_state & sheaf::array_index_space_handle::state ( )
protected

The array id space state (mutable version).

Precondition
Postcondition
  • is_basic_query

Definition at line 228 of file array_index_space_handle.cc.

References sheaf::explicit_index_space_handle::is_attached().

Referenced by array_index_space_handle(), and conforms_to_state().

◆ state() [2/2]

const sheaf::array_index_space_state & sheaf::array_index_space_handle::state ( ) const
protected

The array id space state (const version).

Precondition
Postcondition
  • is_basic_query

Definition at line 250 of file array_index_space_handle.cc.

References sheaf::explicit_index_space_handle::is_attached(), and operator=().


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