summaryrefslogtreecommitdiff
path: root/python/types.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/types.py')
-rw-r--r--python/types.py35
1 files changed, 34 insertions, 1 deletions
diff --git a/python/types.py b/python/types.py
index a47f531d..44583c4d 100644
--- a/python/types.py
+++ b/python/types.py
@@ -27,7 +27,7 @@ import uuid
# Binary Ninja components
from . import _binaryninjacore as core
from .enums import (
- StructureVariant, SymbolType, SymbolBinding, TypeClass, NamedTypeReferenceClass,
+ InlineDuringAnalysis, StructureVariant, SymbolType, SymbolBinding, TypeClass, NamedTypeReferenceClass,
ReferenceType, VariableSourceType,
TypeReferenceType, MemberAccess, MemberScope, TypeDefinitionLineType,
TokenEscapingType,
@@ -528,6 +528,39 @@ class BoolWithConfidence:
return BoolWithConfidence(value, confidence)._to_core_struct()
+@dataclass(frozen=True)
+class InlineDuringAnalysisWithConfidence:
+ """Represents an InlineDuringAnalysis value with an associated confidence level."""
+ value: InlineDuringAnalysis
+ confidence: int = core.max_confidence
+
+ def __eq__(self, other):
+ if not isinstance(other, self.__class__):
+ # For backward compatibility, allow comparison with bool
+ if isinstance(other, bool):
+ return bool(self.value) == other
+ # Allow comparison with enum value directly
+ return self.value == other
+ else:
+ return (self.value, self.confidence) == (other.value, other.confidence)
+
+ def __ne__(self, other):
+ return not (self == other)
+
+ def __bool__(self):
+ return bool(self.value)
+
+ def _to_core_struct(self) -> core.BNInlineDuringAnalysisWithConfidence:
+ result = core.BNInlineDuringAnalysisWithConfidence()
+ result.value = self.value
+ result.confidence = self.confidence
+ return result
+
+ @classmethod
+ def from_core_struct(cls, core_struct: core.BNInlineDuringAnalysisWithConfidence) -> 'InlineDuringAnalysisWithConfidence':
+ return cls(InlineDuringAnalysis(core_struct.value), core_struct.confidence)
+
+
@dataclass
class MutableTypeBuilder(Generic[TB]):
type: TB