Initialize RTLIL::Const from std::vector<bool>
authorClifford Wolf <clifford@clifford.at>
Fri, 19 Sep 2014 13:50:55 +0000 (15:50 +0200)
committerClifford Wolf <clifford@clifford.at>
Fri, 19 Sep 2014 13:50:55 +0000 (15:50 +0200)
kernel/rtlil.cc
kernel/rtlil.h

index 6556b82ee973465519c978527481fae32a69cb6b..00be796f85b7c41acc6c1e370bca217cbd2dbf20 100644 (file)
@@ -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())
index c48837691392095f6a02aa4a483753bc495f9cba..a0ae8f0828841910e3481939833024e750793474 100644 (file)
@@ -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;