From 9d761a52c55a052c67d7e895dcf0a5852a35fdca Mon Sep 17 00:00:00 2001 From: KyleMiles Date: Tue, 21 Mar 2023 16:56:09 -0400 Subject: Tags refactor --- rust/src/binaryview.rs | 53 +++++++++++--------------------------------------- 1 file changed, 11 insertions(+), 42 deletions(-) (limited to 'rust/src/binaryview.rs') 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(&self, name: S) -> Option> { - self.get_tag_type_by_name(name) - } - - /// Get a tag type by its name - fn get_tag_type_by_name(&self, name: S) -> Option> { 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(&self, id: S) -> Option> { - 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(&self, t: &TagType, data: S, user: bool) -> Ref { - let tag = Tag::new(t, data); - unsafe { BNAddTag(self.as_ref().handle, tag.handle, user) } - tag - } - - fn create_user_tag(&self, t: &TagType, data: S) -> Ref { - self.create_tag(t, data, true) - } - - fn create_auto_tag(&self, t: &TagType, data: S) -> Ref { - 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(&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. -- cgit v1.3.1