UNPKG

snes-disassembler

Version:

A Super Nintendo (SNES) ROM disassembler for 65816 assembly

123 lines 3.23 kB
/** * Phase 4: Symbol Table Management System * * Comprehensive symbol management with external file support: * - Symbol export/import (.sym, .mlb files) * - Symbol name suggestion based on usage patterns * - Symbol conflict resolution * - Bulk symbol operations * - Symbol validation and verification */ import { SymbolTableEntry } from './output-formatters'; export interface SymbolValidationResult { isValid: boolean; errors: string[]; warnings: string[]; } export interface SymbolConflict { address: number; existingSymbol: SymbolTableEntry; conflictingSymbol: SymbolTableEntry; conflictType: 'NAME_DUPLICATE' | 'ADDRESS_DUPLICATE' | 'SCOPE_CONFLICT'; } export interface BulkOperationResult { succeeded: number; failed: number; conflicts: SymbolConflict[]; errors: string[]; } export declare class SymbolManager { private symbols; private nameToAddress; private readonly reservedNames; constructor(); /** * Add a symbol to the table */ addSymbol(address: number, entry: SymbolTableEntry): SymbolValidationResult; /** * Remove a symbol by address */ removeSymbol(address: number): boolean; /** * Get symbol by address */ getSymbol(address: number): SymbolTableEntry | undefined; /** * Get address by symbol name */ getAddress(name: string): number | undefined; /** * Get all symbols */ getAllSymbols(): Map<number, SymbolTableEntry>; /** * Validate a symbol entry */ private validateSymbol; /** * Generate symbol names based on address patterns and context */ generateSymbolName(address: number, type: SymbolTableEntry['type'], context?: string): string; private getSymbolPrefix; private isVectorAddress; /** * Bulk symbol operations */ bulkAddSymbols(symbols: Map<number, SymbolTableEntry>): BulkOperationResult; /** * Export symbols to various formats */ exportToFile(filePath: string, format: 'sym' | 'mlb' | 'json' | 'csv'): void; private getFormatFromExtension; /** * Export to .sym format (No$SNS debugger format) */ private exportToSymFile; /** * Export to .mlb format (MAME debugger format) */ private exportToMLBFile; /** * Export to JSON format */ private exportToJSONFile; /** * Export to CSV format */ private exportToCSVFile; /** * Import symbols from file */ importFromFile(filePath: string, format?: 'sym' | 'mlb' | 'json' | 'csv'): BulkOperationResult; /** * Import from .sym format */ private importFromSymFile; /** * Import from .mlb format */ private importFromMLBFile; /** * Import from JSON format */ private importFromJSONFile; /** * Import from CSV format */ private importFromCSVFile; private parseCSVLine; /** * Clear all symbols */ clear(): void; /** * Get symbol statistics */ getStatistics(): { total: number; byType: Record<string, number>; byScope: Record<string, number>; }; } //# sourceMappingURL=symbol-manager.d.ts.map