23template <
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()) {
35 this->
d_set.insert(what);
42 bool Match(
const DataFuncArgType what)
const override {
43 MatchFuncArgType mfArg =
53 typename std::set<MatchFuncArgType>::const_iterator i;
54 for (i = this->
d_set.begin(); i != this->d_set.end(); ++i) {
63 typename CONTAINER_TYPE::const_iterator
beginSet()
const {
66 typename CONTAINER_TYPE::const_iterator
endSet()
const {
return d_set.end(); }
70 std::ostringstream res;
78 std::ostream_iterator<MatchFuncArgType>(res,
", "));
class to allow integer values to pick templates
MatchFuncArgType(* d_dataFunc)(DataFuncArgType)
MatchFuncArgType TypeConvert(MatchFuncArgType what, Int2Type< false >) const
calls our dataFunc (if it's set) on what and returns the result, otherwise returns what
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
const std::string & getDescription() const
returns our text description
std::string d_description
CONTAINER_TYPE::const_iterator beginSet() const
Query< MatchFuncArgType, DataFuncArgType, needsConversion > * copy() const override
returns a copy of this Query
void clear()
clears our set
std::set< int > CONTAINER_TYPE
void insert(const MatchFuncArgType what)
insert an entry into our set
unsigned int size() const
bool Match(const DataFuncArgType what) const override
CONTAINER_TYPE::const_iterator endSet() const
std::string getFullDescription() const override
returns a fuller text description
#define RDKIT_QUERY_EXPORT