diff options
| author | Josh Ferrell <josh@vector35.com> | 2024-09-18 14:38:09 -0400 |
|---|---|---|
| committer | Josh Ferrell <josh@vector35.com> | 2024-09-18 15:47:06 -0400 |
| commit | a4b2f1ed627c2cc7aa6c09dac8390ebce2147d7b (patch) | |
| tree | 75c70df5651ab30cb028caaae0ffc58e674f295c /binaryninjacore.h | |
| parent | 5504262629597323782184311297513669076903 (diff) | |
Custom flow graph layout support
Diffstat (limited to 'binaryninjacore.h')
| -rw-r--r-- | binaryninjacore.h | 23 |
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); |
