From f5097c5f3b2fa4d10056b559a95568b1fe4116d3 Mon Sep 17 00:00:00 2001 From: Josh Ferrell Date: Tue, 6 Aug 2024 16:22:55 -0400 Subject: Expose Collaboration::ConflictSplitter in API --- binaryninjacore.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'binaryninjacore.h') diff --git a/binaryninjacore.h b/binaryninjacore.h index 5f631827..0d321838 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -291,6 +291,7 @@ extern "C" typedef struct BNCollaborationUndoEntry BNCollaborationUndoEntry; typedef struct BNCollaborationUser BNCollaborationUser; typedef struct BNAnalysisMergeConflict BNAnalysisMergeConflict; + typedef struct BNAnalysisMergeConflictSplitter BNAnalysisMergeConflictSplitter; typedef struct BNTypeArchiveMergeConflict BNTypeArchiveMergeConflict; typedef struct BNCollaborationLazyT BNCollaborationLazyT; typedef struct BNUndoAction BNUndoAction; @@ -3301,6 +3302,18 @@ extern "C" BinaryConflictDataType } BNMergeConflictDataType; + typedef struct BNAnalysisMergeConflictSplitterCallbacks + { + void* context; + char* (*getName)(void* context); + void (*reset)(void* context); + void (*finished)(void* context); + bool (*canSplit)(void* context, const char* key, const BNAnalysisMergeConflict* conflict); + bool (*split)(void* context, const char* originalKey, const BNAnalysisMergeConflict* originalConflict, BNKeyValueStore* result, char*** newKeys, BNAnalysisMergeConflict*** newConflicts, size_t* newCount); + void (*freeName)(void* context, char* name); + void (*freeKeyList)(void* context, char** keyList, size_t count); + void (*freeConflictList)(void* context, BNAnalysisMergeConflict** conflictList, size_t count); + } BNAnalysisMergeConflictSplitterCallbacks; typedef bool(*BNProgressFunction)(void*, size_t, size_t); typedef bool(*BNCollaborationAnalysisConflictHandler)(void*, const char** keys, BNAnalysisMergeConflict** conflicts, size_t conflictCount); @@ -7580,6 +7593,13 @@ extern "C" BINARYNINJACOREAPI char* BNCollaborationChangesetGetName(BNCollaborationChangeset* changeset); BINARYNINJACOREAPI bool BNCollaborationChangesetSetName(BNCollaborationChangeset* changeset, const char* name); + // AnalysisMergeConflictSplitter + BINARYNINJACOREAPI BNAnalysisMergeConflictSplitter* BNRegisterAnalysisMergeConflictSplitter(BNAnalysisMergeConflictSplitterCallbacks* callbacks); + BINARYNINJACOREAPI BNAnalysisMergeConflictSplitter** BNGetAnalysisMergeConflictSplitterList(size_t* count); + BINARYNINJACOREAPI void BNFreeAnalysisMergeConflictSplitterList(BNAnalysisMergeConflictSplitter** splitters, size_t count); + BINARYNINJACOREAPI char* BNAnalysisMergeConflictSplitterGetName(BNAnalysisMergeConflictSplitter* splitter); + BINARYNINJACOREAPI bool BNAnalysisMergeConflictSplitterCanSplit(BNAnalysisMergeConflictSplitter* splitter, const char* key, BNAnalysisMergeConflict* conflict); + BINARYNINJACOREAPI bool BNAnalysisMergeConflictSplitterSplit(BNAnalysisMergeConflictSplitter* splitter, const char* originalKey, BNAnalysisMergeConflict* originalConflict, BNKeyValueStore* result, char*** newKeys, BNAnalysisMergeConflict*** newConflicts, size_t* newCount); #ifdef __cplusplus } -- cgit v1.3.1