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