29 #ifndef CDPL_CHEM_MULTISUBSTRUCTURESEARCH_HPP
30 #define CDPL_CHEM_MULTISUBSTRUCTURESEARCH_HPP
116 void setup(
const std::string& qry_expr =
"");
124 std::string
validate(
const std::string& qry_expr, std::size_t max_substr_id);
130 typedef std::unique_ptr<ExprTreeNode> ExprTreeNodePtr;
131 typedef std::vector<MolecularGraph::SharedPointer> MolGraphPtrArray;
133 Token nextToken(
const std::string& expr);
135 ExprTreeNodePtr parseExpression(
const std::string& expr);
136 ExprTreeNodePtr parseTerm(
const std::string& expr);
137 ExprTreeNodePtr parseFactor(
const std::string& expr);
139 void validateExpression(
const std::string& expr, std::size_t max_substr_id);
140 void validateTerm(
const std::string& expr, std::size_t max_substr_id);
141 void validateFactor(
const std::string& expr, std::size_t max_substr_id);
143 MolGraphPtrArray substructures;
144 std::size_t nextTokenStart;
146 std::size_t substrID;
147 ExprTreeNodePtr exprTree;
Definition of the preprocessor macro CDPL_CHEM_API.
#define CDPL_CHEM_API
Tells the compiler/linker which classes, functions and variables are part of the library API.
Definition of class CDPL::Chem::MolecularGraph.
Abstract base class for representations of a chemical structure as a graph of bonded atoms.
Definition: MolecularGraph.hpp:57
std::shared_ptr< MolecularGraph > SharedPointer
A reference-counted smart pointer [SHPTR] for dynamically allocated MolecularGraph instances.
Definition: MolecularGraph.hpp:63
Evaluates a boolean expression over multiple substructure queries against a target molecular graph.
Definition: MultiSubstructureSearch.hpp:57
void clear()
Removes all stored substructure queries and clears the compiled expression.
std::size_t getNumSubstructures() const
Returns the number of stored substructure queries.
void addSubstructure(const MolecularGraph::SharedPointer &molgraph)
Appends a substructure query to the internal substructure list.
~MultiSubstructureSearch()
Destructor.
MultiSubstructureSearch(const MultiSubstructureSearch &)=delete
MultiSubstructureSearch()
Constructs and initializes a MultiSubstructureSearch instance.
void setup(const std::string &qry_expr="")
Compiles the boolean substructure expression qry_expr.
std::shared_ptr< MultiSubstructureSearch > SharedPointer
A reference-counted smart pointer [SHPTR] for dynamically allocated MultiSubstructureSearch instances...
Definition: MultiSubstructureSearch.hpp:61
bool matches(const MolecularGraph &molgraph)
Evaluates the configured boolean substructure expression against the target molecular graph molgraph.
std::string validate(const std::string &qry_expr, std::size_t max_substr_id)
Validates the syntax of qry_expr without compiling it for evaluation.
MultiSubstructureSearch & operator=(const MultiSubstructureSearch &)=delete
The namespace of the Chemical Data Processing Library.