CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator > Class Template Reference

#include <DatabaseNameIterator.hh>

+ Inheritance diagram for CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >:

Detailed Description

template<typename ValueType, typename DatabaseType, typename ObjIterator>
class CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >

DatabaseIterator for implementations using std::map<std::string, ObjIterator>

For example, jsonDatabase<Configuration>, stores:

  • a std::set<Configuration> to efficiently check for unique Configuration
  • and a std::map<std::string, std::set<Configuration>::iterator> to efficiently find Configuration by name. By iterating over the map, configurations will be iterated in name order rather than Configuration sort order.

DatabaseIterators must implement public methods:

DatabaseIterators must implement private methods:

Definition at line 33 of file DatabaseNameIterator.hh.

Public Types

typedef ValueType value_type
 
typedef const value_typereference
 

Public Member Functions

 DatabaseNameIterator ()
 
std::string name () const override
 
std::unique_ptr< DatabaseIteratorBase< ValueType > > clone () const
 

Private Types

typedef std::map< std::string, ObjIterator >::const_iterator base_iterator
 

Private Member Functions

 DatabaseNameIterator (base_iterator _it)
 
base_iterator base () const
 
bool equal (const DatabaseIteratorBase< ValueType > &other) const override
 
void increment () override
 
const ValueType & dereference () const override
 
DatabaseNameIterator_clone () const override
 

Private Attributes

friend DatabaseType
 
base_iterator m_it
 
friend DatabaseIterator< ValueType >
 

Member Typedef Documentation

◆ base_iterator

template<typename ValueType , typename DatabaseType , typename ObjIterator >
typedef std::map<std::string, ObjIterator>::const_iterator CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >::base_iterator
private

Definition at line 47 of file DatabaseNameIterator.hh.

◆ reference

template<typename ValueType >
typedef const value_type& CASM::DB::DatabaseIteratorBase< ValueType >::reference
inherited

Definition at line 86 of file Database.hh.

◆ value_type

template<typename ValueType >
typedef ValueType CASM::DB::DatabaseIteratorBase< ValueType >::value_type
inherited

Definition at line 85 of file Database.hh.

Constructor & Destructor Documentation

◆ DatabaseNameIterator() [1/2]

template<typename ValueType , typename DatabaseType , typename ObjIterator >
CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >::DatabaseNameIterator ( )
inline

Definition at line 35 of file DatabaseNameIterator.hh.

◆ DatabaseNameIterator() [2/2]

template<typename ValueType , typename DatabaseType , typename ObjIterator >
CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >::DatabaseNameIterator ( base_iterator  _it)
inlineprivate

Definition at line 49 of file DatabaseNameIterator.hh.

Member Function Documentation

◆ _clone()

template<typename ValueType , typename DatabaseType , typename ObjIterator >
DatabaseNameIterator* CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >::_clone ( ) const
inlineoverrideprivatevirtual

◆ base()

template<typename ValueType , typename DatabaseType , typename ObjIterator >
base_iterator CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >::base ( ) const
inlineprivate

Definition at line 51 of file DatabaseNameIterator.hh.

◆ clone()

template<typename ValueType , typename DatabaseType , typename ObjIterator >
std::unique_ptr<DatabaseIteratorBase<ValueType> > CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >::clone ( ) const
inline

Definition at line 39 of file DatabaseNameIterator.hh.

◆ dereference()

template<typename ValueType , typename DatabaseType , typename ObjIterator >
const ValueType& CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >::dereference ( ) const
inlineoverrideprivatevirtual

◆ equal()

template<typename ValueType , typename DatabaseType , typename ObjIterator >
bool CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >::equal ( const DatabaseIteratorBase< ValueType > &  other) const
inlineoverrideprivatevirtual

◆ increment()

template<typename ValueType , typename DatabaseType , typename ObjIterator >
void CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >::increment ( )
inlineoverrideprivatevirtual

◆ name()

template<typename ValueType , typename DatabaseType , typename ObjIterator >
std::string CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >::name ( ) const
inlineoverridevirtual

Member Data Documentation

◆ DatabaseIterator< ValueType >

template<typename ValueType >
friend CASM::DB::DatabaseIteratorBase< ValueType >::DatabaseIterator< ValueType >
privateinherited

Definition at line 82 of file Database.hh.

◆ DatabaseType

template<typename ValueType , typename DatabaseType , typename ObjIterator >
friend CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >::DatabaseType
private

Definition at line 44 of file DatabaseNameIterator.hh.

◆ m_it

template<typename ValueType , typename DatabaseType , typename ObjIterator >
base_iterator CASM::DB::DatabaseNameIterator< ValueType, DatabaseType, ObjIterator >::m_it
private

Definition at line 72 of file DatabaseNameIterator.hh.


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