UNPKG

il2cpp-dump-analyzer-mcp

Version:

Agentic RAG system for analyzing IL2CPP dump.cs files from Unity games

125 lines (124 loc) 4.8 kB
/** * Abstract base class for IL2CPP code generators * Provides common functionality and enforces consistent patterns across all generators */ import { CodeGenerationRequest, CodeGenerationResult, GenerationContext, GenerationOptions, GenerationMetadata, GenerationError, GenerationMetrics, CodeStatistics, SourceEntityInfo, TemplateConfig, CodeStyleOptions, ValidationResult } from './types'; /** * Abstract base generator class that all specific generators must extend */ export declare abstract class BaseGenerator { protected context: GenerationContext; protected startTime: number; protected metrics: Partial<GenerationMetrics>; /** * Initialize the generator with context * @param context Generation context containing request, templates, and utilities */ constructor(context: GenerationContext); /** * Main entry point for code generation * @param request Code generation request * @returns Promise resolving to generation result */ generate(request: CodeGenerationRequest): Promise<CodeGenerationResult>; /** * Abstract method to validate the generation request * Must be implemented by concrete generators */ protected abstract validateRequest(request: CodeGenerationRequest): Promise<ValidationResult>; /** * Abstract method to parse the source entity * Must be implemented by concrete generators */ protected abstract parseSourceEntity(request: CodeGenerationRequest): Promise<any>; /** * Abstract method to generate code from parsed entity * Must be implemented by concrete generators */ protected abstract generateCode(parsedEntity: any, options: GenerationOptions): Promise<string>; /** * Validate generated C# code syntax * @param code Generated code to validate * @returns Validation result */ protected validateGeneratedCode(code: string): Promise<ValidationResult>; /** * Create a successful generation result * @param request Original request * @param code Generated code * @param warnings Any warnings generated * @returns Success result */ protected createSuccessResult(request: CodeGenerationRequest, code: string, warnings: string[]): CodeGenerationResult; /** * Create an error result * @param request Original request * @param errors Errors that occurred * @param warnings Any warnings generated * @returns Error result */ protected createErrorResult(request: CodeGenerationRequest, errors: GenerationError[], warnings: string[]): CodeGenerationResult; /** * Create generation metadata * @param request Original request * @param code Generated code * @param totalTime Total generation time * @returns Generation metadata */ protected createMetadata(request: CodeGenerationRequest, code: string, totalTime: number): GenerationMetadata; /** * Extract source entity information * @param request Generation request * @returns Source entity info */ protected extractSourceInfo(request: CodeGenerationRequest): SourceEntityInfo; /** * Get entity type string * @param entity Source entity * @returns Entity type string */ protected getEntityType(entity: any): string; /** * Calculate code statistics * @param code Generated code * @returns Code statistics */ protected calculateCodeStatistics(code: string): CodeStatistics; /** * Calculate complexity score based on code patterns * @param code Generated code * @returns Complexity score (1-10) */ protected calculateComplexityScore(code: string): number; /** * Extract dependencies from generated code * @param code Generated code * @returns Array of dependency strings */ protected extractDependencies(code: string): string[]; /** * Generate file name based on request * @param request Generation request * @returns Generated file name */ protected generateFileName(request: CodeGenerationRequest): string; /** * Get template by name from context * @param templateName Name of template to retrieve * @returns Template config or undefined */ protected getTemplate(templateName: string): TemplateConfig | undefined; /** * Resolve IL2CPP type to C# type * @param il2cppType IL2CPP type string * @returns C# type string */ protected resolveType(il2cppType: string): string; /** * Format generated code according to style options * @param code Raw generated code * @param style Code style options * @returns Formatted code */ protected formatCode(code: string, style: CodeStyleOptions): string; }