SheafSystem  0.0.0.0
sheaf::hash_index_space_state Class Reference

An hash map implementation of class scattered_insertion_index_space_state. 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_state.h>

Inheritance diagram for sheaf::hash_index_space_state:
sheaf::scattered_insertion_index_space_state sheaf::gathered_insertion_index_space_state sheaf::explicit_index_space_state sheaf::any

Public Member Functions

virtual const std::string & class_name () const
 The name of this class. More...
 
virtual hash_index_space_stateclone () const
 Virtual constructor; create a new instance of the same type at this. More...
 
- Public Member Functions inherited from sheaf::scattered_insertion_index_space_state
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_state
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() by one, if any. 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 a 0-based, contiguous interval. 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_state
virtual ~explicit_index_space_state ()
 Destructor. More...
 
const index_space_collectionhost () const
 The host collection (const version). More...
 
index_space_collectionhost ()
 The host collection (mutable version). More...
 
pod_type index () const
 The index of this id space. More...
 
const index_space_familyid_spaces () const
 The id space family for this (const version). More...
 
index_space_familyid_spaces ()
 The id space family for this (mutable version). More...
 
const hub_index_space_handlehub_id_space () const
 The hub id space. More...
 
size_type ct () const
 The number of members. More...
 
bool is_empty () const
 True if there are no ids in the space. More...
 
pod_type begin () const
 Beginning id of this space. More...
 
pod_type end () const
 Ending id of this 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...
 
virtual bool contains_glued_hub (pod_type xid) const
 True if this space contains an id equivalent to xid in the hub id space. 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(xid). More...
 
virtual pod_type glued_hub_pod (pod_type xid) const
 The pod index in the glued hub id space equivalent to xid in this id space. More...
 
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...
 
const abstract_product_structureproduct_structure () const
 The product structure for this id space (const version). More...
 
abstract_product_structureproduct_structure ()
 The product structure for this id space (mutable version). More...
 
bool has_product_structure () const
 True if this id space has a product structure. 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...
 

Friends

class hash_index_space_iterator
 
class namespace_poset
 
SHEAF_DLL_SPEC size_t deep_size (const hash_index_space_state &xn, bool xinclude_shallow)
 The deep size of hash_index_space_state& xn. More...
 

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 at the next available id space index with name xname, persistence xis_persistent, and capacity xcapacity. Returns a handle to the id space created. More...
 
static hash_index_space_handle new_space (index_space_family &xid_spaces, pod_type xid, const std::string &xname, bool xis_persistent, size_type xcapacity)
 Create a new hash id space in the id space family xid_space at the id space index xid with name xname, persistence xis_persistent, and capacity xcapacity Returns a handle to the id space created. More...
 

HASH_INDEX_SPACE_STATE FACET

 hash_index_space_state ()
 Default constructor. More...
 
 hash_index_space_state (const hash_index_space_state &xother)
 Copy constructor; disabled. More...
 
virtual ~hash_index_space_state ()
 Destructor. More...
 

GATHERED_INSERTION_INDEX_SPACE FACET

virtual void update_extrema ()
 Update the id extrema. More...
 
virtual void reserve (size_type xcapacity)
 Reserve enough memory for xcapacity number of ids. More...
 
virtual size_type capacity () const
 The number of ids reserved in memory. More...
 

MAP REPRESENTATION FACET

typedef unordered::unordered_map< pod_type, pod_typemap_type
 The type of the range id to domain id map. More...
 
typedef map_type to_domain_type
 The type of the range id to domain id map. More...
 
typedef map_type to_range_type
 The type of the domain id to range id map. More...
 
to_domain_type _to_domain
 The representation of the range id to domain id map. More...
 
to_range_type _to_range
 The representation of the domain id to range id map. More...
 
virtual void map_rep_insert_entry (pod_type xdomain_id, pod_type xrange_id)
 Inserts entry (xdomain_id, xrange_id) into the map representation. More...
 
virtual void map_rep_push_back (pod_type xrange_id)
 Inserts entry (next_id(), xrange_id) into the map representation. More...
 
virtual void map_rep_push (index_space_iterator &xitr, pod_type xrange_id)
 Inserts entry (xitr.pod(), xrange_id) into the map representation. Increments all domain ids greater than xitr.pod() by one. Sets xitr to the entry at xitr.pod()+1. More...
 
virtual size_type map_rep_remove_entry (pod_type xid, bool xis_range_id)
 Removes the entry containing range id xid (xis_range_id true) or domain id xid (xis_range_id false) from the map representation; returns the number of entries actully removed, either 0 or 1. More...
 
virtual void map_rep_remove_entry (index_space_iterator &xitr)
 Removes the equivalence associated with id xitr.pod()/ Increments xitr to the next entry if any. More...
 
virtual void map_rep_clear ()
 Removes all entrires from the map representation. More...
 
virtual void map_rep_gather ()
 Gathers the map representation into an interval. More...
 

EXPLICIT_INDEX_SPACE_STATE FACET

virtual hash_index_space_stateoperator= (const explicit_index_space_state &xother)
 Assignment operator. More...
 
virtual bool operator== (const explicit_index_space_state &xother) const
 True if this is equivalent to xother. More...
 
virtual size_type deep_size (bool xinclude_shallow) const
 The deep size of this. More...
 

INDEX SPACE FACET

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 (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 hub id space equivalent to xid in this id space. More...
 

HANDLE POOL FACET

static size_type handle_pool_ct ()
 The number of handles in the pool. More...
 
static size_type handle_pool_deep_size ()
 The deep size of the handle pool. More...
 
virtual index_space_handleget_id_space () const
 The id space handle with this state. More...
 
virtual void release_id_space (index_space_handle &xid_space) const
 Release the id space handle xid_space. More...
 
virtual bool allocated_id_space (const index_space_handle &xid_space) const
 True if and only if id space handle xid_space was allocated by the handle pool. More...
 

ITERATOR POOL FACET

static size_type iterator_pool_ct ()
 The number of iterators in the pool. More...
 
static size_type iterator_pool_deep_size ()
 The deep size of the iterator 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...
 

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::explicit_index_space_state
typedef pod_index_type pod_type
 The "plain old data" index type for this. More...
 
- Static Public Member Functions inherited from sheaf::explicit_index_space_state
static factory< explicit_index_space_state > & id_space_factory ()
 A factory for making descendants of this class. More...
 
- Protected Member Functions inherited from sheaf::scattered_insertion_index_space_state
 scattered_insertion_index_space_state ()
 Default constructor. More...
 
 scattered_insertion_index_space_state (const scattered_insertion_index_space_state &xother)
 Copy constructor; disabled. More...
 
virtual ~scattered_insertion_index_space_state ()
 Destructor. More...
 
- Protected Member Functions inherited from sheaf::gathered_insertion_index_space_state
 gathered_insertion_index_space_state ()
 Default constructor. More...
 
 gathered_insertion_index_space_state (const gathered_insertion_index_space_state &xother)
 Copy constructor; disabled. More...
 
virtual ~gathered_insertion_index_space_state ()
 Destructor. More...
 
virtual void update_extrema_after_remove ()
 Update the id extrema after a remove operation. More...
 
void update_extrema (pod_type xid)
 Update the extrema for the inserted id xid. More...
 
- Protected Member Functions inherited from sheaf::explicit_index_space_state
 explicit_index_space_state ()
 Default constructor. More...
 
 explicit_index_space_state (const explicit_index_space_state &xother)
 Copy constructor; disabled. More...
 
void new_state (index_space_family &xid_spaces, const std::string &xname, bool xis_persistent)
 Create a new id space state in the id space family xid_spaces at the next available id space index with name xname, and persistence xis_persistent. More...
 
void new_state (index_space_family &xid_spaces, pod_type xid, const std::string &xname, bool xis_persistent)
 Create a new id space state in the id space family xid_spaces at the id space index xid with name xname, and persistence xis_persistent. More...
 
void invalidate_extrema ()
 Invalidate the extrema. More...
 
void attach (explicit_index_space_handle &xid_space) const
 Attach the id space handle xid_space to this state. More...
 
void attach (explicit_index_space_iterator &xitr) const
 Attach the id space iterator xitr to this state. More...
 
- Protected Member Functions inherited from sheaf::any
 any ()
 default constructor More...
 
- Protected Attributes inherited from sheaf::explicit_index_space_state
index_space_collection_host
 The host collection. More...
 
pod_type _index
 The index of this id space. More...
 
size_type _ct
 The number of members. More...
 
pod_type _begin
 Beginning id of this space. More...
 
pod_type _end
 Ending id of this space. More...
 
bool _is_persistent
 True if this id space should be written to disk. More...
 
abstract_product_structure_product
 The product structure for this id space. More...
 

Detailed Description

An hash map implementation of class scattered_insertion_index_space_state. 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 54 of file hash_index_space_state.h.

Member Typedef Documentation

◆ map_type

typedef unordered::unordered_map<pod_type, pod_type> sheaf::hash_index_space_state::map_type
protected

The type of the range id to domain id map.

Definition at line 223 of file hash_index_space_state.h.

◆ to_domain_type

The type of the range id to domain id map.

Definition at line 228 of file hash_index_space_state.h.

◆ to_range_type

The type of the domain id to range id map.

Definition at line 238 of file hash_index_space_state.h.

Constructor & Destructor Documentation

◆ hash_index_space_state() [1/2]

sheaf::hash_index_space_state::hash_index_space_state ( )
protected

Default constructor.

Postcondition

Definition at line 132 of file hash_index_space_state.cc.

References capacity(), invariant(), sheaf::explicit_index_space_state::is_empty(), reserve(), and ~hash_index_space_state().

Referenced by clone(), and new_space().

◆ hash_index_space_state() [2/2]

sheaf::hash_index_space_state::hash_index_space_state ( const hash_index_space_state xother)
inlineprotected

Copy constructor; disabled.

Definition at line 115 of file hash_index_space_state.h.

References sheaf::gathered_insertion_index_space_state::update_extrema().

◆ ~hash_index_space_state()

sheaf::hash_index_space_state::~hash_index_space_state ( )
protectedvirtual

Destructor.

Definition at line 153 of file hash_index_space_state.cc.

References update_extrema().

Referenced by hash_index_space_state().

Member Function Documentation

◆ allocated_id_space()

bool sheaf::hash_index_space_state::allocated_id_space ( const index_space_handle xid_space) const
virtual

True if and only if id space handle xid_space was allocated by the handle pool.

Postcondition
  • is_basic_query

Implements sheaf::explicit_index_space_state.

Definition at line 820 of file hash_index_space_state.cc.

References iterator_pool_ct().

Referenced by release_id_space().

◆ allocated_iterator()

bool sheaf::hash_index_space_state::allocated_iterator ( const index_space_iterator xitr) const
virtual

True if and only if id space iterator xitr was allocated by the iterator pool.

Postcondition
  • is_basic_query

Implements sheaf::explicit_index_space_state.

Definition at line 957 of file hash_index_space_state.cc.

References class_name().

Referenced by map_rep_push(), map_rep_remove_entry(), and release_iterator().

◆ capacity()

sheaf::size_type sheaf::hash_index_space_state::capacity ( ) const
virtual

The number of ids reserved in memory.

Postcondition
  • is_basic_query

Implements sheaf::gathered_insertion_index_space_state.

Definition at line 230 of file hash_index_space_state.cc.

References _to_range, and map_rep_insert_entry().

Referenced by hash_index_space_state(), and reserve().

◆ class_name()

const std::string & sheaf::hash_index_space_state::class_name ( ) const
virtual

The name of this class.

Reimplemented from sheaf::scattered_insertion_index_space_state.

Definition at line 1009 of file hash_index_space_state.cc.

References clone().

Referenced by allocated_iterator().

◆ clone()

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

Virtual constructor; create a new instance of the same type at this.

Postcondition
  • result != 0
  • is_same_type(result)

Implements sheaf::explicit_index_space_state.

Definition at line 1017 of file hash_index_space_state.cc.

References hash_index_space_state(), sheaf::explicit_index_space_state::id_space_factory(), is_ancestor_of(), and sheaf::any::is_same_type().

Referenced by class_name().

◆ contains() [1/2]

bool sheaf::hash_index_space_state::contains ( pod_type  xid) const
virtual

True if this space contains id xid.

Postcondition
  • is_basic_query

Implements sheaf::explicit_index_space_state.

Definition at line 621 of file hash_index_space_state.cc.

References _to_range, and contains_unglued_hub().

Referenced by contains_unglued_hub(), map_rep_insert_entry(), map_rep_push(), map_rep_push_back(), map_rep_remove_entry(), operator=(), and pod().

◆ contains() [2/2]

bool sheaf::hash_index_space_state::contains ( pod_type  xid,
pod_type  xhub_id 
) const
virtual

True if this space contains an id xid equivalent to xhub_id in the hub id space.

Postcondition
  • is_basic_query

Reimplemented from sheaf::explicit_index_space_state.

Definition at line 659 of file hash_index_space_state.cc.

References _to_range, and pod().

◆ contains_unglued_hub()

bool sheaf::hash_index_space_state::contains_unglued_hub ( pod_type  xid) const
virtual

True if this space contains an id equivalent to xid in the unglued hub id space.

Postcondition
  • is_basic_query

Implements sheaf::explicit_index_space_state.

Definition at line 640 of file hash_index_space_state.cc.

References _to_domain, and contains().

Referenced by contains(), and unglued_hub_pod().

◆ deep_size()

sheaf::size_type sheaf::hash_index_space_state::deep_size ( bool  xinclude_shallow) const
virtual

The deep size of this.

Postcondition
  • result >= 0

Reimplemented from sheaf::explicit_index_space_state.

Definition at line 563 of file hash_index_space_state.cc.

References sheaf::deep_size(), and operator=().

◆ get_id_space()

sheaf::index_space_handle & sheaf::hash_index_space_state::get_id_space ( ) const
virtual

The id space handle with this state.

Postcondition
  • result.is_attached()

Implements sheaf::explicit_index_space_state.

Definition at line 773 of file hash_index_space_state.cc.

References sheaf::explicit_index_space_state::attach(), sheaf::explicit_index_space_handle::is_attached(), and release_id_space().

Referenced by handle_pool_deep_size().

◆ get_iterator()

sheaf::index_space_iterator & sheaf::hash_index_space_state::get_iterator ( ) const
virtual

Allocates an id space iterator from the iterator pool.

Postcondition
  • result.is_attached()

Implements sheaf::explicit_index_space_state.

Definition at line 910 of file hash_index_space_state.cc.

References sheaf::explicit_index_space_state::attach(), sheaf::explicit_index_space_iterator::is_attached(), and release_iterator().

Referenced by iterator_pool_deep_size().

◆ handle_pool_ct()

sheaf::size_type sheaf::hash_index_space_state::handle_pool_ct ( )
static

The number of handles in the pool.

Postcondition
  • result >= 0

Definition at line 735 of file hash_index_space_state.cc.

References handle_pool_deep_size().

Referenced by unglued_hub_pod().

◆ handle_pool_deep_size()

sheaf::size_type sheaf::hash_index_space_state::handle_pool_deep_size ( )
static

The deep size of the handle pool.

Postcondition
  • result >= 0

Definition at line 754 of file hash_index_space_state.cc.

References sheaf::deep_size(), and get_id_space().

Referenced by handle_pool_ct().

◆ invariant()

◆ is_ancestor_of()

bool sheaf::hash_index_space_state::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_state.

Definition at line 1067 of file hash_index_space_state.cc.

References invariant().

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

◆ iterator_pool_ct()

sheaf::size_type sheaf::hash_index_space_state::iterator_pool_ct ( )
static

The number of iterators in the pool.

Postcondition
  • result >= 0

Definition at line 872 of file hash_index_space_state.cc.

References iterator_pool_deep_size().

Referenced by allocated_id_space().

◆ iterator_pool_deep_size()

sheaf::size_type sheaf::hash_index_space_state::iterator_pool_deep_size ( )
static

The deep size of the iterator pool.

Postcondition
  • result >= 0

Definition at line 891 of file hash_index_space_state.cc.

References sheaf::deep_size(), and get_iterator().

Referenced by iterator_pool_ct().

◆ map_rep_clear()

void sheaf::hash_index_space_state::map_rep_clear ( )
protectedvirtual

Removes all entrires from the map representation.

Postcondition
  • -unexecutable( "map rep is empty" )

Implements sheaf::gathered_insertion_index_space_state.

Definition at line 438 of file hash_index_space_state.cc.

References _to_domain, _to_range, and map_rep_gather().

Referenced by map_rep_remove_entry().

◆ map_rep_gather()

void sheaf::hash_index_space_state::map_rep_gather ( )
protectedvirtual

Gathers the map representation into an interval.

Postcondition
  • -unexecutable( "map rep is gathered" )

Implements sheaf::gathered_insertion_index_space_state.

Definition at line 461 of file hash_index_space_state.cc.

References sheaf::explicit_index_space_state::_ct, _to_domain, _to_range, sheaf::explicit_index_space_handle::contains(), sheaf::explicit_index_space_state::hub_id_space(), and operator==().

Referenced by map_rep_clear().

◆ map_rep_insert_entry()

void sheaf::hash_index_space_state::map_rep_insert_entry ( pod_type  xdomain_id,
pod_type  xrange_id 
)
protectedvirtual

Inserts entry (xdomain_id, xrange_id) into the map representation.

Precondition
  • !contains_hub(xrange_id)
  • !contains(xdomain_id)
Postcondition
  • contains(xdomain_id, xrange_id)

Implements sheaf::scattered_insertion_index_space_state.

Definition at line 262 of file hash_index_space_state.cc.

References _to_domain, _to_range, contains(), sheaf::explicit_index_space_state::contains_hub(), and map_rep_push_back().

Referenced by capacity().

◆ map_rep_push()

void sheaf::hash_index_space_state::map_rep_push ( index_space_iterator xitr,
pod_type  xrange_id 
)
protectedvirtual

Inserts entry (xitr.pod(), xrange_id) into the map representation. Increments all domain ids greater than xitr.pod() by one. Sets xitr to the entry at xitr.pod()+1.

Precondition
  • allocated_iterator(xitr)
  • !contains_hub(xrange_id)
Todo:
Implement.

Not Implemented.

Postcondition
  • contains(old_itr_pod, xrange_id)
  • xitr.pod() == old_itr_pod+1
  • xitr.hub_pod() == old_itr_hub_pod

Implements sheaf::gathered_insertion_index_space_state.

Definition at line 315 of file hash_index_space_state.cc.

References allocated_iterator(), contains(), sheaf::explicit_index_space_state::contains_hub(), sheaf::index_space_iterator::hub_pod(), map_rep_remove_entry(), and sheaf::index_space_iterator::pod().

Referenced by map_rep_push_back().

◆ map_rep_push_back()

void sheaf::hash_index_space_state::map_rep_push_back ( pod_type  xrange_id)
protectedvirtual

Inserts entry (next_id(), xrange_id) into the map representation.

Precondition
  • !contains_hub(xrange_id)
Postcondition
  • contains(old_next_id, xrange_id)

Implements sheaf::gathered_insertion_index_space_state.

Definition at line 289 of file hash_index_space_state.cc.

References _to_domain, _to_range, contains(), sheaf::explicit_index_space_state::contains_hub(), map_rep_push(), and sheaf::gathered_insertion_index_space_state::next_id().

Referenced by map_rep_insert_entry().

◆ map_rep_remove_entry() [1/2]

sheaf::size_type sheaf::hash_index_space_state::map_rep_remove_entry ( pod_type  xid,
bool  xis_range_id 
)
protectedvirtual

Removes the entry containing range id xid (xis_range_id true) or domain id xid (xis_range_id false) from the map representation; returns the number of entries actully removed, either 0 or 1.

Postcondition
  • xis_range_id ? !contains_hub(xid) : !contains(xid)

Implements sheaf::gathered_insertion_index_space_state.

Definition at line 346 of file hash_index_space_state.cc.

References _to_domain, _to_range, contains(), and sheaf::explicit_index_space_state::contains_hub().

Referenced by map_rep_push().

◆ map_rep_remove_entry() [2/2]

void sheaf::hash_index_space_state::map_rep_remove_entry ( index_space_iterator xitr)
protectedvirtual

Removes the equivalence associated with id xitr.pod()/ Increments xitr to the next entry if any.

Precondition
  • allocated_iterator(xitr)
  • !xitr.is_done()
  • contains(xitr.pod())
Todo:
Implement.

Not Implemented.

Postcondition
  • !contains(old_itr_id)
  • !contains(old_itr_hub_id)
  • xitr.is_done() || xitr.pod() > old_itr_id

Implements sheaf::gathered_insertion_index_space_state.

Definition at line 408 of file hash_index_space_state.cc.

References allocated_iterator(), contains(), sheaf::index_space_iterator::hub_pod(), sheaf::index_space_iterator::is_done(), map_rep_clear(), and sheaf::index_space_iterator::pod().

◆ new_space() [1/2]

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

Create a new hash id space in the id space family xid_space at the next available id space index 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 40 of file hash_index_space_state.cc.

References sheaf::gathered_insertion_index_space_handle::capacity(), sheaf::hash_index_space_handle::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(), sheaf::explicit_index_space_state::new_state(), and reserve().

Referenced by sheaf::hash_index_space_handle::new_space().

◆ new_space() [2/2]

sheaf::hash_index_space_handle sheaf::hash_index_space_state::new_space ( index_space_family xid_spaces,
pod_type  xid,
const std::string &  xname,
bool  xis_persistent,
size_type  xcapacity 
)
static

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

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

Definition at line 78 of file hash_index_space_state.cc.

References sheaf::gathered_insertion_index_space_handle::capacity(), sheaf::hash_index_space_handle::conforms_to_state(), sheaf::index_space_family::contains(), hash_index_space_state(), sheaf::explicit_index_space_handle::id_spaces(), sheaf::explicit_index_space_handle::index(), sheaf::index_space_family::is_explicit_interval(), sheaf::explicit_index_space_handle::is_persistent(), sheaf::index_space_handle::name(), sheaf::explicit_index_space_state::new_state(), and reserve().

◆ operator=()

sheaf::hash_index_space_state & sheaf::hash_index_space_state::operator= ( const explicit_index_space_state xother)
protectedvirtual

Assignment operator.

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

Reimplemented from sheaf::scattered_insertion_index_space_state.

Definition at line 584 of file hash_index_space_state.cc.

References _to_domain, _to_range, contains(), invariant(), and is_ancestor_of().

Referenced by deep_size().

◆ operator==()

bool sheaf::hash_index_space_state::operator== ( const explicit_index_space_state xother) const
virtual

True if this is equivalent to xother.

Precondition
  • is_ancestor_of(&xother)
Error:
Since we still support tr1 unordered_maps the comparison operator may not be supported. See COM-374.

Reimplemented from sheaf::scattered_insertion_index_space_state.

Definition at line 537 of file hash_index_space_state.cc.

References deep_size, is_ancestor_of(), and sheaf::scattered_insertion_index_space_state::operator==().

Referenced by map_rep_gather().

◆ pod()

sheaf::explicit_index_space_state::pod_type sheaf::hash_index_space_state::pod ( pod_type  xid) const
virtual

The pod index in this space equivalent to xid in the hub id space.

Postcondition
  • !is_valid(result) || contains(result)

Implements sheaf::explicit_index_space_state.

Definition at line 680 of file hash_index_space_state.cc.

References _to_domain, contains(), sheaf::invalid_pod_index(), sheaf::is_valid(), and unglued_hub_pod().

Referenced by contains().

◆ release_id_space()

void sheaf::hash_index_space_state::release_id_space ( index_space_handle xid_space) const
virtual

Release the id space handle xid_space.

Precondition
  • allocated_id_space(xid_space)
Postcondition
  • is_basic_query

Implements sheaf::explicit_index_space_state.

Definition at line 793 of file hash_index_space_state.cc.

References allocated_id_space(), and sheaf::index_space_handle::detach().

Referenced by get_id_space().

◆ release_iterator()

void sheaf::hash_index_space_state::release_iterator ( index_space_iterator xitr) const
virtual

Returns the id space iterator xitr to the iterator pool.

Precondition
  • allocated_iterator(xitr)
Postcondition
  • is_basic_query

Implements sheaf::explicit_index_space_state.

Definition at line 930 of file hash_index_space_state.cc.

References allocated_iterator(), and sheaf::index_space_iterator::detach().

Referenced by get_iterator().

◆ reserve()

void sheaf::hash_index_space_state::reserve ( size_type  xcapacity)
virtual

Reserve enough memory for xcapacity number of ids.

Postcondition

Implements sheaf::gathered_insertion_index_space_state.

Definition at line 204 of file hash_index_space_state.cc.

References _to_domain, _to_range, capacity(), and invariant().

Referenced by hash_index_space_state(), new_space(), and update_extrema().

◆ unglued_hub_pod()

sheaf::explicit_index_space_state::pod_type sheaf::hash_index_space_state::unglued_hub_pod ( pod_type  xid) const
virtual

The pod index in the hub id space equivalent to xid in this id space.

Postcondition
  • !is_valid(result) || contains_unglued_hub(result)

Implements sheaf::explicit_index_space_state.

Definition at line 702 of file hash_index_space_state.cc.

References _to_range, contains_unglued_hub(), handle_pool_ct(), sheaf::invalid_pod_index(), and sheaf::is_valid().

Referenced by pod().

◆ update_extrema()

void sheaf::hash_index_space_state::update_extrema ( )
virtual

Friends And Related Function Documentation

◆ deep_size

SHEAF_DLL_SPEC size_t deep_size ( const hash_index_space_state xn,
bool  xinclude_shallow 
)
friend

The deep size of hash_index_space_state& xn.

Referenced by sheaf::deep_size(), and operator==().

Member Data Documentation

◆ _to_domain

to_domain_type sheaf::hash_index_space_state::_to_domain
protected

◆ _to_range

to_range_type sheaf::hash_index_space_state::_to_range
protected

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