CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
CASM::BaseDatumFormatter< _DataObject > Class Template Referenceabstract

#include <DataFormatter.hh>

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

Public Types

enum  FormatterType { Property, Operator }
 
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 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...
 
std::unique_ptr
< BaseDatumFormatter
< DataObject > > 
clone () const
 Make an exact copy of the formatter (including any initialized members) More...
 
virtual void init (const DataObject &_template_obj) const
 
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 jsonParserto_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 DictTypem_home
 

Member Typedef Documentation

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

Definition at line 313 of file DataFormatter.hh.

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

Definition at line 316 of file DataFormatter.hh.

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

Definition at line 315 of file DataFormatter.hh.

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

Definition at line 435 of file DataFormatter.hh.

Constructor & Destructor Documentation

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

Definition at line 319 of file DataFormatter.hh.

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

Allow polymorphic deletion.

Definition at line 323 of file DataFormatter.hh.

Member Function Documentation

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

Definition at line 447 of file DataFormatter.hh.

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

Definition at line 451 of file DataFormatter.hh.

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

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

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 col_header

Reimplemented in CASM::Base1DDatumFormatter< Container, DataObject >, and CASM::DatumFormatterAlias< DataObject >.

Definition at line 373 of file DataFormatter.hh.

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

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

template<typename _DataObject>
virtual void CASM::BaseDatumFormatter< _DataObject >::init ( const DataObject _template_obj) const
inlinevirtual
template<typename _DataObject>
virtual void CASM::BaseDatumFormatter< _DataObject >::inject ( const DataObject _data_obj,
DataStream _stream,
Index  pass_index = 0 
) const
pure virtual
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

Definition at line 382 of file DataFormatter.hh.

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

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

Definition at line 406 of file DataFormatter.hh.

template<typename _DataObject>
virtual bool CASM::BaseDatumFormatter< _DataObject >::parse_args ( const std::string &  args)
inlinevirtual

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 in CASM::Base1DDatumFormatter< Container, DataObject >, CASM::DatumFormatterAlias< DataObject >, CASM::ConfigIO::Clex, CASM::ConfigIO::Corr, CASM::ConfigIO::DoFStrain, CASM::ConfigIO::Comp, CASM::ConfigIO::Novelty, CASM::ConfigIO::RelaxationStrain, CASM::ConfigIO::StrucScore, CASM::DataFormatterOperator< ValueType, ArgType, DataObject >, CASM::ConfigIO::Selected, CASM::ConfigIO::BaseHull< ValueType >, CASM::ConfigIO::BaseHull< double >, CASM::ConfigIO::BaseHull< bool >, and CASM::ConfigIO_impl::MolDependent.

Definition at line 431 of file DataFormatter.hh.

template<typename _DataObject>
virtual void CASM::BaseDatumFormatter< _DataObject >::print ( const DataObject _data_obj,
std::ostream &  _stream,
Index  pass_index = 0 
) const
pure virtual
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 346 of file DataFormatter.hh.

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::DatumFormatterAlias< DataObject >, CASM::DataFormatterOperator< ValueType, ArgType, DataObject >, CASM::ConfigIO::BaseHull< ValueType >, CASM::ConfigIO::BaseHull< double >, and CASM::ConfigIO::BaseHull< bool >.

Definition at line 400 of file DataFormatter.hh.

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::BaseValueFormatter< ValueType, DataObject >, CASM::BaseValueFormatter< double, Configuration >, CASM::BaseValueFormatter< bool, Configuration >, CASM::BaseValueFormatter< Container, DataObject >, CASM::BaseValueFormatter< ValueType, Configuration >, CASM::ConstantValueFormatter< ValueType, DataObject >, CASM::DatumFormatterAlias< DataObject >, and CASM::DataFormatterOperator< ValueType, ArgType, DataObject >.

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

Member Data Documentation

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

Definition at line 463 of file DataFormatter.hh.

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

Definition at line 465 of file DataFormatter.hh.

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

Definition at line 464 of file DataFormatter.hh.

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

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

Definition at line 462 of file DataFormatter.hh.


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