From 4bb4a2016d90176938bc8737fd9f29e2d6ea2737 Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Wed, 17 Oct 2018 17:37:15 -0400 Subject: Expose DataRender APIs, allow setting const on types, and allow type comparison --- binaryninjaapi.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'binaryninjaapi.h') diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 2b3273a8..958697c7 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -2185,6 +2185,9 @@ namespace BinaryNinja public: Type(BNType* type); + bool operator==(const Type& other); + bool operator!=(const Type& other); + BNTypeClass GetClass() const; uint64_t GetWidth() const; size_t GetAlignment() const; @@ -2209,6 +2212,7 @@ namespace BinaryNinja void SetVolatile(const Confidence& vltl); void SetTypeName(const QualifiedName& name); Confidence GetStackAdjustment() const; + QualifiedName GetStructureName() const; uint64_t GetElementCount() const; uint64_t GetOffset() const; @@ -4324,4 +4328,30 @@ namespace BinaryNinja bool IsArray() const; bool IsKeyValueStore() const; }; + + class DataRenderer: public CoreRefCountObject + { + static bool IsValidForDataCallback(void* ctxt, BNBinaryView* data, uint64_t addr, BNType* type, + BNType** typeCtx, size_t ctxCount); + static BNDisassemblyTextLine* GetLinesForDataCallback(void* ctxt, BNBinaryView* data, uint64_t addr, BNType* type, + const BNInstructionTextToken* prefix, size_t prefixCount, size_t width, size_t* count, BNType** typeCxt, + size_t ctxCount); + static void FreeCallback(void* ctxt); + public: + DataRenderer(); + DataRenderer(BNDataRenderer* renderer); + virtual bool IsValidForData(BinaryView* data, uint64_t addr, Type* type, std::vector& context); + virtual std::vector GetLinesForData(BinaryView* data, uint64_t addr, Type* type, + const std::vector& prefix, size_t width, std::vector& context); + + static bool IsStructOfTypeName(Type* type, const QualifiedName& name, std::vector& context); + static bool IsStructOfTypeName(Type* type, const std::string& name, std::vector& context); + }; + + class DataRendererContainer + { + public: + static void RegisterGenericDataRenderer(DataRenderer* renderer); + static void RegisterTypeSpecificDataRenderer(DataRenderer* renderer); + }; } -- cgit v1.3.1