A generic boolean expression interface for the implementation of query/target object equivalence tests in molecular graph matching algorithms.
More...
|
virtual | ~MatchExpression () |
| Virtual Destructor. More...
|
|
virtual bool | operator() (const ObjType &query_obj, const ObjType &target_obj, const Base::Any &aux_data) const |
| Performs an evaluation of the expression for the given query and target objects. More...
|
|
virtual bool | operator() (const ObjType &query_obj, const ObjType &target_obj, const AtomBondMapping &mapping, const Base::Any &aux_data) const |
| Performs an evaluation of the expression for the given query and target objects under consideration of the provided candidate atom/bond mapping. More...
|
|
virtual bool | requiresAtomBondMapping () const |
| Tells whether the expression must be reevaluated after a query to target atom/bond mapping candidate has been found. More...
|
|
template<typename ObjType>
class CDPL::Chem::MatchExpression< ObjType, void >
A generic boolean expression interface for the implementation of query/target object equivalence tests in molecular graph matching algorithms.
The MatchExpression
interface abstracts the task of checking a set of constraints on the attributes of target objects when performing query object equivalence tests in molecular graph matching procedures. Subclasses of MatchExpression
must override one (or all, if required) of the provided function call operators to implement the logic of the constraint checks. The first form of the two operators gets called in the pre-mapping stage of the graph matching algorithm where all feasible query/target object pairings are determined. In this pre-mapping stage all sorts of query constraints can be checked that are invariant with respect to the final mapping between any of the other query and target objects. The second type of operator is invoked immediately after a complete graph mapping solution has been found and can be used to re-evaluate the validity of a given query/target object pairing in the context of the provided matching result. As soon as a pairing is found to be invalid, the current mapping solution is rejected and the algorithm proceeds to find the next possible query to target graph mapping (if any). For efficiency reasons, subclasses of MatchExpression
which implement the post-mapping function call operator must explicitly enable its invocation by additionally overriding the MatchExpression::requiresAtomBondMapping() method. Its implementation simply has to return true
(the default implementation returns false
) to request the invocation of the operator.
- Template Parameters
-
ObjType | The type of the query/target objects for which the expression gets evaluated. |