summaryrefslogtreecommitdiff
path: root/rust/src/function.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/src/function.rs')
-rw-r--r--rust/src/function.rs38
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 {