CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::DatumFormatterAlias< DataObject > Class Template Reference

#include <DataFormatterTools.hh>

+ Inheritance diagram for CASM::DatumFormatterAlias< DataObject >:

Detailed Description

template<typename DataObject>
class CASM::DatumFormatterAlias< DataObject >

Implements a DatumFormatter that is an alias for a combination of others.

Definition at line 542 of file DataFormatterTools.hh.

Public Types

typedef DataObject DataObject
 
typedef long difference_type
 
typedef DataFormatterDictionary< DataObject, BaseDatumFormatter< DataObject > > DictType
 

Public Member Functions

 DatumFormatterAlias (const std::string &_name, const std::string &_command, const DataFormatterDictionary< DataObject > &_dict, const std::string &_help="")
 
 DatumFormatterAlias (const std::string &_name, const BaseDatumFormatter< DataObject > &_rhs, const std::string &_help="")
 
DatumFormatterClass type () const override
 
std::unique_ptr< DatumFormatterAliasclone () const
 
bool init (const DataObject &_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 (const DataObject &_data_obj) const override
 Returns true if _data_obj has valid values for requested data. More...
 
std::vector< std::string > col_header (const DataObject &_template_obj) const override
 Returns a std::vector<std::string> with each column header. More...
 
std::string short_header (const DataObject &_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 (const DataObject &_data_obj) const override
 
void print (const DataObject &_data_obj, std::ostream &_stream, Index pass_index=0) const override
 
void inject (const DataObject &_data_obj, DataStream &_stream, Index pass_index=0) const override
 
jsonParserto_json (const DataObject &_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...
 
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...
 
virtual std::string long_header (const DataObject &_template_obj) const
 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...
 

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

DatumFormatterAlias_clone () const override
 Make an exact copy of the formatter (including any initialized members) More...
 

Private Attributes

std::vector< std::string > m_format_tags
 
std::vector< std::string > m_subexprs
 
notstd::cloneable_ptr< BaseDatumFormatter< DataObject > > m_formatter
 
std::string m_name
 
std::string m_description
 
IndexContainer m_index_rules
 
const DictTypem_home
 

Member Typedef Documentation

◆ DataObject

Definition at line 334 of file DataFormatter.hh.

◆ DictType

◆ difference_type

Definition at line 335 of file DataFormatter.hh.

◆ IndexContainer

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

Definition at line 459 of file DataFormatter.hh.

Constructor & Destructor Documentation

◆ DatumFormatterAlias() [1/2]

template<typename DataObject >
CASM::DatumFormatterAlias< DataObject >::DatumFormatterAlias ( const std::string &  _name,
const std::string &  _command,
const DataFormatterDictionary< DataObject > &  _dict,
const std::string &  _help = "" 
)
inline

Definition at line 546 of file DataFormatterTools.hh.

◆ DatumFormatterAlias() [2/2]

template<typename DataObject >
CASM::DatumFormatterAlias< DataObject >::DatumFormatterAlias ( const std::string &  _name,
const BaseDatumFormatter< DataObject > &  _rhs,
const std::string &  _help = "" 
)
inline

Definition at line 560 of file DataFormatterTools.hh.

Member Function Documentation

◆ _add_rule()

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

Definition at line 472 of file DataFormatter.hh.

◆ _clone()

template<typename DataObject >
DatumFormatterAlias* CASM::DatumFormatterAlias< DataObject >::_clone ( ) const
inlineoverrideprivatevirtual

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

Implements CASM::BaseDatumFormatter< DataObject >.

Definition at line 679 of file DataFormatterTools.hh.

◆ _index_rules()

const IndexContainer& CASM::BaseDatumFormatter< DataObject >::_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 DataObject >
std::unique_ptr<DatumFormatterAlias> CASM::DatumFormatterAlias< DataObject >::clone ( ) const
inline

Definition at line 573 of file DataFormatterTools.hh.

◆ col_header()

template<typename DataObject >
std::vector<std::string> CASM::DatumFormatterAlias< DataObject >::col_header ( const DataObject _template_obj) const
inlineoverridevirtual

Returns a std::vector<std::string> with each column header.

  • Default returns: $NAME if only 1 column, $NAME(i) if >1 column

Reimplemented from CASM::BaseDatumFormatter< DataObject >.

Definition at line 589 of file DataFormatterTools.hh.

◆ description()

const std::string& CASM::BaseDatumFormatter< DataObject >::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()

const DictType& CASM::BaseDatumFormatter< DataObject >::home ( ) const
inlineinherited

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

Definition at line 360 of file DataFormatter.hh.

◆ init()

template<typename DataObject >
bool CASM::DatumFormatterAlias< DataObject >::init ( const DataObject _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< DataObject >.

Definition at line 577 of file DataFormatterTools.hh.

◆ inject()

template<typename DataObject >
void CASM::DatumFormatterAlias< DataObject >::inject ( const DataObject _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< DataObject >.

Definition at line 634 of file DataFormatterTools.hh.

◆ long_header()

virtual std::string CASM::BaseDatumFormatter< DataObject >::long_header ( const DataObject _template_obj) const
inlinevirtualinherited

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

Definition at line 399 of file DataFormatter.hh.

◆ name()

const std::string& CASM::BaseDatumFormatter< DataObject >::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 DataObject >
Index CASM::DatumFormatterAlias< DataObject >::num_passes ( const DataObject _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< DataObject >.

Definition at line 619 of file DataFormatterTools.hh.

◆ parse_args()

template<typename DataObject >
bool CASM::DatumFormatterAlias< DataObject >::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< DataObject >.

Definition at line 658 of file DataFormatterTools.hh.

◆ print()

template<typename DataObject >
void CASM::DatumFormatterAlias< DataObject >::print ( const DataObject _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< DataObject >.

Definition at line 626 of file DataFormatterTools.hh.

◆ set_home()

void CASM::BaseDatumFormatter< DataObject >::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.

◆ short_header()

template<typename DataObject >
std::string CASM::DatumFormatterAlias< DataObject >::short_header ( const DataObject _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< DataObject >.

Definition at line 612 of file DataFormatterTools.hh.

◆ to_json()

template<typename DataObject >
jsonParser& CASM::DatumFormatterAlias< DataObject >::to_json ( const DataObject _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< DataObject >.

Definition at line 647 of file DataFormatterTools.hh.

◆ type()

template<typename DataObject >
DatumFormatterClass CASM::DatumFormatterAlias< DataObject >::type ( ) const
inlineoverridevirtual

Reimplemented from CASM::BaseDatumFormatter< DataObject >.

Definition at line 569 of file DataFormatterTools.hh.

◆ validate()

template<typename DataObject >
bool CASM::DatumFormatterAlias< DataObject >::validate ( const DataObject _data_obj) const
inlineoverridevirtual

Returns true if _data_obj has valid values for requested data.

Reimplemented from CASM::BaseDatumFormatter< DataObject >.

Definition at line 582 of file DataFormatterTools.hh.

Member Data Documentation

◆ m_description

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

Definition at line 486 of file DataFormatter.hh.

◆ m_format_tags

template<typename DataObject >
std::vector<std::string> CASM::DatumFormatterAlias< DataObject >::m_format_tags
private

Definition at line 683 of file DataFormatterTools.hh.

◆ m_formatter

template<typename DataObject >
notstd::cloneable_ptr<BaseDatumFormatter<DataObject> > CASM::DatumFormatterAlias< DataObject >::m_formatter
private

Definition at line 684 of file DataFormatterTools.hh.

◆ m_home

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

Definition at line 488 of file DataFormatter.hh.

◆ m_index_rules

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

Definition at line 487 of file DataFormatter.hh.

◆ m_name

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

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

Definition at line 485 of file DataFormatter.hh.

◆ m_subexprs

template<typename DataObject >
std::vector<std::string> CASM::DatumFormatterAlias< DataObject >::m_subexprs
private

Definition at line 683 of file DataFormatterTools.hh.


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