Added std::set<RTLIL::SigBit> to RTLIL::SigSpec conversion
authorClifford Wolf <clifford@clifford.at>
Sun, 20 Jul 2014 09:00:09 +0000 (11:00 +0200)
committerClifford Wolf <clifford@clifford.at>
Sun, 20 Jul 2014 09:01:04 +0000 (11:01 +0200)
kernel/rtlil.cc
kernel/rtlil.h

index dea0e105045538a11b8105286cf7e6eaaa2148ab..748deae3ebb704d0c104a45f5f9553a64bef53d8 100644 (file)
@@ -1451,10 +1451,17 @@ RTLIL::SigSpec::SigSpec(RTLIL::SigBit bit, int width)
 
 RTLIL::SigSpec::SigSpec(std::vector<RTLIL::SigBit> bits)
 {
-       chunks.reserve(bits.size());
+       this->width = 0;
        for (auto &bit : bits)
-               chunks.push_back(bit);
-       this->width = bits.size();
+               append_bit(bit);
+       check();
+}
+
+RTLIL::SigSpec::SigSpec(std::set<RTLIL::SigBit> bits)
+{
+       this->width = 0;
+       for (auto &bit : bits)
+               append_bit(bit);
        check();
 }
 
index 6290db21ded10c490bec7ba29aa04e08df62efbb..64136de0447e559299c56d5fb51f96bab83f32f8 100644 (file)
@@ -505,6 +505,7 @@ struct RTLIL::SigSpec {
        SigSpec(RTLIL::State bit, int width = 1);
        SigSpec(RTLIL::SigBit bit, int width = 1);
        SigSpec(std::vector<RTLIL::SigBit> bits);
+       SigSpec(std::set<RTLIL::SigBit> bits);
        void expand();
        void optimize();
        RTLIL::SigSpec optimized() const;