diff options
| author | Mason Reed <mason@vector35.com> | 2026-03-13 12:24:18 -0700 |
|---|---|---|
| committer | Mason Reed <35282038+emesare@users.noreply.github.com> | 2026-03-24 18:46:48 -0700 |
| commit | 3c88b11e5df33116580ac008e36092775df66135 (patch) | |
| tree | cd64fbe149f05683ddabcccd0db7b87356f1f8cf /plugins/warp/api/warpcore.h | |
| parent | f325aa7b6026a1daef84931baeb1f50d7da10c10 (diff) | |
[WARP] Improved UX and API
- Exposes WARP type objects directly
- Adds processor API (for generating warp files directly)
- Adds file and chunk API
- Misc cleanup
- Simplified the amount of commands
- Replaced the "Create" commands with a purpose built processor dialog
- Added a native QT viewer for WARP files
- Simplified committing to a remote with a purpose built commit dialog
Diffstat (limited to 'plugins/warp/api/warpcore.h')
| -rw-r--r-- | plugins/warp/api/warpcore.h | 82 |
1 files changed, 76 insertions, 6 deletions
diff --git a/plugins/warp/api/warpcore.h b/plugins/warp/api/warpcore.h index 21ef105b..c1762ae6 100644 --- a/plugins/warp/api/warpcore.h +++ b/plugins/warp/api/warpcore.h @@ -48,6 +48,9 @@ extern "C" typedef struct BNFunction BNFunction; typedef struct BNSymbol BNSymbol; typedef struct BNType BNType; + typedef struct BNDataBuffer BNDataBuffer; + typedef struct BNProject BNProject; + typedef struct BNProjectFile BNProjectFile; struct BNWARPUUID { @@ -71,20 +74,39 @@ extern "C" typedef BNWARPUUID BNWARPFunctionGUID; typedef BNWARPUUID BNWARPTypeGUID; + typedef struct BNWARPProcessor BNWARPProcessor; + typedef struct BNWARPFile BNWARPFile; + typedef struct BNWARPChunk BNWARPChunk; typedef struct BNWARPTarget BNWARPTarget; typedef struct BNWARPContainer BNWARPContainer; typedef struct BNWARPFunction BNWARPFunction; + typedef struct BNWARPType BNWARPType; typedef struct BNWARPConstraint BNWARPConstraint; typedef struct BNWARPContainerSearchQuery BNWARPContainerSearchQuery; typedef struct BNWARPContainerSearchItem BNWARPContainerSearchItem; - enum BNWARPContainerSearchItemKind + typedef enum BNWARPProcessorIncludedData : uint8_t + { + WARPProcessorIncludedDataSymbols = 0, + WARPProcessorIncludedDataSignatures = 1, + WARPProcessorIncludedDataTypes = 2, + WARPProcessorIncludedDataAll = 3, + } BNWARPProcessorIncludedData; + + typedef enum BNWARPProcessorIncludedFunctions : uint8_t + { + WARPProcessorIncludedFunctionsSelected = 0, + WARPProcessorIncludedFunctionsAnnotated = 1, + WARPProcessorIncludedFunctionsAll = 2, + } BNWARPProcessorIncludedFunctions; + + typedef enum BNWARPContainerSearchItemKind { WARPContainerSearchItemKindSource = 0, WARPContainerSearchItemKindFunction = 1, WARPContainerSearchItemKindType = 2, WARPContainerSearchItemKindSymbol = 3, - }; + } BNWARPContainerSearchItemKind; struct BNWARPContainerSearchResponse { @@ -99,6 +121,28 @@ extern "C" BNWARPConstraintGUID guid; int64_t offset; }; + + struct BNWARPProcessorState + { + bool cancelled; + size_t unprocessedFilesCount; + size_t processedFilesCount; + char** analyzingFiles; + size_t analyzingFilesCount; + char** processingFiles; + size_t processingFilesCount; + }; + + WARP_FFI_API BNWARPProcessor* BNWARPNewProcessor(BNWARPProcessorIncludedData includedData, BNWARPProcessorIncludedFunctions includedFunctions, size_t workerCount); + WARP_FFI_API void BNWARPProcessorAddPath(BNWARPProcessor* processor, const char* path); + WARP_FFI_API void BNWARPProcessorAddProject(BNWARPProcessor* processor, BNProject* project); + WARP_FFI_API void BNWARPProcessorAddProjectFile(BNWARPProcessor* processor, BNProjectFile* projectFile); + WARP_FFI_API void BNWARPProcessorAddBinaryView(BNWARPProcessor* processor, BNBinaryView* view); + WARP_FFI_API BNWARPFile* BNWARPProcessorStart(BNWARPProcessor* processor); + WARP_FFI_API void BNWARPProcessorCancel(BNWARPProcessor* processor); + WARP_FFI_API BNWARPProcessorState BNWARPProcessorGetState(BNWARPProcessor* processor); + WARP_FFI_API void BNWARPFreeProcessor(BNWARPProcessor* processor); + WARP_FFI_API void BNWARPFreeProcessorState(BNWARPProcessorState processorState); WARP_FFI_API void BNWARPRunMatcher(BNBinaryView* view); @@ -123,7 +167,7 @@ extern "C" WARP_FFI_API char* BNWARPContainerGetSourcePath(BNWARPContainer* container, const BNWARPSource* source); WARP_FFI_API bool BNWARPContainerAddFunctions(BNWARPContainer* container, const BNWARPTarget* target, const BNWARPSource* source, BNWARPFunction** functions, size_t count); - WARP_FFI_API bool BNWARPContainerAddTypes(BNBinaryView* view, BNWARPContainer* container, const BNWARPSource* source, BNType** types, size_t count); + WARP_FFI_API bool BNWARPContainerAddTypes(BNWARPContainer* container, const BNWARPSource* source, BNWARPType** types, size_t count); WARP_FFI_API bool BNWARPContainerRemoveFunctions(BNWARPContainer* container, const BNWARPTarget* target, const BNWARPSource* source, BNWARPFunction** functions, size_t count); WARP_FFI_API bool BNWARPContainerRemoveTypes(BNWARPContainer* container, const BNWARPSource* source, BNWARPTypeGUID* types, size_t count); @@ -133,7 +177,7 @@ extern "C" WARP_FFI_API BNWARPSource* BNWARPContainerGetSourcesWithFunctionGUID(BNWARPContainer* container, const BNWARPTarget* target, const BNWARPFunctionGUID* guid, size_t* count); WARP_FFI_API BNWARPSource* BNWARPContainerGetSourcesWithTypeGUID(BNWARPContainer* container, const BNWARPTypeGUID* guid, size_t* count); WARP_FFI_API BNWARPFunction** BNWARPContainerGetFunctionsWithGUID(BNWARPContainer* container, const BNWARPTarget* target, const BNWARPSource* source, const BNWARPFunctionGUID* guid, size_t* count); - WARP_FFI_API BNType* BNWARPContainerGetTypeWithGUID(BNArchitecture* arch, BNWARPContainer* container, const BNWARPSource* source, const BNWARPTypeGUID* guid); + WARP_FFI_API BNWARPType* BNWARPContainerGetTypeWithGUID(BNWARPContainer* container, const BNWARPSource* source, const BNWARPTypeGUID* guid); WARP_FFI_API BNWARPTypeGUID* BNWARPContainerGetTypeGUIDsWithName(BNWARPContainer* container, const BNWARPSource* source, const char* name, size_t* count); WARP_FFI_API BNWARPContainer* BNWARPNewContainerReference(BNWARPContainer* container); @@ -146,7 +190,7 @@ extern "C" WARP_FFI_API BNWARPContainerSearchItemKind BNWARPContainerSearchItemGetKind(BNWARPContainerSearchItem* item); WARP_FFI_API BNWARPSource BNWARPContainerSearchItemGetSource(BNWARPContainerSearchItem* item); - WARP_FFI_API BNType* BNWARPContainerSearchItemGetType(BNArchitecture* arch, BNWARPContainerSearchItem* item); + WARP_FFI_API BNWARPType* BNWARPContainerSearchItemGetType(BNWARPContainerSearchItem* item); WARP_FFI_API char* BNWARPContainerSearchItemGetName(BNWARPContainerSearchItem* item); WARP_FFI_API BNWARPFunction* BNWARPContainerSearchItemGetFunction(BNWARPContainerSearchItem* item); @@ -163,7 +207,7 @@ extern "C" WARP_FFI_API BNWARPFunctionGUID BNWARPFunctionGetGUID(BNWARPFunction* function); WARP_FFI_API BNSymbol* BNWARPFunctionGetSymbol(BNWARPFunction* function, BNFunction* analysisFunction); WARP_FFI_API char* BNWARPFunctionGetSymbolName(BNWARPFunction* function); - WARP_FFI_API BNType* BNWARPFunctionGetType(BNWARPFunction* function, BNFunction* analysisFunction); + WARP_FFI_API BNWARPType* BNWARPFunctionGetType(BNWARPFunction* function); WARP_FFI_API BNWARPConstraint* BNWARPFunctionGetConstraints(BNWARPFunction* function, size_t* count); WARP_FFI_API BNWARPFunctionComment* BNWARPFunctionGetComments(BNWARPFunction* function, size_t* count); WARP_FFI_API bool BNWARPFunctionsEqual(BNWARPFunction* functionA, BNWARPFunction* functionB); @@ -175,11 +219,37 @@ extern "C" WARP_FFI_API void BNWARPFreeFunctionReference(BNWARPFunction* function); WARP_FFI_API void BNWARPFreeFunctionList(BNWARPFunction** functions, size_t count); + WARP_FFI_API BNWARPType* BNWARPGetType(BNType* analysisType, uint8_t confidence); + WARP_FFI_API char* BNWARPTypeGetName(BNWARPType* ty); + WARP_FFI_API uint8_t BNWARPTypeGetConfidence(BNWARPType* ty); + WARP_FFI_API BNType* BNWARPTypeGetAnalysisType(BNArchitecture* arch, BNWARPType* ty); + + WARP_FFI_API BNWARPType* BNWARPNewTypeReference(BNWARPType* ty); + WARP_FFI_API void BNWARPFreeTypeReference(BNWARPType* ty); + WARP_FFI_API BNWARPTarget* BNWARPGetTarget(BNPlatform* platform); WARP_FFI_API BNWARPTarget* BNWARPNewTargetReference(BNWARPTarget* target); WARP_FFI_API void BNWARPFreeTargetReference(BNWARPTarget* target); + WARP_FFI_API BNWARPFile* BNWARPNewFileFromPath(const char* path); + + WARP_FFI_API BNWARPChunk** BNWARPFileGetChunks(BNWARPFile* file, size_t* count); + WARP_FFI_API BNDataBuffer* BNWARPFileToDataBuffer(BNWARPFile* file); + + WARP_FFI_API BNWARPTarget* BNWARPChunkGetTarget(BNWARPChunk* chunk); + WARP_FFI_API BNWARPFunction** BNWARPChunkGetFunctions(BNWARPChunk* chunk, size_t* count); + WARP_FFI_API BNWARPType** BNWARPChunkGetTypes(BNWARPChunk* chunk, size_t* count); + + WARP_FFI_API BNWARPFile* BNWARPNewFileReference(BNWARPFile* file); + WARP_FFI_API void BNWARPFreeFileReference(BNWARPFile* file); + + WARP_FFI_API BNWARPChunk* BNWARPNewChunkReference(BNWARPChunk* chunk); + WARP_FFI_API void BNWARPFreeChunkReference(BNWARPChunk* chunk); + + WARP_FFI_API void BNWARPFreeChunkList(BNWARPChunk** chunks, size_t count); + WARP_FFI_API void BNWARPFreeTypeList(BNWARPType** types, size_t count); + #ifdef __cplusplus } #endif |
