CASM
AClustersApproachtoStatisticalMechanics
|
#include <DataFormatter.hh>
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 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 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 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 |
typedef _DataObject CASM::BaseDatumFormatter< _DataObject >::DataObject |
Definition at line 313 of file DataFormatter.hh.
typedef DataFormatterDictionary<DataObject, BaseDatumFormatter<DataObject> > CASM::BaseDatumFormatter< _DataObject >::DictType |
Definition at line 316 of file DataFormatter.hh.
typedef long CASM::BaseDatumFormatter< _DataObject >::difference_type |
Definition at line 315 of file DataFormatter.hh.
|
protected |
Definition at line 435 of file DataFormatter.hh.
|
inline |
Definition at line 319 of file DataFormatter.hh.
|
inlinevirtual |
Allow polymorphic deletion.
Definition at line 323 of file DataFormatter.hh.
|
inlineprotected |
Definition at line 447 of file DataFormatter.hh.
|
privatepure virtual |
Make an exact copy of the formatter (including any initialized members)
Implemented in CASM::Generic1DDatumFormatter< Container, DataObject >, CASM::Base1DDatumFormatter< Container, DataObject >, CASM::GenericDatumFormatter< ValueType, DataObject >, 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 >, CASM::ConfigIO::Clex, CASM::ConfigIO::Corr, CASM::ChemicalReference, CASM::HyperPlaneReference, CASM::ConfigIO::MagBase, CASM::ConfigIO::ClexHullDist, CASM::ConfigIO::AtomFrac, CASM::ConfigIO::OnClexHull, CASM::HyperPlaneReferenceBase, CASM::ConfigIO::SiteFrac, CASM::ConfigIO::HullDist, CASM::ConfigIO::CompN, CASM::ConfigIO::DoFStrain, CASM::ConfigIO::OnHull, CASM::ConfigIO::Comp, CASM::DataFormatterOperator< ValueType, ArgType, DataObject >, CASM::ConfigIO::Novelty, CASM::ConfigIO::RelaxationStrain, CASM::ConfigIO::StrucScore, CASM::ConfigIO::Selected, CASM::ConstantReference, and CASM::ConfigIO::TestCompN.
|
inlineprotected |
Definition at line 451 of file DataFormatter.hh.
|
protected |
Derived DatumFormatters have some optional functionality for parsing index expressions in order to make it easy to handle ranges such as:
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.
|
inline |
Make an exact copy of the formatter (including any initialized members)
Definition at line 352 of file DataFormatter.hh.
|
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)".
Reimplemented in CASM::Base1DDatumFormatter< Container, DataObject >, and CASM::DatumFormatterAlias< DataObject >.
Definition at line 373 of file DataFormatter.hh.
|
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.
|
inline |
const Access the dictionary containing this formatter, set during DictType::lookup
Definition at line 341 of file DataFormatter.hh.
|
inlinevirtual |
Reimplemented in CASM::Base1DDatumFormatter< Container, DataObject >, CASM::DatumFormatterAlias< DataObject >, CASM::ConfigIO::BaseHull< ValueType >, CASM::ConfigIO::BaseHull< double >, and CASM::ConfigIO::BaseHull< bool >.
Definition at line 356 of file DataFormatter.hh.
|
pure virtual |
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
Implemented in CASM::Base1DDatumFormatter< Container, DataObject >, 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 >.
|
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)".
Definition at line 382 of file DataFormatter.hh.
|
inline |
Returns a name for the formatter, which becomes the tag used for parsing.
Definition at line 326 of file DataFormatter.hh.
|
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.
|
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.
|
pure virtual |
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
Implemented in CASM::Base1DDatumFormatter< Container, DataObject >, 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 >.
|
inline |
Set the dictionary containing this formatter, set during DictType::lookup.
Definition at line 346 of file DataFormatter.hh.
|
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.
|
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 >.
|
inlinevirtual |
Reimplemented in CASM::DatumFormatterAlias< DataObject >, and CASM::DataFormatterOperator< ValueType, ArgType, DataObject >.
Definition at line 336 of file DataFormatter.hh.
|
inlinevirtual |
Returns true if _data_obj has valid values for requested data.
Default implementation always returns true
Reimplemented in CASM::Generic1DDatumFormatter< Container, DataObject >, CASM::GenericDatumFormatter< ValueType, DataObject >, CASM::DatumFormatterAlias< DataObject >, CASM::ConfigIO::ClexHullDist, CASM::ConfigIO::OnClexHull, CASM::ConfigIO::HullDist, CASM::ConfigIO::OnHull, and CASM::DataFormatterOperator< ValueType, ArgType, DataObject >.
Definition at line 363 of file DataFormatter.hh.
|
private |
Definition at line 463 of file DataFormatter.hh.
|
mutableprivate |
Definition at line 465 of file DataFormatter.hh.
|
mutableprivate |
Definition at line 464 of file DataFormatter.hh.
|
private |
{ return notstd::make_unique<DerivedDatumFormatter>(*this);}
Definition at line 462 of file DataFormatter.hh.