diff options
| author | KyleMiles <krm504@nyu.edu> | 2023-03-21 16:56:09 -0400 |
|---|---|---|
| committer | KyleMiles <krm504@nyu.edu> | 2023-03-22 19:34:08 -0400 |
| commit | 9d761a52c55a052c67d7e895dcf0a5852a35fdca (patch) | |
| tree | 604c4107718df1b3970f24fefba07bd731cde22a /rust/src | |
| parent | 87b596717e0cf990e69f1badc079a0eca087bb4c (diff) | |
Tags refactor
Diffstat (limited to 'rust/src')
| -rw-r--r-- | rust/src/binaryview.rs | 53 |
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. |
