Skip to content

Commit 94cf1d3

Browse files
committed
aig_nodet constructors
This adds constructors for the two kinds of AIG nodes, preventing uninitialized nodes.
1 parent 618dd08 commit 94cf1d3

File tree

2 files changed

+27
-22
lines changed

2 files changed

+27
-22
lines changed

src/trans-netlist/aig.h

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

25-
aig_nodet() {}
25+
explicit aig_nodet(literalt::var_not var_no)
26+
{
27+
a.set(literalt::unused_var_no(), false);
28+
b.set(var_no, false);
29+
}
2630

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

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

31-
void make_and(literalt _a, literalt _b) {
32-
a = _a;
33-
b = _b;
37+
bool is_var() const
38+
{
39+
return a.var_no() == literalt::unused_var_no();
3440
}
3541

36-
void make_var() { a.set(literalt::unused_var_no(), false); }
42+
literalt::var_not var_no() const
43+
{
44+
PRECONDITION(is_var());
45+
return b.var_no();
46+
}
3747
};
3848

3949
class aigt {
@@ -56,23 +66,15 @@ class aigt {
5666

5767
void swap(aigt &g) { nodes.swap(g.nodes); }
5868

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;
69+
literalt new_var_node(literalt::var_not var_no = literalt::unused_var_no())
70+
{
71+
nodes.emplace_back(var_no);
72+
return {narrow_cast<literalt::var_not>(nodes.size() - 1), false};
7073
}
7174

7275
literalt new_and_node(literalt a, literalt b) {
73-
literalt l = new_node();
74-
nodes.back().make_and(a, b);
75-
return l;
76+
nodes.emplace_back(a, b);
77+
return {narrow_cast<literalt::var_not>(nodes.size() - 1), false};
7678
}
7779

7880
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)