32#ifndef DRAIN_STRING_MATCHER_LIST
33#define DRAIN_STRING_MATCHER_LIST
41#include <drain/Sprinter.h>
42#include <drain/String.h>
43#include "StringMatcher.h"
51template <
class T=std::
string>
58 typedef std::list<T> list_t;
61 template <
typename ... TT>
86 operator bool()
const {
87 return !this->empty();
107 for (
const matcher_t & key: l) {
108 this->push_back(key);
114 void setKeys(
const std::initializer_list<T2> & l){
116 for (
const T2 & entry: l) {
125 for (
const T2 & key: l) {
136 template <
typename ...TT>
137 void setKeys(
const std::string & arg,
const TT & ... args){
145 template <
typename ...TT>
147 void addKey(
const matcher_t & arg,
const TT & ... args){
159 bool test(
const std::string & key,
bool defaultResult =
true)
const;
161 const matcher_t & retrieve(
const std::string & key)
const;
166 return !this->empty();
171 const list_t & getList()
const {
176 void toStream(std::ostream & ostr)
const {
209 std::vector<std::string> argv;
212 for (
const std::string & arg: argv){
227 if (matcher.empty()){
233 for (
const matcher_t & m: *
this){
240 this->push_back(matcher);
256 return defaultResult;
259 for (
const auto & k: *
this){
274 const matcher_t empty;
280 for (
const auto & matcher: *this){
294std::ostream & operator<<(std::ostream & ostr,
const StringMatcherList<T> & selector){
295 selector.toStream(ostr);
299typedef StringMatcherList<StringMatcher> KeySelector;
Definition QuantitySelector.h:37
static std::ostream & sequenceToStream(std::ostream &ostr, const T &x, const SprinterLayout &layout)
Convenience: if sequence type (array, list, set, map) not given, assume array.
Definition Sprinter.h:321
static const SprinterLayout cmdLineLayout
Simulates how arguments are given to command line options.
Definition Sprinter.h:248
Utility for selecting a quantity label Applied by DataSelector.
Definition StringMatcherList.h:52
void setKeys(const std::initializer_list< T2 > &l)
Replace current list with a new one.
Definition StringMatcherList.h:114
void adaptKey(const matcher_t &s)
Definition StringMatcherList.h:225
StringMatcherList(const TT &... args)
Basic constructor.
Definition StringMatcherList.h:63
StringMatcherList operator=(const std::initializer_list< matcher_t > &l)
Replace current list with a new one.
Definition StringMatcherList.h:99
void insertKeys(const std::string &args)
Define the list of accepted quantities as a string.
Definition StringMatcherList.h:206
void setKeys(const std::list< T2 > &l)
Replace current list with a new one.
Definition StringMatcherList.h:123
virtual ~StringMatcherList()
Destructor.
Definition StringMatcherList.h:82
bool test(const std::string &key, bool defaultResult=true) const
Check if key is accepted.
Definition StringMatcherList.h:253
void addKey(const matcher_t &arg, const TT &... args)
Append keys to existing list.matcher_t.
Definition StringMatcherList.h:147
void setKeys(const std::string &arg, const TT &... args)
Define the list of accepted quantities.
Definition StringMatcherList.h:137
StringMatcherList operator=(const StringMatcherList< matcher_t > &l)
Replace current list with a new one.
Definition StringMatcherList.h:93
void setKeys(const StringMatcherList< matcher_t > &l)
Replace current list with a new one.
Definition StringMatcherList.h:105
StringMatcherList(const StringMatcherList< T > &l)
Copy constructor. Copies the list of quantities.
Definition StringMatcherList.h:71
Definition DataSelector.cpp:1277
DRAIN_TYPENAME(void)
Add a specialization for each type of those you want to support.