OrQuery.h
Go to the documentation of this file.
//
// Copyright (c) 2003-2006 Greg Landrum and Rational Discovery LLC
//
// @@ All Rights Reserved @@
// This file is part of the RDKit.
// The contents are covered by the terms of the BSD license
// which is included in the file license.txt, found at the root
// of the RDKit source tree.
//
#ifndef __RD_ORQUERY_H__
#define __RD_ORQUERY_H__
#include "Query.h"
namespace Queries {
//! a Query implementing AND: requires any child to be \c true
template <class MatchFuncArgType, class DataFuncArgType=MatchFuncArgType,
bool needsConversion=false>
class OrQuery : public Query<MatchFuncArgType, DataFuncArgType,needsConversion> {
public:
typedef Query<MatchFuncArgType, DataFuncArgType,needsConversion> BASE;
OrQuery() {
this->df_negate = false;
};
bool Match(const DataFuncArgType what) const {
bool res = false;
typename BASE::CHILD_VECT_CI it1;
for(it1=this->beginChildren();
it1!=this->endChildren();
++it1){
bool tmp = (*it1)->Match(what);
if( tmp ){
res = true;
break;
}
}
if( this->getNegation() ) res = !res;
return res;
};
Query<MatchFuncArgType,DataFuncArgType,needsConversion> *
copy( ) const {
OrQuery<MatchFuncArgType,DataFuncArgType,needsConversion> *res =
new OrQuery<MatchFuncArgType,DataFuncArgType,needsConversion>();
typename BASE::CHILD_VECT_CI i;
for(i=this->beginChildren();
i!=this->endChildren();
++i){
res->addChild(typename BASE::CHILD_TYPE(i->get()->copy()));
}
res->setNegation(this->getNegation());
res->d_description = this->d_description;
return res;
};
};
}
#endif
Queries::Query::getNegation
bool getNegation() const
returns whether or not we are negated
Definition: Query.h:60
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:88
Queries::Query::setNegation
void setNegation(bool what)
sets whether or not we are negated
Definition: Query.h:58
Queries::Query::endChildren
CHILD_VECT_CI endChildren() const
returns an iterator for the end of our child vector
Definition: Query.h:90
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::OrQuery::BASE
Query< MatchFuncArgType, DataFuncArgType, needsConversion > BASE
Definition: OrQuery.h:22
Queries::Query::addChild
void addChild(CHILD_TYPE child)
adds a child to our list of children
Definition: Query.h:86
Queries::OrQuery::OrQuery
OrQuery()
Definition: OrQuery.h:23
Queries::Query::df_negate
bool df_negate
Definition: Query.h:128
Queries::OrQuery::copy
Query< MatchFuncArgType, DataFuncArgType, needsConversion > * copy() const
returns a copy of this Query
Definition: OrQuery.h:44
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:123
Queries::Query
Base class for all queries.
Definition: Query.h:46
Queries::OrQuery::Match
bool Match(const DataFuncArgType what) const
returns whether or not we match the argument
Definition: OrQuery.h:27