CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::DB::jsonDatabase< Configuration > Class Referenceabstract

#include <jsonDatabase.hh>

+ Inheritance diagram for CASM::DB::jsonDatabase< Configuration >:

Detailed Description

ValueType must have:

  • std::string ValueType::name() const

Derived classes must implement public methods:

Derived ConfigDatabase must implement public methods:

This JSON Database has the following structure json["version"] contains the version (format) of this database. json["supercells"] is a JSON object that corresponds to a map in which the supercell name is the key and the value is the object that contains all Each configuration is indexed within this object. json["config_id"] is a map of supercell name (key) to the next index (value)to be assigned to the newly enumerated configuration within the given supercell

Definition at line 120 of file jsonDatabase.hh.

Public Types

typedef DatabaseIterator< Configurationiterator
 
typedef Configuration value_type
 
typedef Index size_type
 
typedef Base::MostDerived MostDerived
 

Public Member Functions

 jsonDatabase (const PrimClex &_primclex)
 
jsonDatabase< Configuration > & open () override
 
void commit () override
 
void close () override
 
iterator begin () const override
 
iterator end () const override
 
size_type size () const override
 
std::pair< iterator, bool > insert (const Configuration &config) override
 
std::pair< iterator, bool > insert (const Configuration &&config) override
 
iterator update (const Configuration &config) override
 Update record. More...
 
iterator erase (iterator pos) override
 
iterator find (const std::string &name_or_alias) const override
 
boost::iterator_range< iteratorscel_range (const std::string &scelname) const override
 Range of Configuration in a particular supecell. More...
 
iterator search (const Configuration &config) const override
 Find canonical Configuration in database by comparing DoF. More...
 
Index scel_range_size (const std::string &scelname) const
 Number of Configuration in a particular supercell. More...
 
bool empty () const
 
std::pair< iterator, bool > set_alias (const std::string &name_or_alias, const std::string &alias)
 For setting an alias. More...
 
std::string name (const std::string &name_or_alias) const
 
std::string alias (const std::string &name_or_alias) const
 Get alias from name_or_alias. More...
 
void insert (InputIt first, InputIt last)
 
virtual iterator erase (iterator pos)=0
 
size_type erase (const std::string &name_or_alias)
 
size_type erase (const Configuration &obj)
 
virtual size_type count (const std::string &name_or_alias) const
 
Selection< Configuration > & master_selection ()
 
const Selection< Configuration > & master_selection () const
 
const PrimClexprimclex () const
 
const Structureprim () const
 
double crystallography_tol () const
 

Protected Member Functions

void read_aliases ()
 
void write_aliases ()
 
void clear_name (const _ValueType &obj) const
 Only ValDatabase<ValueType> is allowed to do clear_name. More...
 
void set_id (const _ValueType &obj, Index id) const
 Only ValDatabase<ValueType> is allowed to do a const id change. More...
 
void set_id (const _ValueType &obj, std::string id) const
 Only ValDatabase<ValueType> is allowed to do a const id change. More...
 
MostDerivedderived ()
 
const MostDerivedderived () const
 

Private Types

typedef std::set< Configuration >::iterator base_iterator
 
typedef DatabaseSetIterator< Configuration, jsonDatabase< Configuration > > db_set_iterator
 

Private Member Functions

std::pair< iterator, bool > _on_insert_or_emplace (std::pair< base_iterator, bool > &result, bool is_new)
 
iterator _iterator (base_iterator name_it) const
 

Private Attributes

bool m_is_open
 
std::map< std::string, base_iteratorm_name_to_config
 
std::set< Configurationm_config_list
 
std::map< std::string, std::pair< base_iterator, base_iterator > > m_scel_range
 
std::map< std::string, Indexm_config_id
 
std::map< std::string, std::string > m_name_to_alias
 
std::map< std::string, std::string > m_alias_to_name
 
Selection< Configurationm_master_selection
 
const PrimClexm_primclex
 

Member Typedef Documentation

◆ base_iterator

◆ db_set_iterator

◆ iterator

Definition at line 223 of file Database.hh.

◆ MostDerived

typedef Base::MostDerived CASM::HasPrimClex< CRTPBase< DatabaseBase > >::MostDerived
inherited

Definition at line 16 of file HasPrimClex.hh.

◆ size_type

Definition at line 225 of file Database.hh.

◆ value_type

Definition at line 224 of file Database.hh.

Constructor & Destructor Documentation

◆ jsonDatabase()

Definition at line 220 of file jsonDatabase.cc.

Member Function Documentation

◆ _iterator()

iterator CASM::DB::jsonDatabase< Configuration >::_iterator ( base_iterator  name_it) const
inlineprivate

Definition at line 168 of file jsonDatabase.hh.

◆ _on_insert_or_emplace()

std::pair< jsonDatabase< Configuration >::iterator, bool > CASM::DB::jsonDatabase< Configuration >::_on_insert_or_emplace ( std::pair< base_iterator, bool > &  result,
bool  is_new 
)
private

Update m_name_and_alias and m_scel_range after performing an insert or emplace

Update m_name_to_config and m_scel_range after performing an insert or emplace

Definition at line 469 of file jsonDatabase.cc.

◆ alias()

std::string CASM::DB::ValDatabase< Configuration >::alias ( const std::string &  name_or_alias) const
inherited

Get alias from name_or_alias.

Get alias from name_or_alias

  • Checks if name_or_alias is a known alias
  • If yes, returns name_or_alias
  • If no, checks if name_or_alias is a name corresponding to a known alias
    • If yes, returns alias
    • If no, (because name_or_alias is an invalid name, or because name_or_alias is a valid name without an alias), returns empty string

Definition at line 250 of file Database_impl.hh.

◆ begin()

jsonDatabase< Configuration >::iterator CASM::DB::jsonDatabase< Configuration >::begin ( ) const
overridevirtual

Implements CASM::DB::ValDatabase< Configuration >.

Definition at line 373 of file jsonDatabase.cc.

◆ clear_name()

void CASM::DB::ValDatabase< Configuration >::clear_name ( const _ValueType &  obj) const
inlineprotectedinherited

Only ValDatabase<ValueType> is allowed to do clear_name.

Definition at line 298 of file Database.hh.

◆ close()

void CASM::DB::jsonDatabase< Configuration >::close ( )
overridevirtual

Implements CASM::DB::DatabaseBase.

Definition at line 365 of file jsonDatabase.cc.

◆ commit()

void CASM::DB::jsonDatabase< Configuration >::commit ( )
overridevirtual

Implements CASM::DB::ValDatabase< Configuration >.

Definition at line 304 of file jsonDatabase.cc.

◆ count()

virtual size_type CASM::DB::ValDatabase< Configuration >::count ( const std::string &  name_or_alias) const
inlinevirtualinherited

Definition at line 268 of file Database.hh.

◆ crystallography_tol()

double CASM::HasPrimClex< CRTPBase< DatabaseBase > >::crystallography_tol
inherited

Definition at line 21 of file HasPrimClex_impl.hh.

◆ derived() [1/2]

template<typename _MostDerived >
MostDerived& notstd::CRTPBase< _MostDerived >::derived ( )
inlineprotectedinherited

Definition at line 13 of file CRTPBase.hh.

◆ derived() [2/2]

template<typename _MostDerived >
const MostDerived& notstd::CRTPBase< _MostDerived >::derived ( ) const
inlineprotectedinherited

Definition at line 15 of file CRTPBase.hh.

◆ empty()

bool CASM::DB::ValDatabase< Configuration >::empty ( ) const
inlineinherited

Definition at line 236 of file Database.hh.

◆ end()

Implements CASM::DB::ValDatabase< Configuration >.

Definition at line 378 of file jsonDatabase.cc.

◆ erase() [1/4]

size_type CASM::DB::ValDatabase< Configuration >::erase ( const ValueType &  obj)
inlineinherited

Definition at line 266 of file Database.hh.

◆ erase() [2/4]

size_type CASM::DB::ValDatabase< Configuration >::erase ( const std::string &  name_or_alias)
inlineinherited

Definition at line 262 of file Database.hh.

◆ erase() [3/4]

Definition at line 407 of file jsonDatabase.cc.

◆ erase() [4/4]

virtual iterator CASM::DB::ValDatabase< Configuration >::erase ( iterator  pos)
pure virtualinherited

◆ find()

jsonDatabase< Configuration >::iterator CASM::DB::jsonDatabase< Configuration >::find ( const std::string &  name_or_alias) const
overridevirtual

Implements CASM::DB::ValDatabase< Configuration >.

Definition at line 429 of file jsonDatabase.cc.

◆ insert() [1/3]

std::pair< jsonDatabase< Configuration >::iterator, bool > CASM::DB::jsonDatabase< Configuration >::insert ( const Configuration &&  config)
overridevirtual

Implements CASM::DB::ValDatabase< Configuration >.

Definition at line 395 of file jsonDatabase.cc.

◆ insert() [2/3]

std::pair< jsonDatabase< Configuration >::iterator, bool > CASM::DB::jsonDatabase< Configuration >::insert ( const Configuration config)
overridevirtual

Implements CASM::DB::ValDatabase< Configuration >.

Definition at line 388 of file jsonDatabase.cc.

◆ insert() [3/3]

void CASM::DB::ValDatabase< Configuration >::insert ( InputIt  first,
InputIt  last 
)
inlineinherited

Definition at line 256 of file Database.hh.

◆ master_selection() [1/2]

Selection<Configuration >& CASM::DB::ValDatabase< Configuration >::master_selection ( )
inlineinherited

Definition at line 285 of file Database.hh.

◆ master_selection() [2/2]

const Selection<Configuration >& CASM::DB::ValDatabase< Configuration >::master_selection ( ) const
inlineinherited

Definition at line 287 of file Database.hh.

◆ name()

std::string CASM::DB::ValDatabase< Configuration >::name ( const std::string &  name_or_alias) const
inherited

Get name from name_or_alias

  • Checks if name_or_alias is a known alias
  • If known alias, returns associated name
  • If not known alias, assumed to be a name and returns name_or_alias

Definition at line 247 of file Database_impl.hh.

◆ open()

Implements CASM::DB::DatabaseBase.

Definition at line 223 of file jsonDatabase.cc.

◆ prim()

const Structure & CASM::HasPrimClex< CRTPBase< DatabaseBase > >::prim
inherited

Definition at line 19 of file HasPrimClex_impl.hh.

◆ primclex()

const PrimClex& CASM::DB::DatabaseBase::primclex ( ) const
inlineinherited

Definition at line 35 of file Database.hh.

◆ read_aliases()

void CASM::DB::ValDatabase< Configuration >::read_aliases
protectedinherited

Definition at line 292 of file Database_impl.hh.

◆ scel_range()

boost::iterator_range< jsonDatabase< Configuration >::iterator > CASM::DB::jsonDatabase< Configuration >::scel_range ( const std::string &  scelname) const
overridevirtual

Range of Configuration in a particular supecell.

Range of Configuration in a particular supecell

Implements CASM::DB::Database< Configuration >.

Definition at line 440 of file jsonDatabase.cc.

◆ scel_range_size()

Index CASM::DB::Database< Configuration >::scel_range_size ( const std::string &  scelname) const
inherited

Number of Configuration in a particular supercell.

Number of Configuration in a particular supecell.

Definition at line 11 of file ConfigDatabase.cc.

◆ search()

jsonDatabase< Configuration >::iterator CASM::DB::jsonDatabase< Configuration >::search ( const Configuration config) const
overridevirtual

Find canonical Configuration in database by comparing DoF.

Find canonical Configuration in database by comparing DoF

Parameters
configA Configuration in canonical form
  • Find in set<Configuration>

Reimplemented from CASM::DB::Database< Configuration >.

Definition at line 457 of file jsonDatabase.cc.

◆ set_alias()

std::pair< typename ValDatabase< Configuration >::iterator, bool > CASM::DB::ValDatabase< Configuration >::set_alias ( const std::string &  name_or_alias,
const std::string &  alias 
)
inherited

For setting an alias.

Definition at line 239 of file Database_impl.hh.

◆ set_id() [1/2]

void CASM::DB::ValDatabase< Configuration >::set_id ( const _ValueType &  obj,
Index  id 
) const
inlineprotectedinherited

Only ValDatabase<ValueType> is allowed to do a const id change.

Definition at line 304 of file Database.hh.

◆ set_id() [2/2]

void CASM::DB::ValDatabase< Configuration >::set_id ( const _ValueType &  obj,
std::string  id 
) const
inlineprotectedinherited

Only ValDatabase<ValueType> is allowed to do a const id change.

Definition at line 310 of file Database.hh.

◆ size()

Implements CASM::DB::ValDatabase< Configuration >.

Definition at line 382 of file jsonDatabase.cc.

◆ update()

jsonDatabase< Configuration >::iterator CASM::DB::jsonDatabase< Configuration >::update ( const Configuration config)
overridevirtual

Update record.

Implements CASM::DB::Database< Configuration >.

Definition at line 401 of file jsonDatabase.cc.

◆ write_aliases()

void CASM::DB::ValDatabase< Configuration >::write_aliases
protectedinherited

Definition at line 294 of file Database_impl.hh.

Member Data Documentation

◆ m_alias_to_name

std::map<std::string, std::string> CASM::DB::ValDatabase< Configuration >::m_alias_to_name
privateinherited

Definition at line 319 of file Database.hh.

◆ m_config_id

std::map<std::string, Index> CASM::DB::jsonDatabase< Configuration >::m_config_id
private

Definition at line 184 of file jsonDatabase.hh.

◆ m_config_list

Definition at line 178 of file jsonDatabase.hh.

◆ m_is_open

bool CASM::DB::jsonDatabase< Configuration >::m_is_open
private

Definition at line 172 of file jsonDatabase.hh.

◆ m_master_selection

Selection<Configuration > CASM::DB::ValDatabase< Configuration >::m_master_selection
privateinherited

Definition at line 322 of file Database.hh.

◆ m_name_to_alias

std::map<std::string, std::string> CASM::DB::ValDatabase< Configuration >::m_name_to_alias
privateinherited

Definition at line 316 of file Database.hh.

◆ m_name_to_config

std::map<std::string, base_iterator> CASM::DB::jsonDatabase< Configuration >::m_name_to_config
private

Definition at line 175 of file jsonDatabase.hh.

◆ m_primclex

const PrimClex* CASM::DB::DatabaseBase::m_primclex
privateinherited

Definition at line 38 of file Database.hh.

◆ m_scel_range

std::map<std::string, std::pair<base_iterator, base_iterator> > CASM::DB::jsonDatabase< Configuration >::m_scel_range
private

Definition at line 181 of file jsonDatabase.hh.


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