RDKit
Open-source cheminformatics and machine learning.
GreaterEqualQuery.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2003-2020 Greg Landrum and Rational Discovery LLC
3 //
4 // @@ All Rights Reserved @@
5 // This file is part of the RDKit.
6 // The contents are covered by the terms of the BSD license
7 // which is included in the file license.txt, found at the root
8 // of the RDKit source tree.
9 //
10 #include <RDGeneral/export.h>
11 #ifndef RD_GREATEREQUALQUERY_H
12 #define RD_GREATEREQUALQUERY_H
13 #include "Query.h"
14 #include "EqualityQuery.h"
15 
16 namespace Queries {
17 //! \brief a Query implementing >= using a particular
18 //! value (and an optional tolerance)
19 template <class MatchFuncArgType, class DataFuncArgType = MatchFuncArgType,
20  bool needsConversion = false>
22  : public EqualityQuery<MatchFuncArgType, DataFuncArgType, needsConversion> {
23  public:
24  GreaterEqualQuery() { this->d_tol = 0; };
25  //! constructs with our target value
26  explicit GreaterEqualQuery(DataFuncArgType what) {
27  this->d_val = what;
28  this->d_tol = 0;
29  this->df_negate = false;
30  };
31  //! constructs with our target value and a tolerance
32  GreaterEqualQuery(DataFuncArgType v, DataFuncArgType t) {
33  this->d_val = v;
34  this->d_tol = t;
35  this->df_negate = false;
36  };
37 
38  bool Match(const DataFuncArgType what) const {
39  MatchFuncArgType mfArg =
41  if (queryCmp(this->d_val, mfArg, this->d_tol) >= 0) {
42  if (this->getNegation())
43  return false;
44  else
45  return true;
46  } else {
47  if (this->getNegation())
48  return true;
49  else
50  return false;
51  }
52  };
55  new GreaterEqualQuery<MatchFuncArgType, DataFuncArgType,
56  needsConversion>();
57  res->setVal(this->d_val);
58  res->setTol(this->d_tol);
59  res->setNegation(this->getNegation());
60  res->setDataFunc(this->d_dataFunc);
61  res->d_description = this->d_description;
62  res->d_queryType = this->d_queryType;
63  return res;
64  };
65 
66  std::string getFullDescription() const {
67  std::ostringstream res;
68  res << this->getDescription();
69  res << " " << this->d_val;
70  if (this->getNegation())
71  res << " ! >= ";
72  else
73  res << " >= ";
74  return res.str();
75  };
76 };
77 } // namespace Queries
78 #endif
a Query implementing ==: arguments must match a particular value (within an optional tolerance)
Definition: EqualityQuery.h:24
void setTol(MatchFuncArgType what)
sets our tolerance
Definition: EqualityQuery.h:47
void setVal(MatchFuncArgType what)
sets our target value
Definition: EqualityQuery.h:42
a Query implementing >= using a particular value (and an optional tolerance)
Query< MatchFuncArgType, DataFuncArgType, needsConversion > * copy() const
returns a copy of this Query
std::string getFullDescription() const
returns a fuller text description
bool Match(const DataFuncArgType what) const
returns whether or not we match the argument
GreaterEqualQuery(DataFuncArgType what)
constructs with our target value
GreaterEqualQuery(DataFuncArgType v, DataFuncArgType t)
constructs with our target value and a tolerance
class to allow integer values to pick templates
Definition: Query.h:26
Base class for all queries.
Definition: Query.h:45
MatchFuncArgType(* d_dataFunc)(DataFuncArgType)
Definition: Query.h:162
MatchFuncArgType TypeConvert(MatchFuncArgType what, Int2Type< false >) const
calls our dataFunc (if it's set) on what and returns the result, otherwise returns what
Definition: Query.h:167
std::string d_queryType
Definition: Query.h:151
const std::string & getDescription() const
returns our text description
Definition: Query.h:71
void setDataFunc(MatchFuncArgType(*what)(DataFuncArgType))
sets our data function
Definition: Query.h:94
bool getNegation() const
returns whether or not we are negated
Definition: Query.h:60
void setNegation(bool what)
sets whether or not we are negated
Definition: Query.h:58
bool df_negate
Definition: Query.h:153
MatchFuncArgType d_tol
Definition: Query.h:149
MatchFuncArgType d_val
Definition: Query.h:148
std::string d_description
Definition: Query.h:150
int queryCmp(const T1 v1, const T2 v2, const T1 tol)
Definition: Query.h:195