mirror of
https://github.com/YosysHQ/yosys
synced 2025-06-06 06:03:23 +00:00
Replaced ezDefaultSAT with ezSatPtr
This commit is contained in:
parent
f778a4081c
commit
4e6ca7760f
12 changed files with 186 additions and 139 deletions
|
@ -29,7 +29,37 @@
|
|||
|
||||
YOSYS_NAMESPACE_BEGIN
|
||||
|
||||
typedef ezMiniSAT ezDefaultSAT;
|
||||
// defined in kernel/register.cc
|
||||
extern struct SatSolver *yosys_satsolver_list;
|
||||
extern struct SatSolver *yosys_satsolver;
|
||||
|
||||
struct SatSolver
|
||||
{
|
||||
string name;
|
||||
SatSolver *next;
|
||||
virtual ezSAT *create() = 0;
|
||||
|
||||
SatSolver(string name) : name(name) {
|
||||
next = yosys_satsolver_list;
|
||||
yosys_satsolver_list = this;
|
||||
}
|
||||
|
||||
virtual ~SatSolver() {
|
||||
auto p = &yosys_satsolver_list;
|
||||
while (*p) {
|
||||
if (*p == this)
|
||||
*p = next;
|
||||
else
|
||||
p = &(*p)->next;
|
||||
}
|
||||
if (yosys_satsolver == this)
|
||||
yosys_satsolver = yosys_satsolver_list;
|
||||
}
|
||||
};
|
||||
|
||||
struct ezSatPtr : public std::unique_ptr<ezSAT> {
|
||||
ezSatPtr() : unique_ptr<ezSAT>(yosys_satsolver->create()) { }
|
||||
};
|
||||
|
||||
struct SatGen
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue