From: Eddie Hung Date: Wed, 31 Jul 2019 19:18:03 +0000 (-0700) Subject: Helper: SigSpec::operator[] to accept negative indices X-Git-Tag: working-ls180~1039^2~290 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=84c7a562e597aaaacaab122a2ec7cbdf67ff6cfc;p=yosys.git Helper: SigSpec::operator[] to accept negative indices --- diff --git a/kernel/rtlil.h b/kernel/rtlil.h index 868aaaa14..1ed055715 100644 --- a/kernel/rtlil.h +++ b/kernel/rtlil.h @@ -734,8 +734,8 @@ public: inline int size() const { return width_; } inline bool empty() const { return width_ == 0; } - inline RTLIL::SigBit &operator[](int index) { inline_unpack(); return bits_.at(index); } - inline const RTLIL::SigBit &operator[](int index) const { inline_unpack(); return bits_.at(index); } + inline RTLIL::SigBit &operator[](int index) { inline_unpack(); return index >= 0 ? bits_.at(index) : bits_.at(width_ + index); } + inline const RTLIL::SigBit &operator[](int index) const { inline_unpack(); return index >= 0 ? bits_.at(index) : bits_.at(width_ + index); } inline RTLIL::SigSpecIterator begin() { RTLIL::SigSpecIterator it; it.sig_p = this; it.index = 0; return it; } inline RTLIL::SigSpecIterator end() { RTLIL::SigSpecIterator it; it.sig_p = this; it.index = width_; return it; }