RDKit: OrQuery.h Source File

| 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>
20 class RDKIT_QUERY_EXPORT OrQuery
21 : public Query<MatchFuncArgType, DataFuncArgType, needsConversion> {
22 public:
23 typedef Query<MatchFuncArgType, DataFuncArgType, needsConversion> BASE;
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
42 Query<MatchFuncArgType, DataFuncArgType, needsConversion> *copy()
43 const override {
44 OrQuery<MatchFuncArgType, DataFuncArgType, needsConversion> *res =
45 new OrQuery<MatchFuncArgType, DataFuncArgType, needsConversion>();
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
Query.h
Queries::OrQuery< int, const ROMol &, true >::BASE
Query< int, const ROMol &, needsConversion > BASE
Definition OrQuery.h:23
Queries::OrQuery::OrQuery
OrQuery()
Definition OrQuery.h:24
Queries::OrQuery::copy
Query< MatchFuncArgType, DataFuncArgType, needsConversion > * copy() const override
returns a copy of this Query
Definition OrQuery.h:42
Queries::OrQuery::Match
bool Match(const DataFuncArgType what) const override
Definition OrQuery.h:26
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