|
Open Graph Drawing Framework |
v. 2023.09 (Elderberry)
|
|
|
Go to the documentation of this file.
42 #define var_Undef (-1)
61 inline int var (
Lit p) {
return p.
x >> 1; }
85 #define l_True (lbool((uint8_t)0)) // gcc does not do constant propagation if these are real constants.
86 #define l_False (lbool((uint8_t)1))
87 #define l_Undef (lbool((uint8_t)2))
88 #define l_Timeout (lbool((uint8_t)9)) // HEDTKE
110 uint8_t sel = (this->value << 1) | (b.
value << 3);
111 uint8_t v = (0xF7F755F4 >> sel) & 3;
115 uint8_t sel = (this->value << 1) | (b.
value << 3);
116 uint8_t v = (0xFCFCF400 >> sel) & 3;
132 #pragma warning ( push )
133 #pragma warning ( disable : 4200 )
152 header.has_extra = use_extra;
156 for (
int i = 0; i < ps.size(); i++)
170 for (
int i = 0; i <
size(); i++)
192 operator const Lit* (void)
const {
return reinterpret_cast<const Lit*
>(
data); }
202 #pragma warning ( pop )
214 return (
sizeof(
Clause) + (
sizeof(
Lit) * (
size + (
int)has_extra))) /
sizeof(uint32_t); }
228 assert(
sizeof(
Lit) ==
sizeof(uint32_t));
229 assert(
sizeof(
float) ==
sizeof(uint32_t));
233 new (
lea(cid))
Clause(ps, use_extra, learnt);
262 to[cr].mark(c.
mark());
263 if (to[cr].learnt()) to[cr].activity() = c.
activity();
264 else if (to[cr].has_extra()) to[cr].calcAbstraction();
272 template<
class Idx,
class Vec,
class Deleted>
291 void clean (
const Idx& idx);
307 template<
class Idx,
class Vec,
class Deleted>
310 for (
int i = 0; i < dirties.size(); i++)
312 if (dirty[
toInt(dirties[i])])
318 template<
class Idx,
class Vec,
class Deleted>
323 for (i = j = 0; i <
vec.
size(); i++)
324 if (!deleted(
vec[i]))
327 dirty[
toInt(idx)] = 0;
389 if (other.
size() <
size() || (extra.abst & ~other.extra.abst) != 0)
390 if (other.
size() <
size() || (!
learnt() && !other.
learnt() && (extra.abst & ~other.extra.abst) != 0))
398 const Lit* c =
static_cast<const Lit*
>(*this);
399 const Lit* d =
static_cast<const Lit*
>(other);
401 for (
unsigned i = 0; i <
header.size; i++) {
403 for (
unsigned j = 0; j < other.
header.
size; j++)
406 else if (ret ==
lit_Undef && c[i] == ~d[j]){
void reloc(CRef &cr, ClauseAllocator &to)
bool operator==(lbool b) const
bool operator==(Lit p) const
static int clauseWord32Size(int size, bool has_extra)
lbool operator^(bool b) const
Clause(const V &ps, bool use_extra, bool learnt)
Lit operator^(Lit p, bool b)
struct Minisat::Internal::Clause::@7 header
bool operator<(Lit p) const
bool operator!=(Lit p) const
uint32_t abstraction() const
lbool operator||(lbool b) const
bool operator!=(lbool b) const
union Minisat::Internal::Clause::@8 data[0]
void growTo(CRef cr, const T &t)
const T & operator[](CRef cr) const
bool peek(const K &k, D &d) const
OccLists(const Deleted &d)
lbool operator&&(lbool b) const
const vec< Pair > & bucket(int i) const
void clear(bool free=true)
void insert(CRef cr, const T &t)
uint32_t operator()(CRef cr) const
Clause & operator[](Ref r)
Vec & lookup(const Idx &idx)
CRef alloc(const Lits &ps, bool learnt=false)
const Clause * lea(Ref r) const
friend int toInt(lbool l)
void smudge(const Idx &idx)
Vec & operator[](const Idx &idx)
void insert(const K &k, const D &d)
const Clause & operator[](Ref r) const
Represents a simple class for clause storage.
const vec< typename HashTable::Pair > & bucket(int i) const
void moveTo(ClauseAllocator &to)
void clear(bool dealloc=false)
Lit mkLit(Var var, bool sign=false)
void clean(const Idx &idx)
ClauseAllocator(uint32_t start_cap)
friend lbool toLbool(int v)
void moveTo(RegionAllocator &to)
friend Lit mkLit(Var var, bool sign)
RegionAllocator< uint32_t >::Ref CRef
static void remove(V &ts, const T &t)
Lit subsumes(const Clause &other) const
void init(const Idx &idx)