diff options
| author | Ryan Snyder <ryan@vector35.com> | 2025-02-24 15:14:19 -0500 |
|---|---|---|
| committer | Ryan Snyder <ryan@vector35.com> | 2025-03-17 10:07:02 -0400 |
| commit | 1652efdc43aa3acbd570c1f042a35da458538bb4 (patch) | |
| tree | 72c5ec04401432691a78acdd0d29b1fc7ecc07de /binaryninjaapi.h | |
| parent | 996ad28c29cd242b672041ae3b08e97a0e160a85 (diff) | |
core: initial union support with C++ API
Diffstat (limited to 'binaryninjaapi.h')
| -rw-r--r-- | binaryninjaapi.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 6b1d268e..15b62e25 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -8764,6 +8764,12 @@ namespace BinaryNinja { {} }; + class FieldResolutionInfo : public CoreRefCountObject<BNFieldResolutionInfo, BNNewFieldResolutionInfoReference, BNFreeFieldResolutionInfo> + { + public: + FieldResolutionInfo(BNFieldResolutionInfo* info); + }; + struct QualifiedNameAndType { QualifiedName name; @@ -9313,7 +9319,9 @@ namespace BinaryNinja { Ref<Type> WithReplacedNamedTypeReference(NamedTypeReference* from, NamedTypeReference* to); bool AddTypeMemberTokens(BinaryView* data, std::vector<InstructionTextToken>& tokens, int64_t offset, - std::vector<std::string>& nameList, size_t size = 0, bool indirect = false); + std::vector<std::string>& nameList, size_t size = 0, bool indirect = false, FieldResolutionInfo* info = nullptr); + bool EnumerateTypesForAccess(BinaryView* data, uint64_t offset, size_t size, uint8_t baseConfidence, + const std::function<void(const Confidence<Ref<Type>>& type, FieldResolutionInfo* path)>& terminal); std::vector<TypeDefinitionLine> GetLines(const TypeContainer& types, const std::string& name, int paddingCols = 64, bool collapsed = false, BNTokenEscapingType escaping = NoTokenEscapingType); @@ -11247,6 +11255,11 @@ namespace BinaryNinja { void CreateForcedVariableVersion(const Variable& var, const ArchAndAddr& location); void ClearForcedVariableVersion(const Variable& var, const ArchAndAddr& location); + void SetFieldResolutionForVariableAt(const Variable& var, const ArchAndAddr& location, FieldResolutionInfo* info); + void ClearFieldResolutionForVariableAt(const Variable& var, const ArchAndAddr& location); + Ref<FieldResolutionInfo> GetFieldResolutionForVariableAt(const Variable& var, const ArchAndAddr& location); + std::map<Variable, std::map<ArchAndAddr, Ref<FieldResolutionInfo>>> GetAllFieldResolutions(); + void RequestDebugReport(const std::string& name); /*! Get the name for a given label ID |
