RDKit
Open-source cheminformatics and machine learning.
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 #include <RDGeneral/export.h>
11 #ifndef __RD_ORQUERY_H__
12 #define __RD_ORQUERY_H__
13 
14 #include "Query.h"
15 
16 namespace Queries {
17 //! a Query implementing AND: requires any child to be \c true
18 template <class MatchFuncArgType, class DataFuncArgType = MatchFuncArgType,
19  bool needsConversion = false>
20 class OrQuery
21  : public Query<MatchFuncArgType, DataFuncArgType, needsConversion> {
22  public:
24  OrQuery() { this->df_negate = false; };
25 
26  bool Match(const DataFuncArgType what) const {
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()) res = !res;
37  return res;
38  };
39 
43 
44  typename BASE::CHILD_VECT_CI i;
45  for (i = this->beginChildren(); i != this->endChildren(); ++i) {
46  res->addChild(typename BASE::CHILD_TYPE(i->get()->copy()));
47  }
48  res->setNegation(this->getNegation());
49  res->d_description = this->d_description;
50  return res;
51  };
52 };
53 }
54 #endif
void setNegation(bool what)
sets whether or not we are negated
Definition: Query.h:62
a Query implementing AND: requires any child to be true
Definition: OrQuery.h:20
boost::shared_ptr< Query< MatchFuncArgType, DataFuncArgType, needsConversion > > CHILD_TYPE
Definition: Query.h:49
bool getNegation() const
returns whether or not we are negated
Definition: Query.h:64
CHILD_VECT_CI endChildren() const
returns an iterator for the end of our child vector
Definition: Query.h:104
bool Match(const DataFuncArgType what) const
returns whether or not we match the argument
Definition: OrQuery.h:26
Query< MatchFuncArgType, DataFuncArgType, needsConversion > * copy() const
returns a copy of this Query
Definition: OrQuery.h:40
void addChild(CHILD_TYPE child)
adds a child to our list of children
Definition: Query.h:100
bool df_negate
Definition: Query.h:145
CHILD_VECT_CI beginChildren() const
returns an iterator for the beginning of our child vector
Definition: Query.h:102
CHILD_VECT::const_iterator CHILD_VECT_CI
Definition: Query.h:52
std::string d_description
Definition: Query.h:140
Base class for all queries.
Definition: Query.h:46
Query< MatchFuncArgType, DataFuncArgType, needsConversion > BASE
Definition: OrQuery.h:23