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

Method _split

python/collaboration/merge.py:298–333  ·  view source on GitHub ↗
(
		self,
		ctxt: ctypes.c_void_p,
		original_key: ctypes.c_char_p,
		original_conflict: core.BNAnalysisMergeConflictHandle,
		result_kvs: core.BNKeyValueStoreHandle,
		new_keys: ctypes.POINTER(ctypes.POINTER(ctypes.c_char_p)),
		new_conflicts: ctypes.POINTER(core.BNAnalysisMergeConflictHandle),
		new_count: ctypes.POINTER(ctypes.c_size_t)
	)

Source from the content-addressed store, hash-verified

296 return False
297
298 def _split(
299 self,
300 ctxt: ctypes.c_void_p,
301 original_key: ctypes.c_char_p,
302 original_conflict: core.BNAnalysisMergeConflictHandle,
303 result_kvs: core.BNKeyValueStoreHandle,
304 new_keys: ctypes.POINTER(ctypes.POINTER(ctypes.c_char_p)),
305 new_conflicts: ctypes.POINTER(core.BNAnalysisMergeConflictHandle),
306 new_count: ctypes.POINTER(ctypes.c_size_t)
307 ) -> bool:
308 try:
309 py_original_conflict = MergeConflict(handle=original_conflict)
310 py_result_kvs = KeyValueStore(handle=ctypes.cast(result_kvs, core.BNKeyValueStoreHandle))
311 result = self.split(core.pyNativeStr(original_key), py_original_conflict, py_result_kvs)
312
313 if result is None:
314 return False
315
316 new_count[0] = ctypes.c_size_t(len(result))
317 new_keys[0] = (ctypes.c_char_p * len(result))()
318 new_conflicts[0] = (core.BNAnalysisMergeConflictHandle * len(result))()
319
320 self._split_keys = []
321 self._split_conflicts = []
322
323 for (i, (key, conflict)) in enumerate(result):
324 self._split_keys.append(key)
325 self._split_conflicts.append(conflict)
326
327 new_keys[0][i] = core.cstr(self._split_keys[-1])
328 new_conflicts[0][i] = self._split_conflicts[-1]._handle
329
330 return True
331 except:
332 traceback.print_exc(file=sys.stderr)
333 return False
334
335 def _free_name(self, ctxt: ctypes.c_void_p, name: ctypes.c_char_p):
336 core.BNFreeString(name)

Callers

nothing calls this directly

Calls 4

splitMethod · 0.95
MergeConflictClass · 0.70
KeyValueStoreClass · 0.50
appendMethod · 0.45

Tested by

no test coverage detected