Skip to content

Commit 7728859

Browse files
committed
Make RLDES passed to Register instead of a property
1 parent 7488370 commit 7728859

File tree

6 files changed

+13
-28
lines changed

6 files changed

+13
-28
lines changed

binaryninjaapi.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19109,8 +19109,9 @@ namespace BinaryNinja {
1910919109
/*! Register a custom Render Layer.
1911019110

1911119111
\param layer Render Layer to register
19112+
\param enableState Whether the layer should be enabled by default
1911219113
*/
19113-
static void Register(RenderLayer* layer);
19114+
static void Register(RenderLayer* layer, BNRenderLayerDefaultEnableState enableState = DisabledByDefaultRenderLayerDefaultEnableState);
1911419115

1911519116
/*! Get the list of all currently registered Render Layers.
1911619117

@@ -19137,13 +19138,6 @@ namespace BinaryNinja {
1913719138
*/
1913819139
BNRenderLayerDefaultEnableState GetDefaultEnableState() const;
1913919140

19140-
/*! Set whether the Render Layer is enabled by default.
19141-
Defaults to Disabled by Default
19142-
19143-
\param state New default enable state
19144-
*/
19145-
void SetDefaultEnableState(BNRenderLayerDefaultEnableState state);
19146-
1914719141
/*! Apply this Render Layer to a single Basic Block of Disassembly lines.
1914819142
Subclasses should modify the input `lines` list to make modifications to
1914919143
the presentation of the block.

binaryninjacore.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8144,13 +8144,12 @@ extern "C"
81448144
BINARYNINJACOREAPI void BNFreeLineFormatterSettings(BNLineFormatterSettings* settings);
81458145

81468146
// Render Layers
8147-
BINARYNINJACOREAPI BNRenderLayer* BNRegisterRenderLayer(const char* name, BNRenderLayerCallbacks* callbacks);
8147+
BINARYNINJACOREAPI BNRenderLayer* BNRegisterRenderLayer(const char* name, BNRenderLayerCallbacks* callbacks, BNRenderLayerDefaultEnableState enableState);
81488148
BINARYNINJACOREAPI BNRenderLayer** BNGetRenderLayerList(size_t* count);
81498149
BINARYNINJACOREAPI void BNFreeRenderLayerList(BNRenderLayer** renderLayers);
81508150
BINARYNINJACOREAPI BNRenderLayer* BNGetRenderLayerByName(const char* name);
81518151
BINARYNINJACOREAPI char* BNGetRenderLayerName(BNRenderLayer* renderLayer);
81528152
BINARYNINJACOREAPI BNRenderLayerDefaultEnableState BNGetRenderLayerDefaultEnableState(BNRenderLayer* renderLayer);
8153-
BINARYNINJACOREAPI void BNSetRenderLayerDefaultEnableState(BNRenderLayer* renderLayer, BNRenderLayerDefaultEnableState state);
81548153

81558154
BINARYNINJACOREAPI void BNApplyRenderLayerToFlowGraph(BNRenderLayer* renderLayer, BNFlowGraph* graph);
81568155
BINARYNINJACOREAPI void BNApplyRenderLayerToLinearViewObject(

plugins/stack_render_layer/plugin.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ class StackRenderLayer: public RenderLayer
8181
std::vector<DisassemblyTextLine>& lines
8282
) override
8383
{
84+
// Break this out into a helper so we don't have to write it twice
8485
ApplyToLines(block, lines);
8586
}
8687

@@ -89,6 +90,7 @@ class StackRenderLayer: public RenderLayer
8990
std::vector<DisassemblyTextLine>& lines
9091
) override
9192
{
93+
// Break this out into a helper so we don't have to write it twice
9294
ApplyToLines(block, lines);
9395
}
9496
};
@@ -100,8 +102,7 @@ extern "C" {
100102
BINARYNINJAPLUGIN bool CorePluginInit()
101103
{
102104
static StackRenderLayer* layer = new StackRenderLayer();
103-
RenderLayer::Register(layer);
104-
layer->SetDefaultEnableState(AlwaysEnabledRenderLayerDefaultEnableState);
105+
RenderLayer::Register(layer, DisabledByDefaultRenderLayerDefaultEnableState);
105106
return true;
106107
}
107108
}

python/renderlayer.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,7 @@ def register(cls):
9191
layer._cb.applyToFlowGraph = layer._cb.applyToFlowGraph.__class__(layer._apply_to_flow_graph)
9292
layer._cb.applyToLinearViewObject = layer._cb.applyToLinearViewObject.__class__(layer._apply_to_linear_view_object)
9393
layer._cb.freeLines = layer._cb.freeLines.__class__(layer._free_lines)
94-
layer.handle = core.BNRegisterRenderLayer(layer.__class__.name, layer._cb)
95-
core.BNSetRenderLayerDefaultEnableState(layer.handle, layer.default_enable_state)
94+
layer.handle = core.BNRegisterRenderLayer(layer.__class__.name, layer._cb, layer.default_enable_state)
9695
handle_ptr = ctypes.cast(layer.handle, ctypes.c_void_p)
9796
cls._registered_instances[handle_ptr.value] = layer
9897

renderlayer.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,14 @@ void RenderLayer::FreeLinesCallback(void* ctxt, BNLinearDisassemblyLine* lines,
7777
}
7878

7979

80-
void RenderLayer::Register(RenderLayer* layer)
80+
void RenderLayer::Register(RenderLayer* layer, BNRenderLayerDefaultEnableState enableState)
8181
{
8282
BNRenderLayerCallbacks cb;
8383
cb.context = (void*)layer;
8484
cb.applyToFlowGraph = ApplyToFlowGraphCallback;
8585
cb.applyToLinearViewObject = ApplyToLinearViewObjectCallback;
8686
cb.freeLines = FreeLinesCallback;
87-
layer->m_object = BNRegisterRenderLayer(layer->m_nameForRegister.c_str(), &cb);
87+
layer->m_object = BNRegisterRenderLayer(layer->m_nameForRegister.c_str(), &cb, enableState);
8888
g_registeredInstances[layer->m_object] = layer;
8989
}
9090

@@ -129,12 +129,6 @@ BNRenderLayerDefaultEnableState RenderLayer::GetDefaultEnableState() const
129129
}
130130

131131

132-
void RenderLayer::SetDefaultEnableState(BNRenderLayerDefaultEnableState state)
133-
{
134-
BNSetRenderLayerDefaultEnableState(m_object, state);
135-
}
136-
137-
138132
std::string RenderLayer::GetName() const
139133
{
140134
char* name = BNGetRenderLayerName(m_object);

rust/src/render_layer.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@ use binaryninjacore_sys::*;
1111
use std::ffi::{c_char, c_void};
1212
use std::ptr::NonNull;
1313

14+
pub type RenderLayerDefaultEnableState = BNRenderLayerDefaultEnableState;
15+
1416
/// Register a [`RenderLayer`] with the API.
1517
pub fn register_render_layer<S: BnStrCompatible, T: RenderLayer>(
1618
name: S,
1719
render_layer: T,
20+
enable_state: RenderLayerDefaultEnableState,
1821
) -> (&'static mut T, CoreRenderLayer) {
1922
let render_layer = Box::leak(Box::new(render_layer));
2023
let mut callback = BNRenderLayerCallbacks {
@@ -27,6 +30,7 @@ pub fn register_render_layer<S: BnStrCompatible, T: RenderLayer>(
2730
BNRegisterRenderLayer(
2831
name.into_bytes_with_nul().as_ref().as_ptr() as *const _,
2932
&mut callback,
33+
enable_state,
3034
)
3135
};
3236
let core = CoreRenderLayer::from_raw(NonNull::new(result).unwrap());
@@ -244,8 +248,6 @@ pub struct CoreRenderLayer {
244248
pub(crate) handle: NonNull<BNRenderLayer>,
245249
}
246250

247-
pub type RenderLayerDefaultEnableState = BNRenderLayerDefaultEnableState;
248-
249251
impl CoreRenderLayer {
250252
pub fn from_raw(handle: NonNull<BNRenderLayer>) -> Self {
251253
Self { handle }
@@ -267,10 +269,6 @@ impl CoreRenderLayer {
267269
unsafe { BNGetRenderLayerDefaultEnableState(self.handle.as_ptr()) }
268270
}
269271

270-
pub fn set_default_enable_state(&self, enable_state: RenderLayerDefaultEnableState) {
271-
unsafe { BNSetRenderLayerDefaultEnableState(self.handle.as_ptr(), enable_state) }
272-
}
273-
274272
pub fn apply_to_flow_graph(&self, graph: &FlowGraph) {
275273
unsafe { BNApplyRenderLayerToFlowGraph(self.handle.as_ptr(), graph.handle) }
276274
}

0 commit comments

Comments
 (0)