Teuchos Package Browser (Single Doxygen Collection)  Version of the Day
Private Types | Private Member Functions | Private Attributes | List of all members
Teuchos::StringIndexedOrderedValueObjectContainer< ObjType > Class Template Reference

String indexed ordered value-type object container class. More...

#include <Teuchos_StringIndexedOrderedValueObjectContainer.hpp>

Inheritance diagram for Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >:
Inheritance graph
[legend]

Private Types

typedef KeyObjectPair< ObjType > key_and_obj_t
 
typedef std::deque< key_and_obj_tkey_and_obj_array_t
 
typedef std::map< std::string, OrdinalIndexkey_to_idx_map_t
 
- Private Types inherited from Teuchos::StringIndexedOrderedValueObjectContainerBase
typedef Teuchos_Ordinal Ordinal
 Ordinal used for the index. More...
 

Private Member Functions

void assertOrdinalIndex (const Ordinal idx) const
 
key_and_obj_tgetNonconstKeyAndObject (const Ordinal idx)
 
const key_and_obj_tgetKeyAndObject (const Ordinal idx) const
 
void throwInvalidKeyError (const Ordinal idx, const std::string &key) const
 
Ordinal assertKeyGetOrdinal (const std::string &key) const
 
- Private Member Functions inherited from Teuchos::StringIndexedOrderedValueObjectContainerBase
virtual ~StringIndexedOrderedValueObjectContainerBase ()
 Destructor. More...
 

Private Attributes

key_and_obj_array_t key_and_obj_array_
 Stories objects contiguously along with key strings. More...
 
key_to_idx_map_t key_to_idx_map_
 Provides lookups of key -> ordinal index into above array. More...
 

Public types.

typedef StringIndexedOrderedValueObjectContainerBase::Ordinal Ordinal
 Ordinal used for the index. More...
 
typedef FilteredIterator< typename key_and_obj_array_t::iterator, SelectActive< ObjType > > Iterator
 The non-const iterator type. More...
 
typedef FilteredIterator< typename key_and_obj_array_t::const_iterator, SelectActive< ObjType > > ConstIterator
 The const iterator type. More...
 

Constructors/Destructors/Info

 StringIndexedOrderedValueObjectContainer ()
 
Ordinal numObjects () const
 
Ordinal numStorage () const
 

Set, get, and remove functions

Ordinal setObj (const std::string &key, const ObjType &obj)
 Set (or reset) object by value and return its ordinal index. More...
 
Ordinal getObjOrdinalIndex (const std::string &key) const
 Get the ordinal index given the string key. More...
 
Ptr< ObjType > getNonconstObjPtr (const Ordinal &idx)
 Get a nonconst semi-persisting association with the stored object indexed by ordinal. More...
 
Ptr< const ObjType > getObjPtr (const Ordinal &idx) const
 Get a const semi-persisting association with the stored object indexed by ordinal. More...
 
Ptr< ObjType > getNonconstObjPtr (const std::string &key)
 Get a nonconst semi-persisting association with the stored object indexed by string key. More...
 
Ptr< const ObjType > getObjPtr (const std::string &key) const
 Get a const semi-persisting association with the stored object indexed by string key. More...
 
void removeObj (const Ordinal &idx)
 Remove an object given its ordinal index. More...
 
void removeObj (const std::string &key)
 Remove an object given its string key. More...
 

Iterator access

Iterator nonconstBegin ()
 
Iterator nonconstEnd ()
 
ConstIterator begin () const
 
ConstIterator end () const
 

Additional Inherited Members

- Static Private Member Functions inherited from Teuchos::StringIndexedOrderedValueObjectContainerBase
static Ordinal getInvalidOrdinal ()
 Return the value for invalid ordinal. More...
 

Detailed Description

template<class ObjType>
class Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >

String indexed ordered value-type object container class.

This class is a simple utility class for managing the storage and retrievel of value-type objects which the following features/properties:

The design of this class comes with a few important limitations:

Todo:
Implement compression of unused entries. This will invalidate the indexes but will allow handling of lots of inserts and deletes of elements.

Definition at line 178 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

Member Typedef Documentation

◆ key_and_obj_t

template<class ObjType>
typedef KeyObjectPair<ObjType> Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::key_and_obj_t
private

◆ key_and_obj_array_t

template<class ObjType>
typedef std::deque<key_and_obj_t> Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::key_and_obj_array_t
private

◆ key_to_idx_map_t

template<class ObjType>
typedef std::map<std::string, OrdinalIndex> Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::key_to_idx_map_t
private

◆ Ordinal

Ordinal used for the index.

Definition at line 196 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

◆ Iterator

template<class ObjType>
typedef FilteredIterator<typename key_and_obj_array_t::iterator, SelectActive<ObjType> > Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::Iterator

The non-const iterator type.

Definition at line 200 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

◆ ConstIterator

template<class ObjType>
typedef FilteredIterator<typename key_and_obj_array_t::const_iterator, SelectActive<ObjType> > Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::ConstIterator

The const iterator type.

Definition at line 204 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

Constructor & Destructor Documentation

◆ StringIndexedOrderedValueObjectContainer()

Member Function Documentation

◆ numObjects()

template<class ObjType >
StringIndexedOrderedValueObjectContainer< ObjType >::Ordinal Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::numObjects ( ) const

◆ numStorage()

template<class ObjType >
StringIndexedOrderedValueObjectContainer< ObjType >::Ordinal Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::numStorage ( ) const

◆ setObj()

template<class ObjType>
StringIndexedOrderedValueObjectContainer< ObjType >::Ordinal Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::setObj ( const std::string &  key,
const ObjType &  obj 
)

Set (or reset) object by value and return its ordinal index.

If the object with the given key index does not exist, it will be added. If an object with the given key does not exist, it will be created.

Returns
Returns the ordinal index by which the object can be looked up with.

Definition at line 474 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

◆ getObjOrdinalIndex()

template<class ObjType >
StringIndexedOrderedValueObjectContainer< ObjType >::Ordinal Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::getObjOrdinalIndex ( const std::string &  key) const
inline

Get the ordinal index given the string key.

If the key does not exist, then getInvalidOrdinal() is returned.

Definition at line 462 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

◆ getNonconstObjPtr() [1/2]

template<class ObjType >
Ptr< ObjType > Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::getNonconstObjPtr ( const Ordinal idx)
inline

Get a nonconst semi-persisting association with the stored object indexed by ordinal.

Definition at line 351 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

◆ getObjPtr() [1/2]

template<class ObjType >
Ptr< const ObjType > Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::getObjPtr ( const Ordinal idx) const
inline

Get a const semi-persisting association with the stored object indexed by ordinal.

Definition at line 360 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

◆ getNonconstObjPtr() [2/2]

template<class ObjType >
Ptr< ObjType > Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::getNonconstObjPtr ( const std::string &  key)
inline

Get a nonconst semi-persisting association with the stored object indexed by string key.

Definition at line 369 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

◆ getObjPtr() [2/2]

template<class ObjType >
Ptr< const ObjType > Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::getObjPtr ( const std::string &  key) const
inline

Get a const semi-persisting association with the stored object indexed by string key.

Definition at line 378 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

◆ removeObj() [1/2]

template<class ObjType >
void Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::removeObj ( const Ordinal idx)

Remove an object given its ordinal index.

Each object is errased by assigning to a default-constructed ObjType(). This, for example, will wipe out the reference count for a smart pointer class or will unsize an array, etc..

Definition at line 493 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

◆ removeObj() [2/2]

template<class ObjType >
void Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::removeObj ( const std::string &  key)

Remove an object given its string key.

Definition at line 502 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

◆ nonconstBegin()

template<class ObjType >
StringIndexedOrderedValueObjectContainer< ObjType >::Iterator Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::nonconstBegin ( )
inline

◆ nonconstEnd()

template<class ObjType >
StringIndexedOrderedValueObjectContainer< ObjType >::Iterator Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::nonconstEnd ( )
inline

◆ begin()

template<class ObjType >
StringIndexedOrderedValueObjectContainer< ObjType >::ConstIterator Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::begin ( ) const
inline

◆ end()

template<class ObjType >
StringIndexedOrderedValueObjectContainer< ObjType >::ConstIterator Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::end ( ) const
inline

◆ assertOrdinalIndex()

template<class ObjType >
void Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::assertOrdinalIndex ( const Ordinal  idx) const
private

◆ getNonconstKeyAndObject()

template<class ObjType >
StringIndexedOrderedValueObjectContainer< ObjType >::key_and_obj_t & Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::getNonconstKeyAndObject ( const Ordinal  idx)
private

◆ getKeyAndObject()

template<class ObjType >
const StringIndexedOrderedValueObjectContainer< ObjType >::key_and_obj_t & Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::getKeyAndObject ( const Ordinal  idx) const
private

◆ throwInvalidKeyError()

template<class ObjType >
void Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::throwInvalidKeyError ( const Ordinal  idx,
const std::string &  key 
) const
private

◆ assertKeyGetOrdinal()

template<class ObjType >
StringIndexedOrderedValueObjectContainer< ObjType >::Ordinal Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::assertKeyGetOrdinal ( const std::string &  key) const
private

Member Data Documentation

◆ key_and_obj_array_

template<class ObjType>
key_and_obj_array_t Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::key_and_obj_array_
private

Stories objects contiguously along with key strings.

Definition at line 294 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.

◆ key_to_idx_map_

template<class ObjType>
key_to_idx_map_t Teuchos::StringIndexedOrderedValueObjectContainer< ObjType >::key_to_idx_map_
private

Provides lookups of key -> ordinal index into above array.

Definition at line 296 of file Teuchos_StringIndexedOrderedValueObjectContainer.hpp.


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