SheafSystem
0.0.0.0
|
An hash map implementation of class scattered_insertion_index_space_handle. This representation is intended to efficiently represent id spaces that are possibly negative and are sparse, that is, end() is much greater than ct() and hence uses hash maps to represent both directions of the map. More...
#include <hash_index_space_handle.h>
Friends | |
class | hash_index_space_state |
SPACE FACTORY FACET | |
static hash_index_space_handle | new_space (index_space_family &xid_spaces, const std::string &xname, bool xis_persistent, size_type xcapacity) |
Create a new hash 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... | |
HASH_INDEX_SPACE_HANDLE FACET | |
hash_index_space_handle () | |
Default constructor. More... | |
hash_index_space_handle (const hash_index_space_handle &xother) | |
Copy constructor. More... | |
hash_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... | |
hash_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... | |
hash_index_space_handle & | operator= (const hash_index_space_handle &xother) |
Assignment operator; attach this handle to the state of xother. synonym for attach_to(xother). More... | |
virtual | ~hash_index_space_handle () |
Destructor. More... | |
hash_index_space_handle (hash_index_space_state &xstate) | |
Constructor: Attach to state xstate. More... | |
hash_index_space_state & | state () |
The hash id space state (mutable version). More... | |
const hash_index_space_state & | state () const |
The hash id space state (const version). More... | |
INDEX_SPACE_HANDLE FACET | |
virtual hash_index_space_handle & | operator= (const index_space_handle &xother) |
Assignment operator; attach this handle to the state of xother. synonym for attach_to(xother). More... | |
virtual hash_index_space_handle * | clone () 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_handle & | operator= (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_handle & | operator= (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_handle & | operator= (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_family & | id_spaces () const |
The id space family for this (const version). More... | |
virtual index_space_family & | id_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_structure & | product_structure () const |
The product structure for this id space (const version). More... | |
virtual abstract_product_structure & | product_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_collection & | host () 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_handle & | get_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_iterator & | get_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_handle & | hub_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_state & | state () |
The mutable id space state (mutable version). More... | |
const scattered_insertion_index_space_state & | state () const |
The mutable id space state (const version). More... | |
Protected Member Functions inherited from sheaf::gathered_insertion_index_space_handle | |
gathered_insertion_index_space_state & | state () |
The gathered_insertion id space state (gathered_insertion version). More... | |
const gathered_insertion_index_space_state & | state () const |
The gathered_insertion id space state (const version). More... | |
Protected Member Functions inherited from sheaf::explicit_index_space_handle | |
explicit_index_space_state & | state () |
The explicit state (mutable version). More... | |
const explicit_index_space_state & | state () 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_state * | state (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_state * | state (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... | |
An hash map implementation of class scattered_insertion_index_space_handle. This representation is intended to efficiently represent id spaces that are possibly negative and are sparse, that is, end() is much greater than ct() and hence uses hash maps to represent both directions of the map.
Definition at line 44 of file hash_index_space_handle.h.
sheaf::hash_index_space_handle::hash_index_space_handle | ( | ) |
Default constructor.
Definition at line 81 of file hash_index_space_handle.cc.
References invariant().
Referenced by clone(), hash_index_space_handle(), new_space(), and ~hash_index_space_handle().
sheaf::hash_index_space_handle::hash_index_space_handle | ( | const hash_index_space_handle & | xother | ) |
Copy constructor.
Definition at line 98 of file hash_index_space_handle.cc.
References hash_index_space_handle(), and invariant().
sheaf::hash_index_space_handle::hash_index_space_handle | ( | const index_space_family & | xid_spaces, |
pod_type | xindex | ||
) |
Constructor: Attach to state with index xindex in the family xid_spaces.
Definition at line 117 of file hash_index_space_handle.cc.
References sheaf::explicit_index_space_handle::attach_to(), conforms_to_state(), sheaf::index_space_family::contains(), hash_index_space_handle(), sheaf::explicit_index_space_handle::id_spaces(), sheaf::explicit_index_space_handle::index(), invariant(), and sheaf::explicit_index_space_handle::is_attached().
sheaf::hash_index_space_handle::hash_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.
Definition at line 142 of file hash_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=().
|
virtual |
Destructor.
Definition at line 189 of file hash_index_space_handle.cc.
References hash_index_space_handle().
Referenced by operator=().
|
protected |
Constructor: Attach to state xstate.
Definition at line 207 of file hash_index_space_handle.cc.
References sheaf::explicit_index_space_handle::attach_to(), invariant(), sheaf::explicit_index_space_handle::is_attached(), and state().
|
virtual |
Virtual constructor, makes a new instance of the same type as this. If the handle is attached, attach to the same state.
Reimplemented from sheaf::scattered_insertion_index_space_handle.
Definition at line 314 of file hash_index_space_handle.cc.
References conforms_to_state(), hash_index_space_handle(), and sheaf::any::is_same_type().
Referenced by operator=().
|
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.
Reimplemented from sheaf::scattered_insertion_index_space_handle.
Definition at line 346 of file hash_index_space_handle.cc.
References sheaf::index_space_collection::contains(), is_ancestor_of(), and state().
Referenced by clone(), hash_index_space_handle(), new_space(), sheaf::hash_index_space_state::new_space(), and operator=().
|
virtual |
Class invariant.
Reimplemented from sheaf::scattered_insertion_index_space_handle.
Definition at line 401 of file hash_index_space_handle.cc.
References sheaf::any::disable_invariant_check(), sheaf::any::enable_invariant_check(), sheaf::scattered_insertion_index_space_handle::invariant(), and sheaf::any::invariant_check().
Referenced by hash_index_space_handle(), is_ancestor_of(), and operator=().
|
virtual |
Conformance test; true if other conforms to this.
Reimplemented from sheaf::scattered_insertion_index_space_handle.
Definition at line 380 of file hash_index_space_handle.cc.
References invariant().
Referenced by conforms_to_state().
|
static |
Create a new hash 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.
Definition at line 34 of file hash_index_space_handle.cc.
References sheaf::gathered_insertion_index_space_handle::capacity(), conforms_to_state(), sheaf::index_space_family::contains(), hash_index_space_handle(), sheaf::explicit_index_space_handle::id_spaces(), sheaf::explicit_index_space_handle::is_persistent(), sheaf::index_space_handle::name(), and sheaf::hash_index_space_state::new_space().
sheaf::hash_index_space_handle & sheaf::hash_index_space_handle::operator= | ( | const hash_index_space_handle & | xother | ) |
Assignment operator; attach this handle to the state of xother. synonym for attach_to(xother).
Definition at line 168 of file hash_index_space_handle.cc.
References sheaf::explicit_index_space_handle::attach_to(), conforms_to_state(), invariant(), sheaf::explicit_index_space_handle::is_attached(), and ~hash_index_space_handle().
Referenced by hash_index_space_handle(), and state().
|
virtual |
Assignment operator; attach this handle to the state of xother. synonym for attach_to(xother).
Reimplemented from sheaf::scattered_insertion_index_space_handle.
Definition at line 292 of file hash_index_space_handle.cc.
References sheaf::explicit_index_space_handle::attach_to(), clone(), conforms_to_state(), invariant(), and sheaf::index_space_handle::is_attached().
|
protected |
The hash id space state (mutable version).
Definition at line 228 of file hash_index_space_handle.cc.
References sheaf::explicit_index_space_handle::is_attached().
Referenced by conforms_to_state(), and hash_index_space_handle().
|
protected |
The hash id space state (const version).
Definition at line 250 of file hash_index_space_handle.cc.
References sheaf::explicit_index_space_handle::is_attached(), and operator=().