CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
CASM::Generic1DDatumFormatter< Container, DataObject > Class Template Reference

#include <DataFormatterTools.hh>

+ Inheritance diagram for CASM::Generic1DDatumFormatter< Container, DataObject >:

Detailed Description

template<typename Container, typename DataObject>
class CASM::Generic1DDatumFormatter< Container, DataObject >

A DatumFormatter that returns a 1D value of specified type, via functions that may be specified at runtime.

Definition at line 1023 of file DataFormatterTools.hh.

Public Types

typedef std::function
< Container(const DataObject &)> 
Evaluator
 
typedef std::function< bool(const
DataObject &)> 
Validator
 
typedef ContainerTraits
< Container >::Access 
Access
 Access methods for Container. More...
 
typedef ContainerTraits
< Container >::value_type 
ValueType
 
enum  FormatterType
 
typedef DataObject DataObject
 
typedef long difference_type
 
typedef
DataFormatterDictionary
< DataObject,
BaseDatumFormatter< DataObject > > 
DictType
 

Public Member Functions

 Generic1DDatumFormatter (const std::string &_name, const std::string &_desc, Evaluator _evaluator, Validator _validator=always_true< DataObject >)
 Constructor. More...
 
Container evaluate (const DataObject &obj) const override
 Returns Container type piece of data about a DataObject, the result of the Evaluator. More...
 
std::unique_ptr
< Generic1DDatumFormatter
clone () const
 Clone using copy constructor. More...
 
bool validate (const DataObject &obj) const override
 Returns boolean indicating if the _evaluator can be used successfully, the result of the Validator. More...
 
virtual void init (const DataObject &_template_obj) const override
 Default initialization adds rules for each element. More...
 
virtual std::vector< std::string > col_header (const DataObject &_template_obj) const override
 Default col_header uses 'name(index)' for each column. More...
 
virtual bool parse_args (const std::string &args) override
 Default implementation calls _parse_index_expression. More...
 
virtual void inject (const DataObject &_data_obj, DataStream &_stream, Index pass_index=0) const override
 Default implementation injects each element. More...
 
virtual void print (const DataObject &_data_obj, std::ostream &_stream, Index pass_index=0) const override
 Default implementation prints each element in a column. More...
 
virtual Container operator() (const DataObject &obj) const
 Return requested data from obj, throwing std::runtime_error if not valid. More...
 
virtual jsonParserto_json (const DataObject &_data_obj, jsonParser &json) const override
 Default implementation calls jsonParser& to_json(const ValueType&, jsonParser&) More...
 
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...
 
virtual FormatterType type () const
 
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...
 
virtual std::string short_header (const DataObject &_template_obj) const
 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...
 
virtual Index num_passes (const DataObject &_data_obj) const
 

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

Generic1DDatumFormatter_clone () const
 Clone using copy constructor. More...
 

Private Attributes

Evaluator m_evaluate
 
Validator m_validate
 

Member Typedef Documentation

template<typename Container , typename DataObject >
typedef ContainerTraits<Container>::Access CASM::Base1DDatumFormatter< Container, DataObject >::Access
inherited

Access methods for Container.

Definition at line 900 of file DataFormatterTools.hh.

Definition at line 313 of file DataFormatter.hh.

Definition at line 315 of file DataFormatter.hh.

template<typename Container , typename DataObject >
typedef std::function<Container(const DataObject &)> CASM::Generic1DDatumFormatter< Container, DataObject >::Evaluator

Definition at line 1027 of file DataFormatterTools.hh.

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

Definition at line 435 of file DataFormatter.hh.

template<typename Container , typename DataObject >
typedef std::function<bool (const DataObject &)> CASM::Generic1DDatumFormatter< Container, DataObject >::Validator

Definition at line 1028 of file DataFormatterTools.hh.

template<typename Container , typename DataObject >
typedef ContainerTraits<Container>::value_type CASM::Base1DDatumFormatter< Container, DataObject >::ValueType
inherited

Definition at line 901 of file DataFormatterTools.hh.

Member Enumeration Documentation

Definition at line 314 of file DataFormatter.hh.

Constructor & Destructor Documentation

template<typename Container , typename DataObject >
CASM::Generic1DDatumFormatter< Container, DataObject >::Generic1DDatumFormatter ( const std::string &  _name,
const std::string &  _desc,
Evaluator  _evaluator,
Validator  _validator = always_true<DataObject> 
)
inline

Constructor.

Parameters
_nameName of formatter
_descDescription of the formatter
_evaluatorReturns a Container type piece of data about a DataObject
_validatorReturns boolean indicating if the _evaluator can be used successfully

Definition at line 1037 of file DataFormatterTools.hh.

Member Function Documentation

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

Definition at line 447 of file DataFormatter.hh.

template<typename Container , typename DataObject >
Generic1DDatumFormatter* CASM::Generic1DDatumFormatter< Container, DataObject >::_clone ( ) const
inlineprivatevirtual

Clone using copy constructor.

Implements CASM::Base1DDatumFormatter< Container, DataObject >.

Definition at line 1070 of file DataFormatterTools.hh.

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

Definition at line 451 of file DataFormatter.hh.

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}}

template<typename Container , typename DataObject >
std::unique_ptr<Generic1DDatumFormatter> CASM::Generic1DDatumFormatter< Container, DataObject >::clone ( ) const
inline

Clone using copy constructor.

Definition at line 1054 of file DataFormatterTools.hh.

template<typename Container , typename DataObject >
virtual std::vector<std::string> CASM::Base1DDatumFormatter< Container, DataObject >::col_header ( const DataObject _template_obj) const
inlineoverridevirtualinherited

Default col_header uses 'name(index)' for each column.

Ex: "corr(0)" "corr(1)" "corr(5)" "corr(6)"

Reimplemented from CASM::BaseDatumFormatter< DataObject >.

Definition at line 934 of file DataFormatterTools.hh.

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 332 of file DataFormatter.hh.

template<typename Container , typename DataObject >
Container CASM::Generic1DDatumFormatter< Container, DataObject >::evaluate ( const DataObject obj) const
inlineoverridevirtual

Returns Container type piece of data about a DataObject, the result of the Evaluator.

Implements CASM::BaseValueFormatter< Container, DataObject >.

Definition at line 1049 of file DataFormatterTools.hh.

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

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

Definition at line 341 of file DataFormatter.hh.

template<typename Container , typename DataObject >
virtual void CASM::Base1DDatumFormatter< Container, DataObject >::init ( const DataObject _template_obj) const
inlineoverridevirtualinherited

Default initialization adds rules for each element.

Reimplemented from CASM::BaseDatumFormatter< DataObject >.

Definition at line 921 of file DataFormatterTools.hh.

template<typename Container , typename DataObject >
virtual void CASM::Base1DDatumFormatter< Container, DataObject >::inject ( const DataObject _data_obj,
DataStream _stream,
Index  pass_index = 0 
) const
inlineoverridevirtualinherited

Default implementation injects each element.

Reimplemented from CASM::BaseValueFormatter< Container, DataObject >.

Definition at line 955 of file DataFormatterTools.hh.

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 382 of file DataFormatter.hh.

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 326 of file DataFormatter.hh.

virtual Index CASM::BaseDatumFormatter< DataObject >::num_passes ( const DataObject _data_obj) const
inlinevirtualinherited

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 in CASM::DatumFormatterAlias< DataObject >.

Definition at line 406 of file DataFormatter.hh.

virtual Container CASM::BaseValueFormatter< Container , DataObject >::operator() ( const DataObject obj) const
inlinevirtualinherited

Return requested data from obj, throwing std::runtime_error if not valid.

Definition at line 729 of file DataFormatterTools.hh.

template<typename Container , typename DataObject >
virtual bool CASM::Base1DDatumFormatter< Container, DataObject >::parse_args ( const std::string &  args)
inlineoverridevirtualinherited
template<typename Container , typename DataObject >
virtual void CASM::Base1DDatumFormatter< Container, DataObject >::print ( const DataObject _data_obj,
std::ostream &  _stream,
Index  pass_index = 0 
) const
inlineoverridevirtualinherited

Default implementation prints each element in a column.

  • Prints "unknown" if validation fails

Reimplemented from CASM::BaseValueFormatter< Container, DataObject >.

Definition at line 980 of file DataFormatterTools.hh.

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

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

Definition at line 346 of file DataFormatter.hh.

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

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 in CASM::DatumFormatterAlias< DataObject >, and CASM::DataFormatterOperator< ValueType, ArgType, DataObject >.

Definition at line 400 of file DataFormatter.hh.

virtual jsonParser& CASM::BaseValueFormatter< Container , DataObject >::to_json ( const DataObject _data_obj,
jsonParser json 
) const
inlineoverridevirtualinherited

Default implementation calls jsonParser& to_json(const ValueType&, jsonParser&)

  • Does nothing if validation fails

Implements CASM::BaseDatumFormatter< DataObject >.

Definition at line 769 of file DataFormatterTools.hh.

template<typename Container , typename DataObject >
bool CASM::Generic1DDatumFormatter< Container, DataObject >::validate ( const DataObject obj) const
inlineoverridevirtual

Returns boolean indicating if the _evaluator can be used successfully, the result of the Validator.

Reimplemented from CASM::BaseDatumFormatter< DataObject >.

Definition at line 1063 of file DataFormatterTools.hh.

Member Data Documentation

template<typename Container , typename DataObject >
Evaluator CASM::Generic1DDatumFormatter< Container, DataObject >::m_evaluate
private

Definition at line 1074 of file DataFormatterTools.hh.

template<typename Container , typename DataObject >
Validator CASM::Generic1DDatumFormatter< Container, DataObject >::m_validate
private

Definition at line 1075 of file DataFormatterTools.hh.


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