| 3578 | |
| 3579 | |
| 3580 | class DisassemblyTextRenderer: |
| 3581 | def __init__( |
| 3582 | self, func: Optional[AnyFunctionType] = None, settings: Optional['DisassemblySettings'] = None, |
| 3583 | handle: Optional[core.BNDisassemblySettings] = None |
| 3584 | ): |
| 3585 | if handle is None: |
| 3586 | if func is None: |
| 3587 | raise ValueError("function required for disassembly") |
| 3588 | settings_obj = None |
| 3589 | if settings is not None: |
| 3590 | settings_obj = settings.handle |
| 3591 | if isinstance(func, Function): |
| 3592 | self.handle = core.BNCreateDisassemblyTextRenderer(func.handle, settings_obj) |
| 3593 | elif isinstance(func, lowlevelil.LowLevelILFunction): |
| 3594 | self.handle = core.BNCreateLowLevelILDisassemblyTextRenderer(func.handle, settings_obj) |
| 3595 | elif isinstance(func, mediumlevelil.MediumLevelILFunction): |
| 3596 | self.handle = core.BNCreateMediumLevelILDisassemblyTextRenderer(func.handle, settings_obj) |
| 3597 | elif isinstance(func, highlevelil.HighLevelILFunction): |
| 3598 | self.handle = core.BNCreateHighLevelILDisassemblyTextRenderer(func.handle, settings_obj) |
| 3599 | else: |
| 3600 | raise TypeError("invalid function object") |
| 3601 | else: |
| 3602 | self.handle = handle |
| 3603 | |
| 3604 | def __del__(self): |
| 3605 | if core is not None: |
| 3606 | core.BNFreeDisassemblyTextRenderer(self.handle) |
| 3607 | |
| 3608 | @property |
| 3609 | def function(self) -> 'Function': |
| 3610 | return Function(handle=core.BNGetDisassemblyTextRendererFunction(self.handle)) |
| 3611 | |
| 3612 | @property |
| 3613 | def il_function(self) -> Optional[ILFunctionType]: |
| 3614 | llil = core.BNGetDisassemblyTextRendererLowLevelILFunction(self.handle) |
| 3615 | if llil: |
| 3616 | return lowlevelil.LowLevelILFunction(handle=llil) |
| 3617 | mlil = core.BNGetDisassemblyTextRendererMediumLevelILFunction(self.handle) |
| 3618 | if mlil: |
| 3619 | return mediumlevelil.MediumLevelILFunction(handle=mlil) |
| 3620 | hlil = core.BNGetDisassemblyTextRendererHighLevelILFunction(self.handle) |
| 3621 | if hlil: |
| 3622 | return highlevelil.HighLevelILFunction(handle=hlil) |
| 3623 | return None |
| 3624 | |
| 3625 | @property |
| 3626 | def basic_block(self) -> Optional['basicblock.BasicBlock']: |
| 3627 | result = core.BNGetDisassemblyTextRendererBasicBlock(self.handle) |
| 3628 | if result: |
| 3629 | return basicblock.BasicBlock._from_core_block(handle=result) |
| 3630 | return None |
| 3631 | |
| 3632 | @basic_block.setter |
| 3633 | def basic_block(self, block: Optional['basicblock.BasicBlock']) -> None: |
| 3634 | if block is not None: |
| 3635 | core.BNSetDisassemblyTextRendererBasicBlock(self.handle, block.handle) |
| 3636 | else: |
| 3637 | core.BNSetDisassemblyTextRendererBasicBlock(self.handle, None) |
no outgoing calls
no test coverage detected