32#ifndef DRAIN_STRING_MATCHER_LIST
33#define DRAIN_STRING_MATCHER_LIST
38#include <drain/Sprinter.h>
39#include <drain/StringTools.h>
40#include "StringMatcher.h"
48template <
class T=std::
string>
55 typedef std::list<T> list_t;
58 template <
typename ... TT>
83 operator bool()
const {
84 return !this->empty();
104 for (
const matcher_t & key: l) {
105 this->push_back(key);
111 void setKeys(
const std::initializer_list<T2> & l){
113 for (
const T2 & entry: l) {
122 for (
const T2 & key: l) {
133 template <
typename ...TT>
134 void setKeys(
const std::string & arg,
const TT & ... args){
142 template <
typename ...TT>
143 void addKey(
const matcher_t & arg,
const TT & ... args){
155 bool test(
const std::string & key,
bool defaultResult =
true)
const;
157 const matcher_t & retrieve(
const std::string & key)
const;
162 return !this->empty();
167 const list_t & getList()
const {
172 void toStream(std::ostream & ostr)
const {
205 std::vector<std::string> argv;
208 for (
const std::string & arg: argv){
223 if (matcher.empty()){
229 for (
const matcher_t & m: *
this){
236 this->push_back(matcher);
252 return defaultResult;
255 for (
const auto & k: *
this){
270 const matcher_t empty;
276 for (
const auto & matcher: *this){
290std::ostream & operator<<(std::ostream & ostr,
const StringMatcherList<T> & selector){
291 selector.toStream(ostr);
295typedef StringMatcherList<StringMatcher> KeySelector;
297DRAIN_TYPENAME(KeySelector);
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:324
static const SprinterLayout cmdLineLayout
Simulates how arguments are given to command line options.
Definition Sprinter.h:251
Utility for selecting a quantity label Applied by DataSelector.
Definition StringMatcherList.h:49
void setKeys(const std::initializer_list< T2 > &l)
Replace current list with a new one.
Definition StringMatcherList.h:111
void adaptKey(const matcher_t &s)
Definition StringMatcherList.h:221
StringMatcherList(const TT &... args)
Basic constructor.
Definition StringMatcherList.h:60
StringMatcherList operator=(const std::initializer_list< matcher_t > &l)
Replace current list with a new one.
Definition StringMatcherList.h:96
void insertKeys(const std::string &args)
Define the list of accepted quantities as a string.
Definition StringMatcherList.h:202
void setKeys(const std::list< T2 > &l)
Replace current list with a new one.
Definition StringMatcherList.h:120
virtual ~StringMatcherList()
Destructor.
Definition StringMatcherList.h:79
bool test(const std::string &key, bool defaultResult=true) const
Check if key is accepted.
Definition StringMatcherList.h:249
void addKey(const matcher_t &arg, const TT &... args)
Append keys to existing list.matcher_t.
Definition StringMatcherList.h:143
void setKeys(const std::string &arg, const TT &... args)
Define the list of accepted keys.
Definition StringMatcherList.h:134
StringMatcherList operator=(const StringMatcherList< matcher_t > &l)
Replace current list with a new one.
Definition StringMatcherList.h:90
void setKeys(const StringMatcherList< matcher_t > &l)
Replace current list with a new one.
Definition StringMatcherList.h:102
StringMatcherList(const StringMatcherList< T > &l)
Copy constructor. Copies the list of quantities.
Definition StringMatcherList.h:68
General-purpose key matcher: tests string equality, or regExp, if defined as such.
Definition StringMatcher.h:54
Definition DataSelector.cpp:1277