From 1455831091552327502612013281528881111506 Mon Sep 17 00:00:00 2001 From: Glenn Smith Date: Fri, 1 Aug 2025 14:41:11 -0400 Subject: Make the IL iterators real iterators for std::find_if --- highlevelilinstruction.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'highlevelilinstruction.h') diff --git a/highlevelilinstruction.h b/highlevelilinstruction.h index 86a29423..2e10c485 100644 --- a/highlevelilinstruction.h +++ b/highlevelilinstruction.h @@ -181,6 +181,12 @@ namespace BinaryNinja { struct ListIterator { + typedef std::forward_iterator_tag iterator_category; + typedef uint64_t value_type; + typedef std::ptrdiff_t difference_type; + typedef void pointer; + typedef value_type reference; + #ifdef BINARYNINJACORE_LIBRARY HighLevelILFunction* function; #else @@ -219,6 +225,12 @@ namespace BinaryNinja { struct ListIterator { + typedef std::forward_iterator_tag iterator_category; + typedef size_t value_type; + typedef std::ptrdiff_t difference_type; + typedef void pointer; + typedef value_type reference; + HighLevelILIntegerList::const_iterator pos; bool operator==(const ListIterator& a) const { return pos == a.pos; } bool operator!=(const ListIterator& a) const { return pos != a.pos; } @@ -253,6 +265,12 @@ namespace BinaryNinja { struct ListIterator { + typedef std::forward_iterator_tag iterator_category; + typedef HighLevelILInstruction value_type; + typedef std::ptrdiff_t difference_type; + typedef void pointer; + typedef value_type reference; + HighLevelILIntegerList::const_iterator pos; bool ast; size_t instructionIndex; @@ -292,6 +310,12 @@ namespace BinaryNinja { struct ListIterator { + typedef std::forward_iterator_tag iterator_category; + typedef SSAVariable value_type; + typedef std::ptrdiff_t difference_type; + typedef void pointer; + typedef value_type reference; + HighLevelILIntegerList::const_iterator pos; bool operator==(const ListIterator& a) const { return pos == a.pos; } bool operator!=(const ListIterator& a) const { return pos != a.pos; } @@ -819,6 +843,12 @@ namespace BinaryNinja { struct ListIterator { + typedef std::forward_iterator_tag iterator_category; + typedef HighLevelILOperand value_type; + typedef std::ptrdiff_t difference_type; + typedef void pointer; + typedef value_type reference; + const HighLevelILOperandList* owner; _STD_VECTOR::const_iterator pos; bool operator==(const ListIterator& a) const { return pos == a.pos; } -- cgit v1.3.1