diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2024-08-22 12:55:49 -0600 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2024-10-21 13:56:55 -0400 |
| commit | d8e3001e535fad178c621ff07418f81f25123dc4 (patch) | |
| tree | 54c03cef2f0bdfd9a3b6df4334c81becb63e4993 /datarenderer.cpp | |
| parent | 0e281a30d73c0f31ef9442fef0346779164231ad (diff) | |
Allow multiple high level representations for display, add Pseudo Rust and a Pseudo Python example plugin
Diffstat (limited to 'datarenderer.cpp')
| -rw-r--r-- | datarenderer.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/datarenderer.cpp b/datarenderer.cpp index a2ed1dae..4e4a3346 100644 --- a/datarenderer.cpp +++ b/datarenderer.cpp @@ -64,7 +64,7 @@ bool DataRenderer::IsValidForDataCallback( BNDisassemblyTextLine* DataRenderer::GetLinesForDataCallback(void* ctxt, BNBinaryView* view, uint64_t addr, BNType* type, const BNInstructionTextToken* prefix, size_t prefixCount, size_t width, size_t* count, - BNTypeContext* typeCtx, size_t ctxCount) + BNTypeContext* typeCtx, size_t ctxCount, const char* language) { CallbackRef<DataRenderer> renderer(ctxt); Ref<BinaryView> viewObj = new BinaryView(BNNewViewReference(view)); @@ -80,7 +80,8 @@ BNDisassemblyTextLine* DataRenderer::GetLinesForDataCallback(void* ctxt, BNBinar contextType->AddRef(); context.push_back({contextType, typeCtx[i].offset}); } - auto lines = renderer->GetLinesForData(viewObj, addr, typeObj, prefixes, width, context); + auto lines = renderer->GetLinesForData(viewObj, addr, typeObj, prefixes, width, context, + language ? language : string()); *count = lines.size(); BNDisassemblyTextLine* buf = new BNDisassemblyTextLine[lines.size()]; for (size_t i = 0; i < lines.size(); i++) @@ -128,7 +129,7 @@ bool DataRenderer::IsValidForData(BinaryView* data, uint64_t addr, Type* type, v vector<DisassemblyTextLine> DataRenderer::GetLinesForData(BinaryView* data, uint64_t addr, Type* type, - const std::vector<InstructionTextToken>& prefix, size_t width, vector<pair<Type*, size_t>>& context) + const std::vector<InstructionTextToken>& prefix, size_t width, vector<pair<Type*, size_t>>& context, const string& language) { BNInstructionTextToken* prefixes = InstructionTextToken::CreateInstructionTextTokenList(prefix); BNTypeContext* typeCtx = new BNTypeContext[context.size()]; @@ -139,7 +140,7 @@ vector<DisassemblyTextLine> DataRenderer::GetLinesForData(BinaryView* data, uint } size_t count = 0; BNDisassemblyTextLine* lines = BNGetLinesForData(m_object, data->GetObject(), addr, type->GetObject(), prefixes, - prefix.size(), width, &count, typeCtx, context.size()); + prefix.size(), width, &count, typeCtx, context.size(), language.c_str()); delete[] typeCtx; for (size_t i = 0; i < prefix.size(); i++) @@ -168,7 +169,7 @@ vector<DisassemblyTextLine> DataRenderer::GetLinesForData(BinaryView* data, uint vector<DisassemblyTextLine> DataRenderer::RenderLinesForData(BinaryView* data, uint64_t addr, Type* type, - const std::vector<InstructionTextToken>& prefix, size_t width, vector<pair<Type*, size_t>>& context) + const std::vector<InstructionTextToken>& prefix, size_t width, vector<pair<Type*, size_t>>& context, const string& language) { BNInstructionTextToken* prefixes = InstructionTextToken::CreateInstructionTextTokenList(prefix); BNTypeContext* typeCtx = new BNTypeContext[context.size()]; @@ -179,7 +180,8 @@ vector<DisassemblyTextLine> DataRenderer::RenderLinesForData(BinaryView* data, u } size_t count = 0; BNDisassemblyTextLine* lines = BNRenderLinesForData( - data->GetObject(), addr, type->GetObject(), prefixes, prefix.size(), width, &count, typeCtx, context.size()); + data->GetObject(), addr, type->GetObject(), prefixes, prefix.size(), width, &count, typeCtx, context.size(), + language.c_str()); delete[] typeCtx; for (size_t i = 0; i < prefix.size(); i++) |
