summaryrefslogtreecommitdiff
path: root/rust/src
diff options
context:
space:
mode:
authorKyleMiles <krm504@nyu.edu>2023-03-21 16:56:09 -0400
committerKyleMiles <krm504@nyu.edu>2023-03-22 19:34:08 -0400
commit9d761a52c55a052c67d7e895dcf0a5852a35fdca (patch)
tree604c4107718df1b3970f24fefba07bd731cde22a /rust/src
parent87b596717e0cf990e69f1badc079a0eca087bb4c (diff)
Tags refactor
Diffstat (limited to 'rust/src')
-rw-r--r--rust/src/binaryview.rs53
1 files changed, 11 insertions, 42 deletions
diff --git a/rust/src/binaryview.rs b/rust/src/binaryview.rs
index f83076cb..b6ff3931 100644
--- a/rust/src/binaryview.rs
+++ b/rust/src/binaryview.rs
@@ -840,14 +840,7 @@ pub trait BinaryViewExt: BinaryViewBase {
}
/// Get a tag type by its name.
- ///
- /// Shorthand for [Self::get_tag_type_by_name].
fn get_tag_type<S: BnStrCompatible>(&self, name: S) -> Option<Ref<TagType>> {
- self.get_tag_type_by_name(name)
- }
-
- /// Get a tag type by its name
- fn get_tag_type_by_name<S: BnStrCompatible>(&self, name: S) -> Option<Ref<TagType>> {
let name = name.into_bytes_with_nul();
unsafe {
@@ -859,33 +852,6 @@ pub trait BinaryViewExt: BinaryViewBase {
}
}
- /// Get a tag type by its id
- fn get_tag_type_by_id<S: BnStrCompatible>(&self, id: S) -> Option<Ref<TagType>> {
- let id = id.into_bytes_with_nul();
-
- unsafe {
- let handle = BNGetTagTypeById(self.as_ref().handle, id.as_ref().as_ptr() as *mut _);
- if handle.is_null() {
- return None;
- }
- Some(TagType::from_raw(handle))
- }
- }
-
- fn create_tag<S: BnStrCompatible>(&self, t: &TagType, data: S, user: bool) -> Ref<Tag> {
- let tag = Tag::new(t, data);
- unsafe { BNAddTag(self.as_ref().handle, tag.handle, user) }
- tag
- }
-
- fn create_user_tag<S: BnStrCompatible>(&self, t: &TagType, data: S) -> Ref<Tag> {
- self.create_tag(t, data, true)
- }
-
- fn create_auto_tag<S: BnStrCompatible>(&self, t: &TagType, data: S) -> Ref<Tag> {
- self.create_tag(t, data, false)
- }
-
/// Get a tag by its id.
///
/// Note this does not tell you anything about where it is used.
@@ -900,16 +866,19 @@ pub trait BinaryViewExt: BinaryViewBase {
}
}
- /// adds an already-created Tag object at a data address.
+ /// Creates and adds a tag to an address
///
- /// Since this adds a user tag, it will be added to the current undo buffer.
- fn add_user_data_tag(&self, addr: u64, tag: &Tag) {
- unsafe { BNAddUserDataTag(self.as_ref().handle, addr, tag.handle) }
- }
+ /// User tag creations will be added to the undo buffer
+ fn add_tag<S: BnStrCompatible>(&self, addr: u64, t: &TagType, data: S, user: bool) {
+ let tag = Tag::new(t, data);
+
+ unsafe { BNAddTag(self.as_ref().handle, tag.handle, user) }
- /// adds an already-created Tag object at a data address.
- fn add_auto_data_tag(&self, addr: u64, tag: &Tag) {
- unsafe { BNAddAutoDataTag(self.as_ref().handle, addr, tag.handle) }
+ if user {
+ unsafe { BNAddUserDataTag(self.as_ref().handle, addr, tag.handle) }
+ } else {
+ unsafe { BNAddAutoDataTag(self.as_ref().handle, addr, tag.handle) }
+ }
}
/// removes a Tag object at a data address.