summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorJosh Ferrell <josh@vector35.com>2020-02-07 20:06:11 -0500
committerJosh Ferrell <josh@vector35.com>2020-03-31 13:29:35 -0400
commit95b145165e424d69554d03d4ebcf4cc13d43ec88 (patch)
tree18e40ebfbb940986d8bbc990281f317fc88f0091 /binaryninjaapi.h
parentfa1de9cc465473fb00f0f47f91aba0a1792a60ee (diff)
Undobuffer merging and mergetool
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h68
1 files changed, 37 insertions, 31 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index a3bf8578..8267cbb8 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -832,46 +832,46 @@ __attribute__ ((format (printf, 1, 2)))
class BinaryView;
- class UndoAction
+ class User : public CoreRefCountObject<BNUser, BNNewUserReference, BNFreeUser>
{
- private:
- std::string m_typeName;
- BNActionType m_actionType;
-
- static void FreeCallback(void* ctxt);
- static void UndoCallback(void* ctxt, BNBinaryView* data);
- static void RedoCallback(void* ctxt, BNBinaryView* data);
- static char* SerializeCallback(void* ctxt);
-
- public:
- UndoAction(const std::string& name, BNActionType action);
- virtual ~UndoAction() {}
+ private:
+ std::string m_id;
+ std::string m_name;
+ std::string m_email;
+ public:
+ User(BNUser* user);
+ std::string GetName();
+ std::string GetEmail();
+ std::string GetId();
+ };
- const std::string& GetTypeName() const { return m_typeName; }
- BNActionType GetActionType() const { return m_actionType; }
- BNUndoAction GetCallbacks();
+ struct InstructionTextToken;
- void Add(BNBinaryView* view);
+ struct UndoAction
+ {
+ BNActionType actionType;
+ std::string summaryText;
+ std::vector<InstructionTextToken> summaryTokens;
- virtual void Undo(BinaryView* data) = 0;
- virtual void Redo(BinaryView* data) = 0;
- virtual Json::Value Serialize() = 0;
+ UndoAction() {};
+ UndoAction(const BNUndoAction& action);
};
- class UndoActionType
+ struct UndoEntry
{
- protected:
- std::string m_nameForRegister;
-
- static bool DeserializeCallback(void* ctxt, const char* data, BNUndoAction* result);
-
- public:
- UndoActionType(const std::string& name);
- virtual ~UndoActionType() {}
+ Ref<User> user;
+ std::string hash;
+ std::vector<UndoAction> actions;
+ uint64_t timestamp;
+ };
- static void Register(UndoActionType* type);
+ struct MergeResult
+ {
+ BNMergeStatus status;
+ UndoAction action;
+ std::string hash;
- virtual UndoAction* Deserialize(const Json::Value& data) = 0;
+ MergeResult(const BNMergeResult& result);
};
class FileMetadata: public CoreRefCountObject<BNFileMetadata, BNNewFileReference, BNFreeFileMetadata>
@@ -911,12 +911,18 @@ __attribute__ ((format (printf, 1, 2)))
bool Rebase(BinaryView* data, uint64_t address);
bool Rebase(BinaryView* data, uint64_t address, const std::function<void(size_t progress, size_t total)>& progressCallback);
+ MergeResult MergeUserAnalysis(const std::string& name, const std::function<void(size_t, size_t)>& progress,
+ const std::vector<std::string> excludedHashes = {} );
+
void BeginUndoActions();
void CommitUndoActions();
bool Undo();
bool Redo();
+ std::vector<Ref<User>> GetUsers();
+ std::vector<UndoEntry> GetUndoEntries();
+
std::string GetCurrentView();
uint64_t GetCurrentOffset();
bool Navigate(const std::string& view, uint64_t offset);