Added std::initializer_list<> constructor to SigSpec
authorClifford Wolf <clifford@clifford.at>
Mon, 28 Jul 2014 08:52:58 +0000 (10:52 +0200)
committerClifford Wolf <clifford@clifford.at>
Mon, 28 Jul 2014 08:52:58 +0000 (10:52 +0200)
kernel/rtlil.cc
kernel/rtlil.h

index 610ab6a8312bca0ab76686d7c8bdfffdec1f45a4..753c40090f24b1cdd1fe2ccfd403c19d79dcfe41 100644 (file)
@@ -1652,6 +1652,18 @@ RTLIL::SigSpec::SigSpec(const RTLIL::SigSpec &other)
        *this = other;
 }
 
+RTLIL::SigSpec::SigSpec(std::initializer_list<RTLIL::SigSpec> parts)
+{
+       cover("kernel.rtlil.sigspec.init.list");
+
+       width_ = 0;
+       hash_ = 0;
+
+       std::vector<RTLIL::SigSpec> parts_vec(parts.begin(), parts.end());
+       for (auto it = parts_vec.rbegin(); it != parts_vec.rend(); it++)
+               append(*it);
+}
+
 const RTLIL::SigSpec &RTLIL::SigSpec::operator=(const RTLIL::SigSpec &other)
 {
        cover("kernel.rtlil.sigspec.assign");
index cd00b43d849021751f7cd15e1abd1a1ef49750cf..331ea37700489ab3774ba82c175b6a52dae071fe 100644 (file)
@@ -26,6 +26,8 @@
 #include <string>
 #include <assert.h>
 
+#include <initializer_list>
+
 // various helpers (unrelated to RTLIL)
 std::string stringf(const char *fmt, ...);
 #define SIZE(__obj) int(__obj.size())
@@ -738,6 +740,7 @@ private:
 public:
        SigSpec();
        SigSpec(const RTLIL::SigSpec &other);
+       SigSpec(std::initializer_list<RTLIL::SigSpec> parts);
        const RTLIL::SigSpec &operator=(const RTLIL::SigSpec &other);
 
        SigSpec(const RTLIL::Const &value);