CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::DatumFormatterAdapter< ExternalType, InternalType > Class Template Reference

#include <DatumFormatterAdapter.hh>

+ Inheritance diagram for CASM::DatumFormatterAdapter< ExternalType, InternalType >:

Detailed Description

template<typename ExternalType, typename InternalType>
class CASM::DatumFormatterAdapter< ExternalType, InternalType >

Adapt DatumFormatter to reuse with different types

Definition at line 18 of file DatumFormatterAdapter.hh.

Public Types

using DataObject = ExternalType
 
using difference_type = typename BaseDatumFormatter< ExternalType >::difference_type
 
using DictType = typename BaseDatumFormatter< ExternalType >::DictType
 

Public Member Functions

 DatumFormatterAdapter (const std::string &_name, const std::string &_desc, adapter::Adapter< InternalType, ExternalType > _adapt, BaseDatumFormatter< InternalType > const &_base_formatter)
 
 DatumFormatterAdapter (adapter::Adapter< InternalType, ExternalType > _adapt, BaseDatumFormatter< InternalType > const &_base_formatter)
 
virtual ~DatumFormatterAdapter ()
 Allow polymorphic deletion. More...
 
DatumFormatterClass type () const override
 
const DictTypehome () const
 const Access the dictionary containing this formatter, set during DictType::lookup More...
 
void set_home (const DictType &home) const
 Set the dictionary containing this formatter, set during DictType::lookup. More...
 
std::unique_ptr< DatumFormatterAdapter< ExternalType, InternalType > > clone () const
 
bool init (ExternalType const &_template_obj) const override
 Perform all initialization steps using _template_obj. Returns true if initialization is successful and false if _template_obj has insufficient data to complete initialization. More...
 
bool validate (ExternalType const &_data_obj) const override
 Returns true if _data_obj has valid values for requested data. More...
 
std::vector< std::string > col_header (ExternalType const &_template_obj) const override
 Returns a header string for each scalar produced by the formatter parsing the entries in the col_header should reproduce the exact query described by the formatter. Ex: "clex(formation_energy)" or "comp(a)", "comp(c)". More...
 
std::string long_header (ExternalType const &_template_obj) const override
 Returns a long expression for each scalar produced by the formatter parsing the long_header should reproduce the exact query described by the formatter Ex: "clex(formation_energy)" or "comp(a) comp(c)". More...
 
std::string short_header (ExternalType const &_template_obj) const override
 Returns a short expression for the formatter parsing the short_header should allow the formatter to be recreated (but the short header does not specify a subset of the elements) Ex: "clex(formation_energy)" or "comp". More...
 
Index num_passes (ExternalType const &_data_obj) const override
 
void print (ExternalType const &_data_obj, std::ostream &_stream, Index pass_index=0) const override
 
void inject (ExternalType const &_data_obj, DataStream &_stream, Index pass_index=0) const override
 
jsonParserto_json (ExternalType const &_data_obj, jsonParser &json) const override
 
bool parse_args (const std::string &args) override
 
const std::string & name () const
 Returns a name for the formatter, which becomes the tag used for parsing. More...
 
const std::string & description () const
 Returns a short description of the formatter and its allowed arguments (if any). This description is used to automatically generate help screens. More...
 
void set_home (const DictType &home) const
 Set the dictionary containing this formatter, set during DictType::lookup. More...
 

Protected Types

typedef multivector< Index >::X< 2 > IndexContainer
 

Protected Member Functions

void _parse_index_expression (const std::string &_expr)
 
void _add_rule (const std::vector< Index > &new_rule) const
 
const IndexContainer_index_rules () const
 

Private Member Functions

BaseDatumFormatter< ExternalType > * _clone () const override
 Make an exact copy of the formatter (including any initialized members) More...
 

Private Attributes

adapter::Adapter< InternalType, ExternalType > m_adapt
 
notstd::cloneable_ptr< BaseDatumFormatter< InternalType > > m_base_ptr
 
std::string m_name
 
std::string m_description
 
IndexContainer m_index_rules
 
const DictTypem_home
 

Member Typedef Documentation

◆ DataObject

template<typename ExternalType , typename InternalType >
using CASM::DatumFormatterAdapter< ExternalType, InternalType >::DataObject = ExternalType

Definition at line 20 of file DatumFormatterAdapter.hh.

◆ DictType

template<typename ExternalType , typename InternalType >
using CASM::DatumFormatterAdapter< ExternalType, InternalType >::DictType = typename BaseDatumFormatter<ExternalType>::DictType

Definition at line 23 of file DatumFormatterAdapter.hh.

◆ difference_type

template<typename ExternalType , typename InternalType >
using CASM::DatumFormatterAdapter< ExternalType, InternalType >::difference_type = typename BaseDatumFormatter<ExternalType>::difference_type

Definition at line 21 of file DatumFormatterAdapter.hh.

◆ IndexContainer

typedef multivector<Index>::X<2> CASM::BaseDatumFormatter< ExternalType >::IndexContainer
protectedinherited

Definition at line 459 of file DataFormatter.hh.

Constructor & Destructor Documentation

◆ DatumFormatterAdapter() [1/2]

template<typename ExternalType , typename InternalType >
CASM::DatumFormatterAdapter< ExternalType, InternalType >::DatumFormatterAdapter ( const std::string &  _name,
const std::string &  _desc,
adapter::Adapter< InternalType, ExternalType >  _adapt,
BaseDatumFormatter< InternalType > const &  _base_formatter 
)
inline

Construct with apapter function and base formatter. Use different name and description than base formatter.

Definition at line 27 of file DatumFormatterAdapter.hh.

◆ DatumFormatterAdapter() [2/2]

template<typename ExternalType , typename InternalType >
CASM::DatumFormatterAdapter< ExternalType, InternalType >::DatumFormatterAdapter ( adapter::Adapter< InternalType, ExternalType >  _adapt,
BaseDatumFormatter< InternalType > const &  _base_formatter 
)
inline

Construct with apapter function and base formatter. Use same name and description as base formatter.

Definition at line 36 of file DatumFormatterAdapter.hh.

◆ ~DatumFormatterAdapter()

template<typename ExternalType , typename InternalType >
virtual CASM::DatumFormatterAdapter< ExternalType, InternalType >::~DatumFormatterAdapter ( )
inlinevirtual

Allow polymorphic deletion.

Definition at line 44 of file DatumFormatterAdapter.hh.

Member Function Documentation

◆ _add_rule()

void CASM::BaseDatumFormatter< ExternalType >::_add_rule ( const std::vector< Index > &  new_rule) const
inlineprotectedinherited

Definition at line 472 of file DataFormatter.hh.

◆ _clone()

template<typename ExternalType , typename InternalType >
BaseDatumFormatter<ExternalType>* CASM::DatumFormatterAdapter< ExternalType, InternalType >::_clone ( ) const
inlineoverrideprivatevirtual

Make an exact copy of the formatter (including any initialized members)

Implements CASM::BaseDatumFormatter< ExternalType >.

Definition at line 113 of file DatumFormatterAdapter.hh.

◆ _index_rules()

const IndexContainer& CASM::BaseDatumFormatter< ExternalType >::_index_rules ( ) const
inlineprotectedinherited

Definition at line 476 of file DataFormatter.hh.

◆ _parse_index_expression()

void CASM::BaseDatumFormatter< DataObject >::_parse_index_expression ( const std::string &  _expr)
protectedinherited

Derived DatumFormatters have some optional functionality for parsing index expressions in order to make it easy to handle ranges such as:

formatter_name(3,4:8)

in which case, DerivedDatumFormatter::parse_args() is called with the string "3,4:8" by dispatching that string to BaseDatumFormatter::_parse_index_expression(), m_index_rules will be populated with {{3,4},{3,5},{3,6},{3,7},{3,8}}

Definition at line 470 of file DataFormatter_impl.hh.

◆ clone()

template<typename ExternalType , typename InternalType >
std::unique_ptr<DatumFormatterAdapter<ExternalType, InternalType> > CASM::DatumFormatterAdapter< ExternalType, InternalType >::clone ( ) const
inline

Definition at line 56 of file DatumFormatterAdapter.hh.

◆ col_header()

template<typename ExternalType , typename InternalType >
std::vector<std::string> CASM::DatumFormatterAdapter< ExternalType, InternalType >::col_header ( ExternalType const &  _template_obj) const
inlineoverridevirtual

Returns a header string for each scalar produced by the formatter parsing the entries in the col_header should reproduce the exact query described by the formatter. Ex: "clex(formation_energy)" or "comp(a)", "comp(c)".

  • Default uses short_header

Reimplemented from CASM::BaseDatumFormatter< ExternalType >.

Definition at line 70 of file DatumFormatterAdapter.hh.

◆ description()

const std::string& CASM::BaseDatumFormatter< ExternalType >::description ( ) const
inlineinherited

Returns a short description of the formatter and its allowed arguments (if any). This description is used to automatically generate help screens.

Definition at line 352 of file DataFormatter.hh.

◆ home()

template<typename ExternalType , typename InternalType >
const DictType& CASM::DatumFormatterAdapter< ExternalType, InternalType >::home ( ) const
inline

const Access the dictionary containing this formatter, set during DictType::lookup

Definition at line 50 of file DatumFormatterAdapter.hh.

◆ init()

template<typename ExternalType , typename InternalType >
bool CASM::DatumFormatterAdapter< ExternalType, InternalType >::init ( ExternalType const &  _template_obj) const
inlineoverridevirtual

Perform all initialization steps using _template_obj. Returns true if initialization is successful and false if _template_obj has insufficient data to complete initialization.

Reimplemented from CASM::BaseDatumFormatter< ExternalType >.

Definition at line 62 of file DatumFormatterAdapter.hh.

◆ inject()

template<typename ExternalType , typename InternalType >
void CASM::DatumFormatterAdapter< ExternalType, InternalType >::inject ( ExternalType const &  _data_obj,
DataStream _stream,
Index  pass_index = 0 
) const
inlineoverridevirtual

Stream selected data from _data_obj to _stream, while specifying which output pass is requested If implementation does not depend on pass_index, it may safely be ignored

Implements CASM::BaseDatumFormatter< ExternalType >.

Definition at line 95 of file DatumFormatterAdapter.hh.

◆ long_header()

template<typename ExternalType , typename InternalType >
std::string CASM::DatumFormatterAdapter< ExternalType, InternalType >::long_header ( ExternalType const &  _template_obj) const
inlineoverridevirtual

Returns a long expression for each scalar produced by the formatter parsing the long_header should reproduce the exact query described by the formatter Ex: "clex(formation_energy)" or "comp(a) comp(c)".

  • Default uses col_header

Reimplemented from CASM::BaseDatumFormatter< ExternalType >.

Definition at line 75 of file DatumFormatterAdapter.hh.

◆ name()

const std::string& CASM::BaseDatumFormatter< ExternalType >::name ( ) const
inlineinherited

Returns a name for the formatter, which becomes the tag used for parsing.

Definition at line 347 of file DataFormatter.hh.

◆ num_passes()

template<typename ExternalType , typename InternalType >
Index CASM::DatumFormatterAdapter< ExternalType, InternalType >::num_passes ( ExternalType const &  _data_obj) const
inlineoverridevirtual

If data must be printed on multiple rows, returns number of rows needed to output all data from _data_obj DataFormatter class will subsequently pass over _data_obj multiple times to complete printing (if necessary)

Reimplemented from CASM::BaseDatumFormatter< ExternalType >.

Definition at line 83 of file DatumFormatterAdapter.hh.

◆ parse_args()

template<typename ExternalType , typename InternalType >
bool CASM::DatumFormatterAdapter< ExternalType, InternalType >::parse_args ( const std::string &  args)
inlineoverridevirtual

If DatumFormatter accepts arguments, parse them here. Arguments are assumed to be passed from the command line via: formattername(argument1,argument2,...)

from which DerivedDatumFormatter::parse_args() receives the string "argument1,argument2,..." Returns true if parse is successful, false if not (e.g., takes no arguments, already initialized, malformed input, etc).

Reimplemented from CASM::BaseDatumFormatter< ExternalType >.

Definition at line 105 of file DatumFormatterAdapter.hh.

◆ print()

template<typename ExternalType , typename InternalType >
void CASM::DatumFormatterAdapter< ExternalType, InternalType >::print ( ExternalType const &  _data_obj,
std::ostream &  _stream,
Index  pass_index = 0 
) const
inlineoverridevirtual

Print formatted data from _data_obj to _stream, while specifying which output pass is requested If implementation does not depend on pass_index, it may safely be ignored

Implements CASM::BaseDatumFormatter< ExternalType >.

Definition at line 90 of file DatumFormatterAdapter.hh.

◆ set_home() [1/2]

void CASM::BaseDatumFormatter< ExternalType >::set_home ( const DictType home) const
inlineinherited

Set the dictionary containing this formatter, set during DictType::lookup.

Definition at line 364 of file DataFormatter.hh.

◆ set_home() [2/2]

template<typename ExternalType , typename InternalType >
void CASM::DatumFormatterAdapter< ExternalType, InternalType >::set_home ( const DictType home) const
inline

Set the dictionary containing this formatter, set during DictType::lookup.

Definition at line 54 of file DatumFormatterAdapter.hh.

◆ short_header()

template<typename ExternalType , typename InternalType >
std::string CASM::DatumFormatterAdapter< ExternalType, InternalType >::short_header ( ExternalType const &  _template_obj) const
inlineoverridevirtual

Returns a short expression for the formatter parsing the short_header should allow the formatter to be recreated (but the short header does not specify a subset of the elements) Ex: "clex(formation_energy)" or "comp".

Reimplemented from CASM::BaseDatumFormatter< ExternalType >.

Definition at line 79 of file DatumFormatterAdapter.hh.

◆ to_json()

template<typename ExternalType , typename InternalType >
jsonParser& CASM::DatumFormatterAdapter< ExternalType, InternalType >::to_json ( ExternalType const &  _data_obj,
jsonParser json 
) const
inlineoverridevirtual

Assumes that 'json' object is simply assigned, and it is the job of DataFormatter (or some other managing entity) to pass the correct 'json' object. Ex: DerivedDatumFormatter my_formatter; initialize(my_formatter); // does some set of initialization steps jsonParser my_big_data_object; my_formatter.to_json(my_data_object, my_big_data_object["place_to_write"]["my_formatter_data"]);

Implements CASM::BaseDatumFormatter< ExternalType >.

Definition at line 100 of file DatumFormatterAdapter.hh.

◆ type()

template<typename ExternalType , typename InternalType >
DatumFormatterClass CASM::DatumFormatterAdapter< ExternalType, InternalType >::type ( ) const
inlineoverridevirtual

Reimplemented from CASM::BaseDatumFormatter< ExternalType >.

Definition at line 46 of file DatumFormatterAdapter.hh.

◆ validate()

template<typename ExternalType , typename InternalType >
bool CASM::DatumFormatterAdapter< ExternalType, InternalType >::validate ( ExternalType const &  _data_obj) const
inlineoverridevirtual

Returns true if _data_obj has valid values for requested data.

Default implementation always returns true

Reimplemented from CASM::BaseDatumFormatter< ExternalType >.

Definition at line 66 of file DatumFormatterAdapter.hh.

Member Data Documentation

◆ m_adapt

template<typename ExternalType , typename InternalType >
adapter::Adapter<InternalType, ExternalType> CASM::DatumFormatterAdapter< ExternalType, InternalType >::m_adapt
private

Definition at line 117 of file DatumFormatterAdapter.hh.

◆ m_base_ptr

template<typename ExternalType , typename InternalType >
notstd::cloneable_ptr<BaseDatumFormatter<InternalType> > CASM::DatumFormatterAdapter< ExternalType, InternalType >::m_base_ptr
private

Definition at line 118 of file DatumFormatterAdapter.hh.

◆ m_description

std::string CASM::BaseDatumFormatter< ExternalType >::m_description
privateinherited

Definition at line 486 of file DataFormatter.hh.

◆ m_home

const DictType* CASM::BaseDatumFormatter< ExternalType >::m_home
mutableprivateinherited

Definition at line 488 of file DataFormatter.hh.

◆ m_index_rules

IndexContainer CASM::BaseDatumFormatter< ExternalType >::m_index_rules
mutableprivateinherited

Definition at line 487 of file DataFormatter.hh.

◆ m_name

std::string CASM::BaseDatumFormatter< ExternalType >::m_name
privateinherited

{ return notstd::make_unique<DerivedDatumFormatter>(*this);}

Definition at line 485 of file DataFormatter.hh.


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