8#ifndef TRITON_SOLVERINTERFACE_HPP
9#define TRITON_SOLVERINTERFACE_HPP
11#include <unordered_map>
72 TRITON_EXPORT
virtual std::string
getName(
void)
const = 0;
This interface is used to interface with solvers.
virtual TRITON_EXPORT bool isSat(const triton::ast::SharedAbstractNode &node, triton::engines::solver::status_e *status=nullptr, triton::uint32 timeout=0, triton::uint32 *solvingTime=nullptr) const =0
Returns true if an expression is satisfiable.
virtual TRITON_EXPORT std::unordered_map< triton::usize, SolverModel > getModel(const triton::ast::SharedAbstractNode &node, triton::engines::solver::status_e *status=nullptr, triton::uint32 timeout=0, triton::uint32 *solvingTime=nullptr) const =0
Computes and returns a model from a symbolic constraint. State is returned in the status pointer as w...
virtual TRITON_EXPORT std::string getName(void) const =0
Returns the name of the solver.
virtual TRITON_EXPORT void setTimeout(triton::uint32 ms)=0
Defines a solver timeout (in milliseconds).
virtual TRITON_EXPORT ~SolverInterface()
Destructor.
virtual TRITON_EXPORT void setMemoryLimit(triton::uint32 mem)=0
Defines a solver memory consumption limit (in megabytes).
virtual TRITON_EXPORT std::vector< std::unordered_map< triton::usize, SolverModel > > getModels(const triton::ast::SharedAbstractNode &node, triton::uint32 limit, triton::engines::solver::status_e *status=nullptr, triton::uint32 timeout=0, triton::uint32 *solvingTime=nullptr) const =0
Computes and returns several models from a symbolic constraint. The limit is the max number of models...
std::shared_ptr< triton::ast::AbstractNode > SharedAbstractNode
Shared Abstract Node.
std::uint32_t uint32
unisgned 32-bits