All files / transpiler/output/codegen/types ICodeGenApi.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58                                                                                                                   
/**
 * Interface for CodeGenerator methods accessible via CodeGenState.generator.
 *
 * Defines the subset of CodeGenerator methods needed by assignment handlers.
 * Handlers cast CodeGenState.generator to this interface.
 */
import type TTypeInfo from "./TTypeInfo";
 
interface ICodeGenApi {
  /** Generate C expression from AST context */
  generateExpression(ctx: unknown): string;
 
  /** Generate assignment target (lvalue) from AST context */
  generateAssignmentTarget(ctx: unknown): string;
 
  /** Try to evaluate expression as compile-time constant */
  tryEvaluateConstant(ctx: unknown): number | undefined;
 
  /** Generate atomic read-modify-write operation */
  generateAtomicRMW(
    target: string,
    op: string,
    value: string,
    typeInfo: TTypeInfo,
  ): string;
 
  /** Generate float bit write operation (returns null if not applicable) */
  generateFloatBitWrite(
    name: string,
    typeInfo: TTypeInfo,
    bitIndex: string,
    width: string | null,
    value: string,
  ): string | null;
 
  /** Validate cross-scope member visibility */
  validateCrossScopeVisibility(scopeName: string, memberName: string): void;
 
  /** Analyze member chain for bit access patterns */
  analyzeMemberChainForBitAccess(ctx: unknown): {
    isBitAccess: boolean;
    baseTarget?: string;
    bitIndex?: string;
    baseType?: string;
  };
 
  /** Get type info for struct member */
  getMemberTypeInfo(structType: string, fieldName: string): TTypeInfo | null;
 
  /** Check if name is a known scope */
  isKnownScope(name: string): boolean;
 
  /** Check if name is a known struct */
  isKnownStruct(name: string): boolean;
}
 
export default ICodeGenApi;