RDKit
Open-source cheminformatics and machine learning.
LessEqualQuery.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_LESSEQUALQUERY_H
12 #define RD_LESSEQUALQUERY_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  LessEqualQuery() { this->d_tol = 0; };
25  //! constructs with our target value
26  explicit LessEqualQuery(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  LessEqualQuery(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  };
53 
56  new LessEqualQuery<MatchFuncArgType, DataFuncArgType,
57  needsConversion>();
58  res->setNegation(this->getNegation());
59  res->setVal(this->d_val);
60  res->setTol(this->d_tol);
61  res->setDataFunc(this->d_dataFunc);
62  res->d_description = this->d_description;
63  res->d_queryType = this->d_queryType;
64  return res;
65  };
66 
67  std::string getFullDescription() const {
68  std::ostringstream res;
69  res << this->getDescription();
70  res << " " << this->d_val;
71  if (this->getNegation())
72  res << " ! <= ";
73  else
74  res << " <= ";
75  return res.str();
76  };
77 };
78 } // namespace Queries
79 #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
class to allow integer values to pick templates
Definition: Query.h:26
a Query implementing <= using a particular value (and an optional tolerance)
std::string getFullDescription() const
returns a fuller text description
Query< MatchFuncArgType, DataFuncArgType, needsConversion > * copy() const
returns a copy of this Query
bool Match(const DataFuncArgType what) const
returns whether or not we match the argument
LessEqualQuery(DataFuncArgType what)
constructs with our target value
LessEqualQuery(DataFuncArgType v, DataFuncArgType t)
constructs with our target value and a tolerance
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