RDKit: AndQuery.h Source File

| 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
16 namespace Queries {
17
18//! a Query implementing AND: requires all children to be \c true
19template <class MatchFuncArgType, class DataFuncArgType = MatchFuncArgType,
20 bool needsConversion = false>
21 class RDKIT_QUERY_EXPORT AndQuery
22 : public Query<MatchFuncArgType, DataFuncArgType, needsConversion> {
23 public:
24 typedef Query<MatchFuncArgType, DataFuncArgType, needsConversion> BASE;
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 }
42 Query<MatchFuncArgType, DataFuncArgType, needsConversion> *copy()
43 const override {
44 AndQuery<MatchFuncArgType, DataFuncArgType, needsConversion> *res =
45 new AndQuery<MatchFuncArgType, DataFuncArgType, needsConversion>();
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
Query.h
Queries::AndQuery::Match
bool Match(const DataFuncArgType what) const override
Definition AndQuery.h:27
Queries::AndQuery::AndQuery
AndQuery()
Definition AndQuery.h:25
Queries::AndQuery< int, const ROMol &, true >::BASE
Query< int, const ROMol &, needsConversion > BASE
Definition AndQuery.h:24
Queries::AndQuery::copy
Query< MatchFuncArgType, DataFuncArgType, needsConversion > * copy() const override
returns a copy of this Query
Definition AndQuery.h:42
Queries::Query::addChild
void addChild(CHILD_TYPE child)
adds a child to our list of children
Definition Query.h:103
Queries::Query::d_queryType
std::string d_queryType
Definition Query.h:153
Queries::Query::endChildren
CHILD_VECT_CI endChildren() const
returns an iterator for the end of our child vector
Definition Query.h:107
Queries::Query::beginChildren
CHILD_VECT_CI beginChildren() const
returns an iterator for the beginning of our child vector
Definition Query.h:105
Queries::Query::getNegation
bool getNegation() const
returns whether or not we are negated
Definition Query.h:61
Queries::Query::setNegation
void setNegation(bool what)
sets whether or not we are negated
Definition Query.h:59
Queries::Query::CHILD_VECT_CI
typename CHILD_VECT::const_iterator CHILD_VECT_CI
Definition Query.h:51
Queries::Query< MatchFuncArgType, MatchFuncArgType, false >::Query
Query()
Definition Query.h:55
Queries::Query::df_negate
bool df_negate
Definition Query.h:155
Queries::Query::CHILD_TYPE
std::shared_ptr< Query< MatchFuncArgType, DataFuncArgType, needsConversion > > CHILD_TYPE
Definition Query.h:47
Queries::Query::d_description
std::string d_description
Definition Query.h:152
export.h
RDKIT_QUERY_EXPORT
#define RDKIT_QUERY_EXPORT
Definition export.h:661
Queries
Definition AndQuery.h:16