CASM  1.1.0
A Clusters Approach to Statistical Mechanics
DataFormatterFilter_impl.hh
Go to the documentation of this file.
1 #ifndef CASM_DataFormatterFilter_impl
2 #define CASM_DataFormatterFilter_impl
3 
7 
8 namespace CASM {
9 
10 template <typename DataObject>
12  DataFormatter<DataObject> const &_filter)
13  : m_filter(_filter) {}
14 
15 template <typename DataObject>
17  DataObject const &object) const {
18  ValueDataStream<bool> _stream;
19  _stream << m_filter(object);
20  return _stream.value();
21 }
22 
23 template <typename DataObject>
25  std::string const &filter_expr,
27  return DataFormatterFilter<DataObject>{_dict.parse(filter_expr)};
28 }
29 
30 template <typename DataObject>
32  std::vector<std::string> const &filter_expr,
34  return DataFormatterFilter<DataObject>{_dict.parse(filter_expr)};
35 }
36 
37 } // namespace CASM
38 
39 #endif
DataFormatter< DataObject > parse(const std::string &input) const
Use the vector of strings to build a DataFormatter<DataObject>
const T & value() const
Definition: DataStream.hh:256
Main CASM namespace.
Definition: APICommand.hh:8
DataFormatterFilter< DataObject > make_data_formatter_filter(std::string const &filter_expr, DataFormatterDictionary< DataObject > const &_dict)
DataFormatterFilter(DataFormatter< DataObject > const &_filter)
bool operator()(DataObject const &object) const