import { OSI, FunctionDefinition, ClassDefinitionMethod, IClassDefinitionTableEntry, ISubroutineTableEntry, Subroutine } from '@sage-js/res-osi'; import { IDisassemblyStructuredFileMapper, MapClassStructuresToNames, MapSubroutineReferenceCount } from '../../types'; import { ASTNodeStatement } from '../../ast/node/statement/class'; import { ASTNodeFile } from '../../ast/node/file'; import { AssemblyDisassembler } from './class'; /** * AssemblyDisassemblerStructured constructor. */ export declare class AssemblyDisassemblerStructured extends AssemblyDisassembler { constructor(); /** * Disassemble OSI to AST. * * @param osi OSI instance. * @param subroutineReferenceCount Map subroutine references count. * @returns AST file. */ disassemble(osi: OSI, subroutineReferenceCount?: MapSubroutineReferenceCount[] | null): ASTNodeFile; /** * Disassemble OSI to AST. * Supply a mapper object to disassemble multiple different AST files. * Otherwise a single AST file is returned in the list. * * @param osi OSI instance. * @param mapper Mapper object or null. * @param subroutineReferenceCount Map subroutine references count. * @returns AST file. */ disassembles(osi: OSI, mapper?: IDisassemblyStructuredFileMapper | null, subroutineReferenceCount?: MapSubroutineReferenceCount[] | null): ASTNodeFile[]; /** * Encode OSI AST function. * * @param osi OSI instance. * @param functionDefinition Function definition. * @param index Table index. * @param subroutine Consumed subroutine pointer out. * @returns AST statements. */ disassembleStructuredFunction(osi: OSI, functionDefinition: FunctionDefinition, index: number, subroutine?: Subroutine[] | null): ASTNodeStatement[]; /** * Encode OSI AST class. * * @param osi OSI instance. * @param classDefinition Class definition. * @param index Table index. * @param mapClassStructuresToNames Class structures to names. * @param parent Parent definition or null. * @param subroutines Consumed subroutines pointer out. * @returns AST statements. */ disassembleStructuredClass(osi: OSI, classDefinition: IClassDefinitionTableEntry, index: number, mapClassStructuresToNames: MapClassStructuresToNames, parent: IClassDefinitionTableEntry | null, subroutines?: Subroutine[][] | null): ASTNodeStatement[]; /** * Encode OSI AST class property. * * @param osi OSI instance. * @param method Class method. * @param subroutine Consumed subroutine pointer out. * @returns AST statements. */ disassembleStructuredClassMethod(osi: OSI, method: ClassDefinitionMethod, subroutine?: Subroutine[] | null): ASTNodeStatement[]; /** * Encode OSI AST subroutine. * * @param osi OSI instance. * @param subroutineEntry Subroutine entry. * @returns AST statements. */ disassembleStructuredSubroutine(osi: OSI, subroutineEntry: ISubroutineTableEntry): ASTNodeStatement[]; /** * Encode OSI AST subroutine body. * * @param osi OSI instance. * @param subroutineEntry Subroutine entry. * @returns AST statements. */ disassembleStructuredSubroutineBody(osi: OSI, subroutineEntry: ISubroutineTableEntry): ASTNodeStatement[]; /** * Takes a mapper object and returns AST file generators. * * @returns Generator methods. */ protected _disassemblesStructuredFileMapperGenerator(): { list: () => ASTNodeFile[]; file: (name: string) => ASTNodeFile; }; /** * Default file mapper instance. * * @returns Mapper instance. */ protected _disassemblesStructuredFileMapperDefault(): IDisassemblyStructuredFileMapper; }