Skip to content

Commit 68e5768

Browse files
committed
aig_nodet constructors
This adds constructors for the two kinds of AIG nodes, preventing uninitialized nodes.
1 parent d0651a3 commit 68e5768

File tree

2 files changed

+29
-22
lines changed

2 files changed

+29
-22
lines changed

src/trans-netlist/aig.h

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,30 @@ class aig_nodet {
2222
public:
2323
literalt a, b;
2424

25-
aig_nodet() {}
25+
explicit aig_nodet(literalt::var_not var_no)
26+
: a{literalt::unused_var_no(), false}, b{var_no, false}
27+
{
28+
}
2629

27-
bool is_and() const { return a.var_no() != literalt::unused_var_no(); }
30+
aig_nodet(literalt _a, literalt _b) : a(_a), b(_b)
31+
{
32+
}
2833

29-
bool is_var() const { return a.var_no() == literalt::unused_var_no(); }
34+
bool is_and() const
35+
{
36+
return a.var_no() != literalt::unused_var_no();
37+
}
3038

31-
void make_and(literalt _a, literalt _b) {
32-
a = _a;
33-
b = _b;
39+
bool is_var() const
40+
{
41+
return a.var_no() == literalt::unused_var_no();
3442
}
3543

36-
void make_var() { a.set(literalt::unused_var_no(), false); }
44+
literalt::var_not var_no() const
45+
{
46+
PRECONDITION(is_var());
47+
return b.var_no();
48+
}
3749
};
3850

3951
class aigt {
@@ -56,23 +68,15 @@ class aigt {
5668

5769
void swap(aigt &g) { nodes.swap(g.nodes); }
5870

59-
literalt new_node() {
60-
nodes.push_back(aig_nodet());
61-
literalt l;
62-
l.set(nodes.size() - 1, false);
63-
return l;
64-
}
65-
66-
literalt new_var_node() {
67-
literalt l = new_node();
68-
nodes.back().make_var();
69-
return l;
71+
literalt new_var_node(literalt::var_not var_no = literalt::unused_var_no())
72+
{
73+
nodes.emplace_back(var_no);
74+
return {narrow_cast<literalt::var_not>(nodes.size() - 1), false};
7075
}
7176

7277
literalt new_and_node(literalt a, literalt b) {
73-
literalt l = new_node();
74-
nodes.back().make_and(a, b);
75-
return l;
78+
nodes.emplace_back(a, b);
79+
return {narrow_cast<literalt::var_not>(nodes.size() - 1), false};
7680
}
7781

7882
bool empty() const { return nodes.empty(); }

src/trans-netlist/aig_prop.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@ class aig_prop_baset : public propt {
4646
PRECONDITION(false);
4747
}
4848

49-
literalt new_variable() override { return dest.new_node(); }
49+
literalt new_variable() override
50+
{
51+
return dest.new_var_node();
52+
}
5053

5154
size_t no_variables() const override { return dest.number_of_nodes(); }
5255

0 commit comments

Comments
 (0)