RDKit: OrQuery.h Source File

| RDKit Open-source cheminformatics and machine learning.

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

OrQuery.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2003-2006 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 #ifndef __RD_ORQUERY_H__
11 #define __RD_ORQUERY_H__
12
13 #include "Query.h"
14
15 namespace Queries {
16 //! a Query implementing AND: requires any child to be \c true
17 template <class MatchFuncArgType, class DataFuncArgType = MatchFuncArgType,
18 bool needsConversion = false>
19 class OrQuery
20 : public Query<MatchFuncArgType, DataFuncArgType, needsConversion> {
21 public:
22 typedef Query<MatchFuncArgType, DataFuncArgType, needsConversion> BASE;
23 OrQuery() { this->df_negate = false; };
24
25 bool Match(const DataFuncArgType what) const {
26 bool res = false;
27 typename BASE::CHILD_VECT_CI it1;
28 for (it1 = this->beginChildren(); it1 != this->endChildren(); ++it1) {
29 bool tmp = (*it1)->Match(what);
30 if (tmp) {
31 res = true;
32 break;
33 }
34 }
35 if (this->getNegation()) res = !res;
36 return res;
37 };
38
39 Query<MatchFuncArgType, DataFuncArgType, needsConversion> *copy() const {
40 OrQuery<MatchFuncArgType, DataFuncArgType, needsConversion> *res =
41 new OrQuery<MatchFuncArgType, DataFuncArgType, needsConversion>();
42
43 typename BASE::CHILD_VECT_CI i;
44 for (i = this->beginChildren(); i != this->endChildren(); ++i) {
45 res->addChild(typename BASE::CHILD_TYPE(i->get()->copy()));
46 }
47 res->setNegation(this->getNegation());
48 res->d_description = this->d_description;
49 return res;
50 };
51 };
52 }
53 #endif
Queries::Query::getNegation
bool getNegation() const
returns whether or not we are negated
Definition: Query.h:63
Queries
Definition: AndQuery.h:15
Queries::Query::beginChildren
CHILD_VECT_CI beginChildren() const
returns an iterator for the beginning of our child vector
Definition: Query.h:101
Queries::Query::setNegation
void setNegation(bool what)
sets whether or not we are negated
Definition: Query.h:61
Queries::Query::endChildren
CHILD_VECT_CI endChildren() const
returns an iterator for the end of our child vector
Definition: Query.h:103
Queries::OrQuery
a Query implementing AND: requires any child to be true
Definition: OrQuery.h:19
Queries::Query::CHILD_TYPE
boost::shared_ptr< Query< MatchFuncArgType, DataFuncArgType, needsConversion > > CHILD_TYPE
Definition: Query.h:48
Query.h
Queries::Query::addChild
void addChild(CHILD_TYPE child)
adds a child to our list of children
Definition: Query.h:99
Queries::OrQuery::copy
Query< MatchFuncArgType, DataFuncArgType, needsConversion > * copy() const
returns a copy of this Query
Definition: OrQuery.h:39
Queries::OrQuery::OrQuery
OrQuery()
Definition: OrQuery.h:23
Queries::Query::df_negate
bool df_negate
Definition: Query.h:144
Queries::Query::CHILD_VECT_CI
CHILD_VECT::const_iterator CHILD_VECT_CI
Definition: Query.h:51
Queries::Query::d_description
std::string d_description
Definition: Query.h:139
Queries::Query
Base class for all queries.
Definition: Query.h:45
Queries::OrQuery::Match
bool Match(const DataFuncArgType what) const
returns whether or not we match the argument
Definition: OrQuery.h:25
Queries::OrQuery::BASE
Query< MatchFuncArgType, DataFuncArgType, needsConversion > BASE
Definition: OrQuery.h:22