diff options
| -rw-r--r-- | kernel/rtlil.cc | 12 | ||||
| -rw-r--r-- | kernel/rtlil.h | 3 | 
2 files changed, 15 insertions, 0 deletions
| diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc index 610ab6a83..753c40090 100644 --- a/kernel/rtlil.cc +++ b/kernel/rtlil.cc @@ -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"); diff --git a/kernel/rtlil.h b/kernel/rtlil.h index cd00b43d8..331ea3770 100644 --- a/kernel/rtlil.h +++ b/kernel/rtlil.h @@ -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); | 
