il2cpp-dump-analyzer-mcp
Version:
Agentic RAG system for analyzing IL2CPP dump.cs files from Unity games
125 lines (124 loc) • 4.8 kB
TypeScript
/**
* 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;
}