From 55b999c719a33235c46166563df750b2a0fd30aa Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Wed, 4 Mar 2015 14:53:06 -0500 Subject: Modify architecture API for less allocations and more flexibility --- binaryninjaapi.h | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'binaryninjaapi.h') diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 63e8f1a5..b0ed5a04 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -634,9 +634,10 @@ namespace BinaryNinja Architecture(BNArchitecture* arch); - static bool GetInstructionInfoCallback(void* ctxt, BNBinaryView* data, uint64_t addr, BNInstructionInfo* result); - static bool GetInstructionTextCallback(void* ctxt, BNBinaryView* data, uint64_t addr, - BNInstructionTextToken** result, size_t* count); + static bool GetInstructionInfoCallback(void* ctxt, const uint8_t* data, uint64_t addr, + size_t maxLen, BNInstructionInfo* result); + static bool GetInstructionTextCallback(void* ctxt, const uint8_t* data, uint64_t addr, + size_t* len, BNInstructionTextToken** result, size_t* count); static void FreeInstructionTextCallback(BNInstructionTextToken* tokens, size_t count); public: @@ -650,16 +651,18 @@ namespace BinaryNinja std::string GetName() const; - virtual bool GetInstructionInfo(BinaryView* data, uint64_t addr, InstructionInfo& result) = 0; - virtual bool GetInstructionText(BinaryView* data, uint64_t addr, std::vector& result) = 0; + virtual bool GetInstructionInfo(const uint8_t* data, uint64_t addr, size_t maxLen, InstructionInfo& result) = 0; + virtual bool GetInstructionText(const uint8_t* data, uint64_t addr, size_t& len, + std::vector& result) = 0; }; class CoreArchitecture: public Architecture { public: CoreArchitecture(BNArchitecture* arch); - virtual bool GetInstructionInfo(BinaryView* view, uint64_t addr, InstructionInfo& result) override; - virtual bool GetInstructionText(BinaryView* view, uint64_t addr, std::vector& result) override; + virtual bool GetInstructionInfo(const uint8_t* data, uint64_t addr, size_t maxLen, InstructionInfo& result) override; + virtual bool GetInstructionText(const uint8_t* data, uint64_t addr, size_t& len, + std::vector& result) override; }; class Function; -- cgit v1.3.1