diff options
| author | Rusty Wagner <rusty@vector35.com> | 2015-02-11 02:16:40 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2015-02-11 02:16:40 -0500 |
| commit | 47ad9dfe54195807ed67a2ec4b03fdc1e698310d (patch) | |
| tree | 78d8bbd7a85577d6dcc9ef2445aa529957b5fdef /binaryninjaapi.h | |
| parent | 6277a83d956dad6f7cab7ee6193b9326680f8e1f (diff) | |
More ELF parsing, and a view type registration system
Diffstat (limited to 'binaryninjaapi.h')
| -rw-r--r-- | binaryninjaapi.h | 33 |
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: |
