11 #ifndef __RD_SETQUERY_H__ 12 #define __RD_SETQUERY_H__ 23 template <
class MatchFuncArgType,
class DataFuncArgType = MatchFuncArgType,
24 bool needsConversion =
false>
26 :
public Query<MatchFuncArgType, DataFuncArgType, needsConversion> {
30 SetQuery() :
Query<MatchFuncArgType, DataFuncArgType, needsConversion>(){};
33 void insert(
const MatchFuncArgType what) {
40 bool Match(
const DataFuncArgType what)
const {
41 MatchFuncArgType mfArg =
50 typename std::set<MatchFuncArgType>::const_iterator i;
51 for (i = this->
d_set.begin(); i != this->
d_set.end(); ++i) {
59 typename CONTAINER_TYPE::const_iterator
beginSet()
const {
62 typename CONTAINER_TYPE::const_iterator
endSet()
const {
65 unsigned int size()
const {
return rdcast<unsigned int>(
d_set.size()); };
68 std::ostringstream res;
75 std::ostream_iterator<MatchFuncArgType>(res,
", "));
unsigned int size() const
void clear()
clears our set
std::string getFullDescription() const
returns a fuller text description
void setNegation(bool what)
sets whether or not we are negated
CONTAINER_TYPE::const_iterator endSet() const
bool getNegation() const
returns whether or not we are negated
Query< MatchFuncArgType, DataFuncArgType, needsConversion > * copy() const
returns a copy of this Query
class to allow integer values to pick templates
MatchFuncArgType(* d_dataFunc)(DataFuncArgType)
void insert(const MatchFuncArgType what)
insert an entry into our set
void setDataFunc(MatchFuncArgType(*what)(DataFuncArgType))
sets our data function
CONTAINER_TYPE::const_iterator beginSet() const
std::set< MatchFuncArgType > CONTAINER_TYPE
std::string d_description
const std::string & getDescription() const
returns our text description
MatchFuncArgType TypeConvert(MatchFuncArgType what, Int2Type< false >) const
calls our dataFunc (if it's set) on what and returns the result, otherwise returns what ...
Base class for all queries.
a Query implementing a set: arguments must one of a set of values
bool Match(const DataFuncArgType what) const
returns whether or not we match the argument