summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2014-09-19 15:50:55 +0200
committerClifford Wolf <clifford@clifford.at>2014-09-19 15:50:55 +0200
commit00964f2f618d241a2e5cd32f4e7dbbcf55de4fb4 (patch)
treeed21e65940902aaee63449509555255620383996 /kernel
parent309623ff177f2538a4c529dbc025374008d85880 (diff)
Initialize RTLIL::Const from std::vector<bool>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/rtlil.cc7
-rw-r--r--kernel/rtlil.h3
2 files changed, 9 insertions, 1 deletions
diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc
index 6556b82e..00be796f 100644
--- a/kernel/rtlil.cc
+++ b/kernel/rtlil.cc
@@ -65,6 +65,13 @@ RTLIL::Const::Const(RTLIL::State bit, int width)
bits.push_back(bit);
}
+RTLIL::Const::Const(const std::vector<bool> &bits)
+{
+ flags = RTLIL::CONST_FLAG_NONE;
+ for (auto b : bits)
+ this->bits.push_back(b ? RTLIL::S1 : RTLIL::S0);
+}
+
bool RTLIL::Const::operator <(const RTLIL::Const &other) const
{
if (bits.size() != other.bits.size())
diff --git a/kernel/rtlil.h b/kernel/rtlil.h
index c4883769..a0ae8f08 100644
--- a/kernel/rtlil.h
+++ b/kernel/rtlil.h
@@ -428,7 +428,8 @@ struct RTLIL::Const
Const(std::string str);
Const(int val, int width = 32);
Const(RTLIL::State bit, int width = 1);
- Const(std::vector<RTLIL::State> bits) : bits(bits) { flags = CONST_FLAG_NONE; };
+ Const(const std::vector<RTLIL::State> &bits) : bits(bits) { flags = CONST_FLAG_NONE; };
+ Const(const std::vector<bool> &bits);
bool operator <(const RTLIL::Const &other) const;
bool operator ==(const RTLIL::Const &other) const;