diff options
Diffstat (limited to 'rust/src/function.rs')
| -rw-r--r-- | rust/src/function.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/rust/src/function.rs b/rust/src/function.rs index 67b68cdc..273a0861 100644 --- a/rust/src/function.rs +++ b/rust/src/function.rs @@ -26,6 +26,10 @@ use crate::{ symbol::Symbol, types::{Conf, NamedTypedVariable, Type}, }; +pub use binaryninjacore_sys::BNAnalysisSkipReason as AnalysisSkipReason; +pub use binaryninjacore_sys::BNFunctionAnalysisSkipOverride as FunctionAnalysisSkipOverride; +pub use binaryninjacore_sys::BNFunctionUpdateType as FunctionUpdateType; + use std::hash::Hash; use std::{fmt, mem}; @@ -324,6 +328,40 @@ impl Function { ); } } + + pub fn analysis_skipped(&self) -> bool { + unsafe { BNIsFunctionAnalysisSkipped(self.handle) } + } + + pub fn set_analysis_skipped(&self, skip: bool) { + if skip { + unsafe { + BNSetFunctionAnalysisSkipOverride( + self.handle, + BNFunctionAnalysisSkipOverride::AlwaysSkipFunctionAnalysis, + ); + } + } else { + unsafe { + BNSetFunctionAnalysisSkipOverride( + self.handle, + BNFunctionAnalysisSkipOverride::NeverSkipFunctionAnalysis, + ); + } + } + } + + pub fn analysis_skip_reason(&self) -> AnalysisSkipReason { + unsafe { BNGetAnalysisSkipReason(self.handle) } + } + + pub fn analysis_skip_override(&self) -> FunctionAnalysisSkipOverride { + unsafe { BNGetFunctionAnalysisSkipOverride(self.handle) } + } + + pub fn set_analysis_skip_override(&self, override_: FunctionAnalysisSkipOverride) { + unsafe { BNSetFunctionAnalysisSkipOverride(self.handle, override_) } + } } impl fmt::Debug for Function { |
