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

Method register

python/debuginfo.py:126–149  ·  view source on GitHub ↗

Registers a DebugInfoParser. See ``debuginfo.DebugInfoParser`` for more details.

(
	    cls, name: str, is_valid: Callable[['binaryview.BinaryView'], bool],
	    parse_info: Callable[["DebugInfo", 'binaryview.BinaryView', 'binaryview.BinaryView', ProgressFuncType], bool]
	)

Source from the content-addressed store, hash-verified

124
125 @classmethod
126 def register(
127 cls, name: str, is_valid: Callable[['binaryview.BinaryView'], bool],
128 parse_info: Callable[["DebugInfo", 'binaryview.BinaryView', 'binaryview.BinaryView', ProgressFuncType], bool]
129 ) -> "DebugInfoParser":
130 """Registers a DebugInfoParser. See ``debuginfo.DebugInfoParser`` for more details."""
131 binaryninja._init_plugins()
132
133 is_valid_cb = ctypes.CFUNCTYPE(
134 ctypes.c_bool, ctypes.c_void_p, ctypes.POINTER(core.BNBinaryView)
135 )(lambda ctxt, view: cls._is_valid(view, is_valid))
136
137 parse_info_cb = ctypes.CFUNCTYPE(
138 ctypes.c_bool, ctypes.c_void_p, ctypes.POINTER(core.BNDebugInfo), ctypes.POINTER(core.BNBinaryView), ctypes.POINTER(core.BNBinaryView),
139 ctypes.CFUNCTYPE(ctypes.c_bool, ctypes.c_void_p, ctypes.c_size_t, ctypes.c_size_t), ctypes.c_void_p,
140 )(lambda ctxt, debug_info, view, debug_view, progress, progress_ctxt: cls._parse_info(debug_info, view, debug_view, lambda cur, max: progress(progress_ctxt, cur, max), parse_info))
141
142 # Don't let our callbacks get garbage collected
143 global _debug_info_parsers
144 _debug_info_parsers[len(_debug_info_parsers)] = (is_valid_cb, parse_info_cb)
145 parser = core.BNRegisterDebugInfoParser(name, is_valid_cb, parse_info_cb, None)
146 assert parser is not None, "core.BNRegisterDebugInfoParser is not None"
147 parser_ref = core.BNNewDebugInfoParserReference(parser)
148 assert parser_ref is not None, "core.BNNewDebugInfoParserReference returned None"
149 return DebugInfoParser(parser_ref)
150
151
152class DebugInfoParser(object, metaclass=_DebugInfoParserMetaClass):

Callers

nothing calls this directly

Calls 3

_parse_infoMethod · 0.80
DebugInfoParserClass · 0.70
_is_validMethod · 0.45

Tested by

no test coverage detected