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) {
34 if (
d_set.find(what) == this->d_set.end()) this->
d_set.insert(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) {
60 typename CONTAINER_TYPE::const_iterator
beginSet()
const {
63 typename CONTAINER_TYPE::const_iterator
endSet()
const {
66 unsigned int size()
const {
return rdcast<unsigned int>(
d_set.size()); };
69 std::ostringstream res;
76 std::ostream_iterator<MatchFuncArgType>(res,
", "));
class to allow integer values to pick templates
Base class for all queries.
MatchFuncArgType(* d_dataFunc)(MatchFuncArgType)
MatchFuncArgType TypeConvert(MatchFuncArgType what, Int2Type< false >) const
calls our dataFunc (if it's set) on what and returns the result, otherwise returns what
const std::string & getDescription() const
returns our text description
void setDataFunc(MatchFuncArgType(*what)(DataFuncArgType))
sets our data function
bool getNegation() const
returns whether or not we are negated
void setNegation(bool what)
sets whether or not we are negated
std::string d_description
a Query implementing a set: arguments must one of a set of values
bool Match(const DataFuncArgType what) const
CONTAINER_TYPE::const_iterator beginSet() const
void clear()
clears our set
Query< MatchFuncArgType, DataFuncArgType, needsConversion > * copy() const
returns a copy of this Query
std::set< MatchFuncArgType > CONTAINER_TYPE
std::string getFullDescription() const
returns a fuller text description
void insert(const MatchFuncArgType what)
insert an entry into our set
unsigned int size() const
CONTAINER_TYPE::const_iterator endSet() const