Made iterators extend std::iterator and added == operator
authorWilliam Speirs <bill.speirs@gmail.com>
Tue, 14 Oct 2014 21:10:08 +0000 (17:10 -0400)
committerClifford Wolf <clifford@clifford.at>
Tue, 14 Oct 2014 22:56:37 +0000 (00:56 +0200)
kernel/rtlil.h

index 8df0bfe19ff68932334484998497a3b1b1c9e14e..5629c8652f8146507997734a294facc87d4a8008 100644 (file)
@@ -920,23 +920,25 @@ struct RTLIL::SigBit
        }
 };
 
-struct RTLIL::SigSpecIterator
+struct RTLIL::SigSpecIterator : public std::iterator<std::input_iterator_tag, RTLIL::SigSpec>
 {
        RTLIL::SigSpec *sig_p;
        int index;
 
        inline RTLIL::SigBit &operator*() const;
        inline bool operator!=(const RTLIL::SigSpecIterator &other) const { return index != other.index; }
+       inline bool operator==(const RTLIL::SigSpecIterator &other) const { return index == other.index; }
        inline void operator++() { index++; }
 };
 
-struct RTLIL::SigSpecConstIterator
+struct RTLIL::SigSpecConstIterator : public std::iterator<std::input_iterator_tag, RTLIL::SigSpec>
 {
        const RTLIL::SigSpec *sig_p;
        int index;
 
        inline const RTLIL::SigBit &operator*() const;
        inline bool operator!=(const RTLIL::SigSpecConstIterator &other) const { return index != other.index; }
+       inline bool operator==(const RTLIL::SigSpecIterator &other) const { return index == other.index; }
        inline void operator++() { index++; }
 };