RDKit
Open-source cheminformatics and machine learning.
Loading...
Searching...
No Matches
Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion > Class Template Reference

Base class for all queries. More...

#include <Query.h>

Inheritance diagram for Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >:
Queries::EqualityQuery< MatchFuncArgType, MatchFuncArgType, false > Queries::EqualityQuery< int, ConstAtomPtr, true > Queries::EqualityQuery< int, TargetPtr, true > Queries::SetQuery< int, Atom const *, true > Queries::AndQuery< MatchFuncArgType, DataFuncArgType, needsConversion > Queries::EqualityQuery< MatchFuncArgType, DataFuncArgType, needsConversion > Queries::OrQuery< MatchFuncArgType, DataFuncArgType, needsConversion > Queries::RangeQuery< MatchFuncArgType, DataFuncArgType, needsConversion > Queries::SetQuery< MatchFuncArgType, DataFuncArgType, needsConversion > Queries::XOrQuery< MatchFuncArgType, DataFuncArgType, needsConversion >

Public Types

using CHILD_TYPE = std::shared_ptr< Query< MatchFuncArgType, DataFuncArgType, needsConversion > >
 
using CHILD_VECT = std::vector< CHILD_TYPE >
 
using CHILD_VECT_I = typename CHILD_VECT::iterator
 
using CHILD_VECT_CI = typename CHILD_VECT::const_iterator
 
using MATCH_FUNC_ARG_TYPE = MatchFuncArgType
 
using DATA_FUNC_ARG_TYPE = DataFuncArgType
 

Public Member Functions

 Query ()
 
virtual ~Query ()
 
void setNegation (bool what)
 sets whether or not we are negated
 
bool getNegation () const
 returns whether or not we are negated
 
void setDescription (const std::string &descr)
 sets our text description
 
void setDescription (const char *descr)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const std::string & getDescription () const
 returns our text description
 
virtual std::string getFullDescription () const
 returns a fuller text description
 
void setTypeLabel (const std::string &typ)
 sets our type label
 
void setTypeLabel (const char *typ)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const std::string & getTypeLabel () const
 returns our text label.
 
void setMatchFunc (bool(*what)(MatchFuncArgType))
 sets our match function
 
void setDataFunc (MatchFuncArgType(*what)(DataFuncArgType))
 sets our data function
 
void addChild (CHILD_TYPE child)
 adds a child to our list of children
 
CHILD_VECT_CI beginChildren () const
 returns an iterator for the beginning of our child vector
 
CHILD_VECT_CI endChildren () const
 returns an iterator for the end of our child vector
 
virtual bool Match (const DataFuncArgType arg) const
 returns whether or not we match the argument
 
virtual Query< MatchFuncArgType, DataFuncArgType, needsConversion > * copy () const
 returns a copy of this Query
 

Public Attributes

bool(*)(MatchFuncArgType) getMatchFunc () const
 returns our match function:
 
MatchFuncArgType(*)(DataFuncArgType) getDataFunc () const
 returns our data function:
 

Protected Member Functions

MatchFuncArgType TypeConvert (MatchFuncArgType what, Int2Type< false >) const
 calls our dataFunc (if it's set) on what and returns the result, otherwise returns what
 
MatchFuncArgType TypeConvert (DataFuncArgType what, Int2Type< true >) const
 

Protected Attributes

MatchFuncArgType d_val = 0
 
MatchFuncArgType d_tol = 0
 
std::string d_description = ""
 
std::string d_queryType = ""
 
CHILD_VECT d_children
 
bool df_negate {false}
 
bool(* d_matchFunc )(MatchFuncArgType)
 
union { 
 
   MatchFuncArgType(*   d_dataFunc )(DataFuncArgType) 
 
   MatchFuncArgType(*   d_dataFuncSameType )(MatchFuncArgType) 
 
};  
 

Detailed Description

template<class MatchFuncArgType, class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
class Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >

Base class for all queries.

Query objects have one or two functions associated with them:

  • bool matchFunc(MatchFuncArgType other) returns true or false to indicate whether this query matches other. This is mandatory.
  • MatchFuncArgType dataFunc(DataFuncArgType other) converts the argument other from DataFuncArgType to MatchFuncArgType. This is optional if DataFuncArgType is the same as (or implicitly convertible to) MatchFuncArgType.

Definition at line 45 of file Query.h.

Member Typedef Documentation

◆ CHILD_TYPE

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
using Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::CHILD_TYPE = std::shared_ptr< Query<MatchFuncArgType, DataFuncArgType, needsConversion> >

Definition at line 47 of file Query.h.

◆ CHILD_VECT

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
using Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::CHILD_VECT = std::vector<CHILD_TYPE>

Definition at line 49 of file Query.h.

◆ CHILD_VECT_CI

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
using Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::CHILD_VECT_CI = typename CHILD_VECT::const_iterator

Definition at line 51 of file Query.h.

◆ CHILD_VECT_I

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
using Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::CHILD_VECT_I = typename CHILD_VECT::iterator

Definition at line 50 of file Query.h.

◆ DATA_FUNC_ARG_TYPE

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
using Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::DATA_FUNC_ARG_TYPE = DataFuncArgType

Definition at line 53 of file Query.h.

◆ MATCH_FUNC_ARG_TYPE

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
using Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::MATCH_FUNC_ARG_TYPE = MatchFuncArgType

Definition at line 52 of file Query.h.

Constructor & Destructor Documentation

◆ Query()

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::Query ( )
inline

Definition at line 55 of file Query.h.

◆ ~Query()

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
virtual Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::~Query ( )
inlinevirtual

Definition at line 56 of file Query.h.

Member Function Documentation

◆ addChild()

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
void Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::addChild ( CHILD_TYPE  child)
inline

◆ beginChildren()

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
CHILD_VECT_CI Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::beginChildren ( ) const
inline

returns an iterator for the beginning of our child vector

Definition at line 105 of file Query.h.

◆ copy()

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
virtual Query< MatchFuncArgType, DataFuncArgType, needsConversion > * Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::copy ( ) const
inlinevirtual

returns a copy of this Query

Notes:

  • the caller is responsible for deleteing the result

Reimplemented in RDKit::AtomRingQuery, RDKit::RecursiveStructureQuery, RDKit::HasPropQuery< TargetPtr >, RDKit::HasPropWithValueQuery< TargetPtr, T >, RDKit::HasPropWithValueQuery< TargetPtr, std::string >, RDKit::HasPropWithValueQuery< TargetPtr, ExplicitBitVect >, Queries::AndQuery< MatchFuncArgType, DataFuncArgType, needsConversion >, Queries::EqualityQuery< MatchFuncArgType, DataFuncArgType, needsConversion >, Queries::EqualityQuery< int, ConstAtomPtr, true >, Queries::EqualityQuery< int, TargetPtr, true >, Queries::EqualityQuery< MatchFuncArgType, MatchFuncArgType, false >, Queries::GreaterEqualQuery< MatchFuncArgType, DataFuncArgType, needsConversion >, Queries::GreaterQuery< MatchFuncArgType, DataFuncArgType, needsConversion >, Queries::LessEqualQuery< MatchFuncArgType, DataFuncArgType, needsConversion >, Queries::LessQuery< MatchFuncArgType, DataFuncArgType, needsConversion >, Queries::OrQuery< MatchFuncArgType, DataFuncArgType, needsConversion >, Queries::RangeQuery< MatchFuncArgType, DataFuncArgType, needsConversion >, Queries::SetQuery< MatchFuncArgType, DataFuncArgType, needsConversion >, Queries::SetQuery< int, Atom const *, true >, and Queries::XOrQuery< MatchFuncArgType, DataFuncArgType, needsConversion >.

Definition at line 131 of file Query.h.

References Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::addChild(), Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::d_dataFunc, Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::d_description, Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::d_matchFunc, Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::d_queryType, Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::d_tol, Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::d_val, and Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::df_negate.

Referenced by RDKit::QueryAtom::operator=(), RDKit::QueryAtom::QueryAtom(), and RDKit::QueryBond::QueryBond().

◆ endChildren()

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
CHILD_VECT_CI Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::endChildren ( ) const
inline

returns an iterator for the end of our child vector

Definition at line 107 of file Query.h.

◆ getDescription()

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
const std::string & Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::getDescription ( ) const
inline

returns our text description

Definition at line 70 of file Query.h.

Referenced by RDKit::isAtomDummy().

◆ getFullDescription()

◆ getNegation()

◆ getTypeLabel()

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
const std::string & Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::getTypeLabel ( ) const
inline

returns our text label.

Definition at line 85 of file Query.h.

◆ Match()

◆ setDataFunc()

◆ setDescription() [1/2]

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
void Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::setDescription ( const char *  descr)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 66 of file Query.h.

◆ setDescription() [2/2]

◆ setMatchFunc()

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
void Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::setMatchFunc ( bool(*)(MatchFuncArgType)  what)
inline

sets our match function

Definition at line 88 of file Query.h.

◆ setNegation()

◆ setTypeLabel() [1/2]

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
void Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::setTypeLabel ( const char *  typ)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 83 of file Query.h.

◆ setTypeLabel() [2/2]

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
void Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::setTypeLabel ( const std::string &  typ)
inline

sets our type label

Definition at line 81 of file Query.h.

◆ TypeConvert() [1/2]

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
MatchFuncArgType Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::TypeConvert ( DataFuncArgType  what,
Int2Type< true >   
) const
inlineprotected

calls our dataFunc (which must be set) on what and returns the result

Definition at line 182 of file Query.h.

References PRECONDITION.

◆ TypeConvert() [2/2]

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
MatchFuncArgType Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::TypeConvert ( MatchFuncArgType  what,
Int2Type< false >   
) const
inlineprotected

calls our dataFunc (if it's set) on what and returns the result, otherwise returns what

Definition at line 169 of file Query.h.

Member Data Documentation

◆ [union]

union { ... } Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >

◆ d_children

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
CHILD_VECT Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::d_children
protected

Definition at line 154 of file Query.h.

◆ d_dataFunc

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
MatchFuncArgType(* Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::d_dataFunc) (DataFuncArgType)

◆ d_dataFuncSameType

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
MatchFuncArgType(* Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::d_dataFuncSameType) (MatchFuncArgType)

Definition at line 165 of file Query.h.

◆ d_description

◆ d_matchFunc

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
bool(* Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::d_matchFunc) (MatchFuncArgType)
protected

◆ d_queryType

◆ d_tol

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
MatchFuncArgType Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::d_tol = 0
protected

◆ d_val

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
MatchFuncArgType Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::d_val = 0
protected

◆ df_negate

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
bool Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::df_negate {false}
protected

◆ getDataFunc

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
MatchFuncArgType(*)(DataFuncArgType) Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::getDataFunc() const
inline

returns our data function:

Definition at line 98 of file Query.h.

◆ getMatchFunc

template<class MatchFuncArgType , class DataFuncArgType = MatchFuncArgType, bool needsConversion = false>
bool(*)(MatchFuncArgType) Queries::Query< MatchFuncArgType, DataFuncArgType, needsConversion >::getMatchFunc() const
inline

returns our match function:

Definition at line 92 of file Query.h.


The documentation for this class was generated from the following file: