Skip to content

Commit c9b43e1

Browse files
committed
[Rust API] Add BinaryViewExt.address_comments
1 parent 9d8d384 commit c9b43e1

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

rust/src/binary_view.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ use crate::types::{
6262
use crate::variable::DataVariable;
6363
use crate::workflow::Workflow;
6464
use crate::{Endianness, BN_FULL_CONFIDENCE};
65-
use std::collections::HashMap;
65+
use std::collections::{BTreeMap, HashMap};
6666
use std::ffi::{c_char, c_void, CString};
6767
use std::fmt::{Display, Formatter};
6868
use 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

Comments
 (0)