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

Method __init__

python/binaryview.py:2547–2606  ·  view source on GitHub ↗
(
	    self, file_metadata: Optional['filemetadata.FileMetadata'] = None, parent_view: Optional['BinaryView'] = None,
	    handle: Optional[core.BNBinaryViewHandle] = None
	)

Source from the content-addressed store, hash-verified

2545 return super().__new__(cls)
2546
2547 def __init__(
2548 self, file_metadata: Optional['filemetadata.FileMetadata'] = None, parent_view: Optional['BinaryView'] = None,
2549 handle: Optional[core.BNBinaryViewHandle] = None
2550 ):
2551 if handle is not None:
2552 if self.__class__._cache_contains(handle):
2553 return
2554 _handle = handle
2555 if file_metadata is None:
2556 self._file = filemetadata.FileMetadata(handle=core.BNGetFileForView(handle))
2557 else:
2558 self._file = file_metadata
2559 elif self.__class__ is BinaryView:
2560 binaryninja._init_plugins()
2561 if file_metadata is None:
2562 file_metadata = filemetadata.FileMetadata()
2563 _handle = core.BNCreateBinaryDataView(file_metadata.handle)
2564 self._file = filemetadata.FileMetadata(handle=core.BNNewFileReference(file_metadata.handle))
2565 else:
2566 binaryninja._init_plugins()
2567 if not self.__class__._registered:
2568 raise TypeError("view type not registered")
2569 self._cb = core.BNCustomBinaryView()
2570 self._cb.context = 0
2571 self._cb.init = self._cb.init.__class__(self._init)
2572 self._cb.externalRefTaken = self._cb.externalRefTaken.__class__(self._external_ref_taken)
2573 self._cb.externalRefReleased = self._cb.externalRefReleased.__class__(self._external_ref_released)
2574 self._cb.read = self._cb.read.__class__(self._read)
2575 self._cb.write = self._cb.write.__class__(self._write)
2576 self._cb.insert = self._cb.insert.__class__(self._insert)
2577 self._cb.remove = self._cb.remove.__class__(self._remove)
2578 self._cb.getModification = self._cb.getModification.__class__(self._get_modification)
2579 self._cb.isValidOffset = self._cb.isValidOffset.__class__(self._is_valid_offset)
2580 self._cb.isOffsetReadable = self._cb.isOffsetReadable.__class__(self._is_offset_readable)
2581 self._cb.isOffsetWritable = self._cb.isOffsetWritable.__class__(self._is_offset_writable)
2582 self._cb.isOffsetExecutable = self._cb.isOffsetExecutable.__class__(self._is_offset_executable)
2583 self._cb.getNextValidOffset = self._cb.getNextValidOffset.__class__(self._get_next_valid_offset)
2584 self._cb.getStart = self._cb.getStart.__class__(self._get_start)
2585 self._cb.getLength = self._cb.getLength.__class__(self._get_length)
2586 self._cb.getEntryPoint = self._cb.getEntryPoint.__class__(self._get_entry_point)
2587 self._cb.isExecutable = self._cb.isExecutable.__class__(self._is_executable)
2588 self._cb.getDefaultEndianness = self._cb.getDefaultEndianness.__class__(self._get_default_endianness)
2589 self._cb.isRelocatable = self._cb.isRelocatable.__class__(self._is_relocatable)
2590 self._cb.getAddressSize = self._cb.getAddressSize.__class__(self._get_address_size)
2591 self._cb.save = self._cb.save.__class__(self._save)
2592 if file_metadata is None:
2593 raise Exception("Attempting to create a BinaryView with FileMetadata which is None")
2594 self._file = file_metadata
2595 _parent_view = None
2596 if parent_view is not None:
2597 _parent_view = parent_view.handle
2598 _handle = core.BNCreateCustomBinaryView(self.__class__.name, file_metadata.handle, _parent_view, self._cb)
2599
2600 assert _handle is not None
2601 self.handle = _handle
2602 self._notifications = {}
2603 self._parse_only = False
2604 self._preload_limit = 5

Callers

nothing calls this directly

Calls 2

_cache_containsMethod · 0.80
FileMetadataMethod · 0.80

Tested by

no test coverage detected