( self, file_metadata: Optional['filemetadata.FileMetadata'] = None, parent_view: Optional['BinaryView'] = None, handle: Optional[core.BNBinaryViewHandle] = None )
| 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 |
nothing calls this directly
no test coverage detected