summaryrefslogtreecommitdiff
path: root/binaryninjacore.h
diff options
context:
space:
mode:
authorJosh Ferrell <josh@vector35.com>2024-09-18 14:38:09 -0400
committerJosh Ferrell <josh@vector35.com>2024-09-18 15:47:06 -0400
commita4b2f1ed627c2cc7aa6c09dac8390ebce2147d7b (patch)
tree75c70df5651ab30cb028caaae0ffc58e674f295c /binaryninjacore.h
parent5504262629597323782184311297513669076903 (diff)
Custom flow graph layout support
Diffstat (limited to 'binaryninjacore.h')
-rw-r--r--binaryninjacore.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h
index ce74885c..2d3fbca3 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -216,6 +216,7 @@ extern "C"
typedef struct BNTypePrinter BNTypePrinter;
typedef struct BNFlowGraph BNFlowGraph;
typedef struct BNFlowGraphNode BNFlowGraphNode;
+ typedef struct BNFlowGraphLayout BNFlowGraphLayout;
typedef struct BNFlowGraphLayoutRequest BNFlowGraphLayoutRequest;
typedef struct BNSymbol BNSymbol;
typedef struct BNTemporaryFile BNTemporaryFile;
@@ -3102,6 +3103,12 @@ extern "C"
void (*externalRefReleased)(void* ctxt);
} BNCustomFlowGraph;
+ typedef struct BNCustomFlowGraphLayout
+ {
+ void* context;
+ bool (*layout)(void* ctxt, BNFlowGraph* graph, BNFlowGraphNode** nodes, size_t nodeCount);
+ } BNCustomFlowGraphLayout;
+
typedef struct BNRange
{
uint64_t start;
@@ -5271,6 +5278,8 @@ extern "C"
BINARYNINJACOREAPI int BNGetFlowGraphWidth(BNFlowGraph* graph);
BINARYNINJACOREAPI int BNGetFlowGraphHeight(BNFlowGraph* graph);
+ BINARYNINJACOREAPI void BNFlowGraphSetWidth(BNFlowGraph* graph, int width);
+ BINARYNINJACOREAPI void BNFlowGraphSetHeight(BNFlowGraph* graph, int height);
BINARYNINJACOREAPI BNFlowGraphNode* BNCreateFlowGraphNode(BNFlowGraph* graph);
BINARYNINJACOREAPI BNFlowGraphNode* BNNewFlowGraphNodeReference(BNFlowGraphNode* node);
@@ -5279,6 +5288,10 @@ extern "C"
BINARYNINJACOREAPI BNBasicBlock* BNGetFlowGraphBasicBlock(BNFlowGraphNode* node);
BINARYNINJACOREAPI void BNSetFlowGraphBasicBlock(BNFlowGraphNode* node, BNBasicBlock* block);
+
+ BINARYNINJACOREAPI void BNFlowGraphNodeSetX(BNFlowGraphNode* node, int x);
+ BINARYNINJACOREAPI void BNFlowGraphNodeSetY(BNFlowGraphNode* node, int y);
+
BINARYNINJACOREAPI int BNGetFlowGraphNodeX(BNFlowGraphNode* node);
BINARYNINJACOREAPI int BNGetFlowGraphNodeY(BNFlowGraphNode* node);
BINARYNINJACOREAPI int BNGetFlowGraphNodeWidth(BNFlowGraphNode* node);
@@ -5307,6 +5320,16 @@ extern "C"
BINARYNINJACOREAPI bool BNIsNodeValidForFlowGraph(BNFlowGraph* graph, BNFlowGraphNode* node);
+ BINARYNINJACOREAPI void BNFlowGraphNodeSetVisibilityRegion(BNFlowGraphNode* node, int x, int y, int w, int h);
+ BINARYNINJACOREAPI void BNFlowGraphNodeSetOutgoingEdgePoints(BNFlowGraphNode* node, size_t edgeNum, BNPoint* points, size_t pointCount);
+
+ BINARYNINJACOREAPI BNFlowGraphLayout** BNGetFlowGraphLayouts(size_t* count);
+ BINARYNINJACOREAPI void BNFreeFlowGraphLayoutList(BNFlowGraphLayout** layouts);
+ BINARYNINJACOREAPI BNFlowGraphLayout* BNRegisterFlowGraphLayout(const char* name, BNCustomFlowGraphLayout* callbacks);
+ BINARYNINJACOREAPI BNFlowGraphLayout* BNGetFlowGraphLayoutByName(const char* name);
+ BINARYNINJACOREAPI char* BNGetFlowGraphLayoutName(BNFlowGraphLayout* layout);
+ BINARYNINJACOREAPI bool BNFlowGraphLayoutLayout(BNFlowGraphLayout* layout, BNFlowGraph* graph, BNFlowGraphNode** nodes, size_t nodeCount);
+
// Symbols
BINARYNINJACOREAPI BNSymbol* BNCreateSymbol(BNSymbolType type, const char* shortName, const char* fullName,
const char* rawName, uint64_t addr, BNSymbolBinding binding, const BNNameSpace* nameSpace, uint64_t ordinal);