RDKit
Open-source cheminformatics and machine learning.
Loading...
Searching...
No Matches
OrQuery.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_ORQUERY_H
12#define RD_ORQUERY_H
13
14#include "Query.h"
15
16namespace Queries {
17//! a Query implementing AND: requires any child to be \c true
18template <class MatchFuncArgType, class DataFuncArgType = MatchFuncArgType,
19 bool needsConversion = false>
21 : public Query<MatchFuncArgType, DataFuncArgType, needsConversion> {
22 public:
24 OrQuery() { this->df_negate = false; }
25
26 bool Match(const DataFuncArgType what) const override {
27 bool res = false;
28 typename BASE::CHILD_VECT_CI it1;
29 for (it1 = this->beginChildren(); it1 != this->endChildren(); ++it1) {
30 bool tmp = (*it1)->Match(what);
31 if (tmp) {
32 res = true;
33 break;
34 }
35 }
36 if (this->getNegation()) {
37 res = !res;
38 }
39 return res;
40 }
41
43 const override {
46
47 typename BASE::CHILD_VECT_CI i;
48 for (i = this->beginChildren(); i != this->endChildren(); ++i) {
49 res->addChild(typename BASE::CHILD_TYPE(i->get()->copy()));
50 }
51 res->setNegation(this->getNegation());
52 res->d_description = this->d_description;
53 res->d_queryType = this->d_queryType;
54 return res;
55 }
56};
57} // namespace Queries
58#endif
a Query implementing AND: requires any child to be true
Definition OrQuery.h:21
Query< MatchFuncArgType, DataFuncArgType, needsConversion > BASE
Definition OrQuery.h:23
Query< MatchFuncArgType, DataFuncArgType, needsConversion > * copy() const override
returns a copy of this Query
Definition OrQuery.h:42
bool Match(const DataFuncArgType what) const override
returns whether or not we match the argument
Definition OrQuery.h:26
Base class for all queries.
Definition Query.h:45
void addChild(CHILD_TYPE child)
adds a child to our list of children
Definition Query.h:103
std::string d_queryType
Definition Query.h:153
void setNegation(bool what)
sets whether or not we are negated
Definition Query.h:59
typename CHILD_VECT::const_iterator CHILD_VECT_CI
Definition Query.h:51
std::shared_ptr< Query< MatchFuncArgType, DataFuncArgType, needsConversion > > CHILD_TYPE
Definition Query.h:47
std::string d_description
Definition Query.h:152
#define RDKIT_QUERY_EXPORT
Definition export.h:589