CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::BaseDatumFormatter< _DataObject > Class Template Referenceabstract

#include <DataFormatter.hh>

+ Inheritance diagram for CASM::BaseDatumFormatter< _DataObject >:

Detailed Description

template<typename _DataObject>
class CASM::BaseDatumFormatter< _DataObject >

Abstract base class from which all other DatumFormatter<DataObject> classes inherit.

The job of a DatumFormatter is to access and format a particular type of data that is stored in a <DataObject> class, which is a template paramter.

Definition at line 332 of file DataFormatter.hh.

Public Types

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

Public Member Functions

 BaseDatumFormatter (const std::string &_init_name, const std::string &_desc)
 
virtual ~BaseDatumFormatter ()
 Allow polymorphic deletion. 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 DatumFormatterClass type () const
 
const DictType & home () 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< BaseDatumFormatter< DataObject > > clone () const
 Make an exact copy of the formatter (including any initialized members) More...
 
virtual bool init (const DataObject &_template_obj) const
 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...
 
virtual bool validate (const DataObject &_data_obj) const
 Returns true if _data_obj has valid values for requested data. More...
 
virtual std::vector< std::string > col_header (const DataObject &_template_obj) const
 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...
 
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
 
virtual void print (const DataObject &_data_obj, std::ostream &_stream, Index pass_index=0) const =0
 
virtual void inject (const DataObject &_data_obj, DataStream &_stream, Index pass_index=0) const =0
 
virtual jsonParser & to_json (const DataObject &_data_obj, jsonParser &json) const =0
 
virtual bool parse_args (const std::string &args)
 

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

virtual BaseDatumFormatter * _clone () const =0
 Make an exact copy of the formatter (including any initialized members) More...
 

Private Attributes

std::string m_name
 
std::string m_description
 
IndexContainer m_index_rules
 
const DictType * m_home
 

Member Typedef Documentation

◆ DataObject

template<typename _DataObject >
typedef _DataObject CASM::BaseDatumFormatter< _DataObject >::DataObject

Definition at line 334 of file DataFormatter.hh.

◆ DictType

template<typename _DataObject >
typedef DataFormatterDictionary<DataObject, BaseDatumFormatter<DataObject> > CASM::BaseDatumFormatter< _DataObject >::DictType

Definition at line 337 of file DataFormatter.hh.

◆ difference_type

template<typename _DataObject >
typedef long CASM::BaseDatumFormatter< _DataObject >::difference_type

Definition at line 335 of file DataFormatter.hh.

◆ IndexContainer

template<typename _DataObject >
typedef multivector<Index>::X<2> CASM::BaseDatumFormatter< _DataObject >::IndexContainer
protected

Definition at line 459 of file DataFormatter.hh.

Constructor & Destructor Documentation

◆ BaseDatumFormatter()

template<typename _DataObject >
CASM::BaseDatumFormatter< _DataObject >::BaseDatumFormatter ( const std::string &  _init_name,
const std::string &  _desc 
)
inline

Definition at line 339 of file DataFormatter.hh.

◆ ~BaseDatumFormatter()

template<typename _DataObject >
virtual CASM::BaseDatumFormatter< _DataObject >::~BaseDatumFormatter ( )
inlinevirtual

Allow polymorphic deletion.

Definition at line 343 of file DataFormatter.hh.

Member Function Documentation

◆ _add_rule()

template<typename _DataObject >
void CASM::BaseDatumFormatter< _DataObject >::_add_rule ( const std::vector< Index > &  new_rule) const
inlineprotected

Definition at line 472 of file DataFormatter.hh.

◆ _clone()

template<typename _DataObject >
virtual BaseDatumFormatter* CASM::BaseDatumFormatter< _DataObject >::_clone ( ) const
privatepure virtual

◆ _index_rules()

template<typename _DataObject >
const IndexContainer& CASM::BaseDatumFormatter< _DataObject >::_index_rules ( ) const
inlineprotected

Definition at line 476 of file DataFormatter.hh.

◆ _parse_index_expression()

template<typename DataObject >
void CASM::BaseDatumFormatter< DataObject >::_parse_index_expression ( const std::string &  _expr)
protected

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 15 of file DataFormatter_impl.hh.

◆ clone()

template<typename _DataObject >
std::unique_ptr<BaseDatumFormatter<DataObject> > CASM::BaseDatumFormatter< _DataObject >::clone ( ) const
inline

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

Definition at line 369 of file DataFormatter.hh.

◆ col_header()

template<typename _DataObject >
virtual std::vector<std::string> CASM::BaseDatumFormatter< _DataObject >::col_header ( const DataObject &  _template_obj) const
inlinevirtual

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 in CASM::DatumFormatterAdapter< ExternalType, InternalType >, CASM::Base2DDatumFormatter< Container, DataObject >, CASM::Base1DDatumFormatter< Container, DataObject >, and CASM::DatumFormatterAlias< DataObject >.

Definition at line 389 of file DataFormatter.hh.

◆ description()

template<typename _DataObject >
const std::string& CASM::BaseDatumFormatter< _DataObject >::description ( ) const
inline

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 _DataObject >
const DictType& CASM::BaseDatumFormatter< _DataObject >::home ( ) const
inline

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

Definition at line 360 of file DataFormatter.hh.

◆ init()

template<typename _DataObject >
virtual bool CASM::BaseDatumFormatter< _DataObject >::init ( const DataObject &  _template_obj) const
inlinevirtual

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 in CASM::DatumFormatterAdapter< ExternalType, InternalType >, CASM::Base2DDatumFormatter< Container, DataObject >, CASM::Base1DDatumFormatter< Container, DataObject >, and CASM::DatumFormatterAlias< DataObject >.

Definition at line 376 of file DataFormatter.hh.

◆ inject()

template<typename _DataObject >
virtual void CASM::BaseDatumFormatter< _DataObject >::inject ( const DataObject &  _data_obj,
DataStream &  _stream,
Index  pass_index = 0 
) const
pure virtual

◆ long_header()

template<typename _DataObject >
virtual std::string CASM::BaseDatumFormatter< _DataObject >::long_header ( const DataObject &  _template_obj) const
inlinevirtual

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 in CASM::DatumFormatterAdapter< ExternalType, InternalType >.

Definition at line 399 of file DataFormatter.hh.

◆ name()

template<typename _DataObject >
const std::string& CASM::BaseDatumFormatter< _DataObject >::name ( ) const
inline

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 >
virtual Index CASM::BaseDatumFormatter< _DataObject >::num_passes ( const DataObject &  _data_obj) const
inlinevirtual

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::DatumFormatterAdapter< ExternalType, InternalType >, CASM::Base2DDatumFormatter< Container, DataObject >, and CASM::DatumFormatterAlias< DataObject >.

Definition at line 424 of file DataFormatter.hh.

◆ parse_args()

◆ print()

template<typename _DataObject >
virtual void CASM::BaseDatumFormatter< _DataObject >::print ( const DataObject &  _data_obj,
std::ostream &  _stream,
Index  pass_index = 0 
) const
pure virtual

◆ set_home()

template<typename _DataObject >
void CASM::BaseDatumFormatter< _DataObject >::set_home ( const DictType &  home) const
inline

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

Definition at line 364 of file DataFormatter.hh.

◆ short_header()

template<typename _DataObject >
virtual std::string CASM::BaseDatumFormatter< _DataObject >::short_header ( const DataObject &  _template_obj) const
inlinevirtual

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

Definition at line 417 of file DataFormatter.hh.

◆ to_json()

template<typename _DataObject >
virtual jsonParser& CASM::BaseDatumFormatter< _DataObject >::to_json ( const DataObject &  _data_obj,
jsonParser &  json 
) const
pure virtual

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"]);

Implemented in CASM::DatumFormatterAdapter< ExternalType, InternalType >, CASM::BaseValueFormatter< ValueType, DataObject >, CASM::BaseValueFormatter< Container, DataObject >, CASM::ConstantValueFormatter< ValueType, DataObject >, CASM::DatumFormatterAlias< DataObject >, and CASM::DataFormatterOperator< ValueType, ArgType, DataObject >.

◆ type()

◆ validate()

template<typename _DataObject >
virtual bool CASM::BaseDatumFormatter< _DataObject >::validate ( const DataObject &  _data_obj) const
inlinevirtual

Member Data Documentation

◆ m_description

template<typename _DataObject >
std::string CASM::BaseDatumFormatter< _DataObject >::m_description
private

Definition at line 486 of file DataFormatter.hh.

◆ m_home

template<typename _DataObject >
const DictType* CASM::BaseDatumFormatter< _DataObject >::m_home
mutableprivate

Definition at line 488 of file DataFormatter.hh.

◆ m_index_rules

template<typename _DataObject >
IndexContainer CASM::BaseDatumFormatter< _DataObject >::m_index_rules
mutableprivate

Definition at line 487 of file DataFormatter.hh.

◆ m_name

template<typename _DataObject >
std::string CASM::BaseDatumFormatter< _DataObject >::m_name
private

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

Definition at line 485 of file DataFormatter.hh.


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