@@ -62,7 +62,7 @@ use crate::types::{
6262use crate :: variable:: DataVariable ;
6363use crate :: workflow:: Workflow ;
6464use crate :: { Endianness , BN_FULL_CONFIDENCE } ;
65- use std:: collections:: HashMap ;
65+ use std:: collections:: { BTreeMap , HashMap } ;
6666use std:: ffi:: { c_char, c_void, CString } ;
6767use std:: fmt:: { Display , Formatter } ;
6868use std:: ops:: Range ;
@@ -1686,6 +1686,24 @@ pub trait BinaryViewExt: BinaryViewBase {
16861686 unsafe { BNRemoveUserDataTag ( self . as_ref ( ) . handle , addr, tag. handle ) }
16871687 }
16881688
1689+ fn address_comments ( & self ) -> BTreeMap < u64 , String > {
1690+ let mut comment_count = 0 ;
1691+ let mut result = BTreeMap :: new ( ) ;
1692+ let addresses;
1693+ unsafe {
1694+ let addresses_raw =
1695+ BNGetGlobalCommentedAddresses ( self . as_ref ( ) . handle , & mut comment_count) ;
1696+ addresses = std:: slice:: from_raw_parts ( addresses_raw, comment_count) ;
1697+ }
1698+
1699+ for address in addresses {
1700+ if let Some ( comment) = self . comment_at ( * address) {
1701+ result. insert ( * address, comment) ;
1702+ }
1703+ }
1704+ result
1705+ }
1706+
16891707 fn comment_at ( & self , addr : u64 ) -> Option < String > {
16901708 unsafe {
16911709 let comment_raw = BNGetGlobalCommentForAddress ( self . as_ref ( ) . handle , addr) ;
0 commit comments