summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2015-02-11 02:16:40 -0500
committerRusty Wagner <rusty@vector35.com>2015-02-11 02:16:40 -0500
commit47ad9dfe54195807ed67a2ec4b03fdc1e698310d (patch)
tree78d8bbd7a85577d6dcc9ef2445aa529957b5fdef /binaryninjaapi.h
parent6277a83d956dad6f7cab7ee6193b9326680f8e1f (diff)
More ELF parsing, and a view type registration system
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index eee2ffac..45072d83 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -363,6 +363,39 @@ namespace BinaryNinja
BinaryData(FileMetadata* file, FileAccessor* accessor);
};
+ class BinaryViewType: public RefCountObject
+ {
+ protected:
+ BNBinaryViewType* m_type;
+ std::string m_nameForRegister;
+
+ static BNBinaryView* CreateCallback(void* ctxt, BNBinaryView* data);
+ static bool IsValidCallback(void* ctxt, BNBinaryView* data);
+
+ BinaryViewType(BNBinaryViewType* type);
+
+ public:
+ BinaryViewType(const std::string& name);
+ virtual ~BinaryViewType();
+
+ static void Register(BinaryViewType* type);
+ static Ref<BinaryViewType> GetByName(const std::string& name);
+ static std::vector<Ref<BinaryViewType>> GetViewTypesForData(BinaryData* data);
+
+ std::string GetName();
+
+ virtual BinaryView* Create(BinaryView* data) = 0;
+ virtual bool IsTypeValidForData(BinaryView* data) = 0;
+ };
+
+ class CoreBinaryViewType: public BinaryViewType
+ {
+ public:
+ CoreBinaryViewType(BNBinaryViewType* type);
+ virtual BinaryView* Create(BinaryView* data) override;
+ virtual bool IsTypeValidForData(BinaryView* data) override;
+ };
+
class ReadException: public std::exception
{
public: