pub struct Bookmarks<'a> { /* private fields */ }Implementations§
Source§impl<'a> Bookmarks<'a>
impl<'a> Bookmarks<'a>
Sourcepub fn mark(
&self,
ea: Address,
desc: impl AsRef<str>,
) -> Result<BookmarkIndex, IDAError>
pub fn mark( &self, ea: Address, desc: impl AsRef<str>, ) -> Result<BookmarkIndex, IDAError>
Examples found in repository?
examples/bookmarks_ls.rs (line 33)
3fn main() -> anyhow::Result<()> {
4 println!("Trying to open IDA database...");
5
6 // Open IDA database
7 let idb = IDB::open("./tests/ls")?;
8
9 println!("Testing erase(), get_description(), and len() (pass 1; clear old bookmarks)");
10 for (_id, f) in idb.functions() {
11 let addr = f.start_address();
12
13 // erase(), ignore errors
14 let _ = idb.bookmarks().erase(addr);
15
16 // get_description()
17 let read_desc = idb.bookmarks().get_description(addr);
18 assert!(read_desc.is_none());
19 }
20
21 // len()
22 assert_eq!(idb.bookmarks().len(), 0);
23
24 println!("Testing mark() and get_description()");
25 for (id, f) in idb.functions() {
26 let addr = f.start_address();
27 let desc = format!(
28 "Bookmark added by idalib: {id} {} {addr:#x}",
29 f.name().unwrap(),
30 );
31
32 // mark()
33 let _slot = idb.bookmarks().mark(addr, &desc)?;
34
35 // get_description()
36 let read_desc = idb.bookmarks().get_description(addr);
37 assert_eq!(read_desc.unwrap(), desc);
38 }
39
40 println!("Testing len(), get_address(), and get_description()");
41 // len()
42 for i in 0..idb.bookmarks().len() {
43 // get_address()
44 let read_addr = idb.bookmarks().get_address(i).unwrap();
45 let addr_str = format!("{read_addr:#x}");
46
47 // get_description()
48 let read_desc = idb.bookmarks().get_description(read_addr).unwrap();
49
50 assert!(read_desc.ends_with(addr_str.as_str()));
51 }
52
53 println!("Testing erase(), get_description(), and len() (pass 2)");
54 for (_id, f) in idb.functions() {
55 let addr = f.start_address();
56
57 // erase()
58 idb.bookmarks().erase(addr)?;
59
60 // bookmarks_get_desc()
61 let read_desc = idb.bookmarks().get_description(addr);
62 assert!(read_desc.is_none());
63 }
64
65 // bookmarks_size()
66 assert_eq!(idb.bookmarks().len(), 0);
67
68 Ok(())
69}pub fn mark_with( &self, ea: Address, idx: BookmarkIndex, desc: impl AsRef<str>, ) -> Result<BookmarkIndex, IDAError>
Sourcepub fn get_description(&self, ea: Address) -> Option<String>
pub fn get_description(&self, ea: Address) -> Option<String>
Examples found in repository?
examples/bookmarks_ls.rs (line 17)
3fn main() -> anyhow::Result<()> {
4 println!("Trying to open IDA database...");
5
6 // Open IDA database
7 let idb = IDB::open("./tests/ls")?;
8
9 println!("Testing erase(), get_description(), and len() (pass 1; clear old bookmarks)");
10 for (_id, f) in idb.functions() {
11 let addr = f.start_address();
12
13 // erase(), ignore errors
14 let _ = idb.bookmarks().erase(addr);
15
16 // get_description()
17 let read_desc = idb.bookmarks().get_description(addr);
18 assert!(read_desc.is_none());
19 }
20
21 // len()
22 assert_eq!(idb.bookmarks().len(), 0);
23
24 println!("Testing mark() and get_description()");
25 for (id, f) in idb.functions() {
26 let addr = f.start_address();
27 let desc = format!(
28 "Bookmark added by idalib: {id} {} {addr:#x}",
29 f.name().unwrap(),
30 );
31
32 // mark()
33 let _slot = idb.bookmarks().mark(addr, &desc)?;
34
35 // get_description()
36 let read_desc = idb.bookmarks().get_description(addr);
37 assert_eq!(read_desc.unwrap(), desc);
38 }
39
40 println!("Testing len(), get_address(), and get_description()");
41 // len()
42 for i in 0..idb.bookmarks().len() {
43 // get_address()
44 let read_addr = idb.bookmarks().get_address(i).unwrap();
45 let addr_str = format!("{read_addr:#x}");
46
47 // get_description()
48 let read_desc = idb.bookmarks().get_description(read_addr).unwrap();
49
50 assert!(read_desc.ends_with(addr_str.as_str()));
51 }
52
53 println!("Testing erase(), get_description(), and len() (pass 2)");
54 for (_id, f) in idb.functions() {
55 let addr = f.start_address();
56
57 // erase()
58 idb.bookmarks().erase(addr)?;
59
60 // bookmarks_get_desc()
61 let read_desc = idb.bookmarks().get_description(addr);
62 assert!(read_desc.is_none());
63 }
64
65 // bookmarks_size()
66 assert_eq!(idb.bookmarks().len(), 0);
67
68 Ok(())
69}Sourcepub fn get_address(&self, idx: BookmarkIndex) -> Option<Address>
pub fn get_address(&self, idx: BookmarkIndex) -> Option<Address>
Examples found in repository?
examples/bookmarks_ls.rs (line 44)
3fn main() -> anyhow::Result<()> {
4 println!("Trying to open IDA database...");
5
6 // Open IDA database
7 let idb = IDB::open("./tests/ls")?;
8
9 println!("Testing erase(), get_description(), and len() (pass 1; clear old bookmarks)");
10 for (_id, f) in idb.functions() {
11 let addr = f.start_address();
12
13 // erase(), ignore errors
14 let _ = idb.bookmarks().erase(addr);
15
16 // get_description()
17 let read_desc = idb.bookmarks().get_description(addr);
18 assert!(read_desc.is_none());
19 }
20
21 // len()
22 assert_eq!(idb.bookmarks().len(), 0);
23
24 println!("Testing mark() and get_description()");
25 for (id, f) in idb.functions() {
26 let addr = f.start_address();
27 let desc = format!(
28 "Bookmark added by idalib: {id} {} {addr:#x}",
29 f.name().unwrap(),
30 );
31
32 // mark()
33 let _slot = idb.bookmarks().mark(addr, &desc)?;
34
35 // get_description()
36 let read_desc = idb.bookmarks().get_description(addr);
37 assert_eq!(read_desc.unwrap(), desc);
38 }
39
40 println!("Testing len(), get_address(), and get_description()");
41 // len()
42 for i in 0..idb.bookmarks().len() {
43 // get_address()
44 let read_addr = idb.bookmarks().get_address(i).unwrap();
45 let addr_str = format!("{read_addr:#x}");
46
47 // get_description()
48 let read_desc = idb.bookmarks().get_description(read_addr).unwrap();
49
50 assert!(read_desc.ends_with(addr_str.as_str()));
51 }
52
53 println!("Testing erase(), get_description(), and len() (pass 2)");
54 for (_id, f) in idb.functions() {
55 let addr = f.start_address();
56
57 // erase()
58 idb.bookmarks().erase(addr)?;
59
60 // bookmarks_get_desc()
61 let read_desc = idb.bookmarks().get_description(addr);
62 assert!(read_desc.is_none());
63 }
64
65 // bookmarks_size()
66 assert_eq!(idb.bookmarks().len(), 0);
67
68 Ok(())
69}pub fn get_description_by_index(&self, idx: BookmarkIndex) -> Option<String>
Sourcepub fn erase(&self, ea: Address) -> Result<(), IDAError>
pub fn erase(&self, ea: Address) -> Result<(), IDAError>
Examples found in repository?
examples/bookmarks_ls.rs (line 14)
3fn main() -> anyhow::Result<()> {
4 println!("Trying to open IDA database...");
5
6 // Open IDA database
7 let idb = IDB::open("./tests/ls")?;
8
9 println!("Testing erase(), get_description(), and len() (pass 1; clear old bookmarks)");
10 for (_id, f) in idb.functions() {
11 let addr = f.start_address();
12
13 // erase(), ignore errors
14 let _ = idb.bookmarks().erase(addr);
15
16 // get_description()
17 let read_desc = idb.bookmarks().get_description(addr);
18 assert!(read_desc.is_none());
19 }
20
21 // len()
22 assert_eq!(idb.bookmarks().len(), 0);
23
24 println!("Testing mark() and get_description()");
25 for (id, f) in idb.functions() {
26 let addr = f.start_address();
27 let desc = format!(
28 "Bookmark added by idalib: {id} {} {addr:#x}",
29 f.name().unwrap(),
30 );
31
32 // mark()
33 let _slot = idb.bookmarks().mark(addr, &desc)?;
34
35 // get_description()
36 let read_desc = idb.bookmarks().get_description(addr);
37 assert_eq!(read_desc.unwrap(), desc);
38 }
39
40 println!("Testing len(), get_address(), and get_description()");
41 // len()
42 for i in 0..idb.bookmarks().len() {
43 // get_address()
44 let read_addr = idb.bookmarks().get_address(i).unwrap();
45 let addr_str = format!("{read_addr:#x}");
46
47 // get_description()
48 let read_desc = idb.bookmarks().get_description(read_addr).unwrap();
49
50 assert!(read_desc.ends_with(addr_str.as_str()));
51 }
52
53 println!("Testing erase(), get_description(), and len() (pass 2)");
54 for (_id, f) in idb.functions() {
55 let addr = f.start_address();
56
57 // erase()
58 idb.bookmarks().erase(addr)?;
59
60 // bookmarks_get_desc()
61 let read_desc = idb.bookmarks().get_description(addr);
62 assert!(read_desc.is_none());
63 }
64
65 // bookmarks_size()
66 assert_eq!(idb.bookmarks().len(), 0);
67
68 Ok(())
69}pub fn erase_by_index(&self, idx: BookmarkIndex) -> Result<(), IDAError>
pub fn find_index(&self, ea: Address) -> Option<BookmarkIndex>
Sourcepub fn len(&self) -> BookmarkIndex
pub fn len(&self) -> BookmarkIndex
Examples found in repository?
examples/bookmarks_ls.rs (line 22)
3fn main() -> anyhow::Result<()> {
4 println!("Trying to open IDA database...");
5
6 // Open IDA database
7 let idb = IDB::open("./tests/ls")?;
8
9 println!("Testing erase(), get_description(), and len() (pass 1; clear old bookmarks)");
10 for (_id, f) in idb.functions() {
11 let addr = f.start_address();
12
13 // erase(), ignore errors
14 let _ = idb.bookmarks().erase(addr);
15
16 // get_description()
17 let read_desc = idb.bookmarks().get_description(addr);
18 assert!(read_desc.is_none());
19 }
20
21 // len()
22 assert_eq!(idb.bookmarks().len(), 0);
23
24 println!("Testing mark() and get_description()");
25 for (id, f) in idb.functions() {
26 let addr = f.start_address();
27 let desc = format!(
28 "Bookmark added by idalib: {id} {} {addr:#x}",
29 f.name().unwrap(),
30 );
31
32 // mark()
33 let _slot = idb.bookmarks().mark(addr, &desc)?;
34
35 // get_description()
36 let read_desc = idb.bookmarks().get_description(addr);
37 assert_eq!(read_desc.unwrap(), desc);
38 }
39
40 println!("Testing len(), get_address(), and get_description()");
41 // len()
42 for i in 0..idb.bookmarks().len() {
43 // get_address()
44 let read_addr = idb.bookmarks().get_address(i).unwrap();
45 let addr_str = format!("{read_addr:#x}");
46
47 // get_description()
48 let read_desc = idb.bookmarks().get_description(read_addr).unwrap();
49
50 assert!(read_desc.ends_with(addr_str.as_str()));
51 }
52
53 println!("Testing erase(), get_description(), and len() (pass 2)");
54 for (_id, f) in idb.functions() {
55 let addr = f.start_address();
56
57 // erase()
58 idb.bookmarks().erase(addr)?;
59
60 // bookmarks_get_desc()
61 let read_desc = idb.bookmarks().get_description(addr);
62 assert!(read_desc.is_none());
63 }
64
65 // bookmarks_size()
66 assert_eq!(idb.bookmarks().len(), 0);
67
68 Ok(())
69}pub fn is_empty(&self) -> bool
Auto Trait Implementations§
impl<'a> !Send for Bookmarks<'a>
impl<'a> !Sync for Bookmarks<'a>
impl<'a> Freeze for Bookmarks<'a>
impl<'a> RefUnwindSafe for Bookmarks<'a>
impl<'a> Unpin for Bookmarks<'a>
impl<'a> UnsafeUnpin for Bookmarks<'a>
impl<'a> UnwindSafe for Bookmarks<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more