MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / register_render_layer

Function register_render_layer

rust/src/render_layer.rs:64–85  ·  view source on GitHub ↗

Register a [`RenderLayer`] with the API.

(
    name: S,
    render_layer: T,
    default_state: RenderLayerDefaultState,
)

Source from the content-addressed store, hash-verified

62
63/// Register a [`RenderLayer`] with the API.
64pub fn register_render_layer<S: BnStrCompatible, T: RenderLayer>(
65 name: S,
66 render_layer: T,
67 default_state: RenderLayerDefaultState,
68) -> (&'static mut T, CoreRenderLayer) {
69 let render_layer = Box::leak(Box::new(render_layer));
70 let mut callback = BNRenderLayerCallbacks {
71 context: render_layer as *mut _ as *mut c_void,
72 applyToFlowGraph: Some(cb_apply_to_flow_graph::<T>),
73 applyToLinearViewObject: Some(cb_apply_to_linear_view_object::<T>),
74 freeLines: Some(cb_free_lines),
75 };
76 let result = unsafe {
77 BNRegisterRenderLayer(
78 name.into_bytes_with_nul().as_ref().as_ptr() as *const _,
79 &mut callback,
80 default_state.into(),
81 )
82 };
83 let core = CoreRenderLayer::from_raw(NonNull::new(result).unwrap());
84 (render_layer, core)
85}
86
87pub trait RenderLayer: Sized {
88 /// Apply this Render Layer to a Flow Graph.

Callers 2

Calls 2

into_bytes_with_nulMethod · 0.80
as_refMethod · 0.45

Tested by 2