/// /// import { AtomicDirectInitializerOutlet, ClassDirectInitializerOutlet, ReferenceDirectInitializerOutlet } from "../../../view/constructs/InitializerOutlet"; import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet"; import { TranslationUnitContext } from "../../compilation/contexts"; import { FunctionEntity, ObjectEntity, ObjectEntityType, UnboundReferenceEntity } from "../../compilation/entities"; import { Simulation } from "../../runtime/Simulation"; import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator"; import { AtomicType, BoundedArrayType, Char, CompleteClassType, CompleteObjectType, FunctionType, ReferenceType, ReferredType, VoidType } from "../../compilation/types"; import { RuntimeConstruct, SuccessfullyCompiled } from "../CPPConstruct"; import { CompiledExpression, Expression } from "../expressions/Expression"; import { RuntimeExpression } from "../expressions/RuntimeExpression"; import { CompiledStringLiteralExpression, RuntimeStringLiteralExpression, StringLiteralExpression } from "../expressions/StringLiteralExpression"; import { CompiledFunctionCall, FunctionCall, RuntimeFunctionCall } from "../FunctionCall"; import { Initializer, RuntimeInitializer } from "./Initializer"; export declare type DirectInitializerKind = "direct" | "copy"; export declare abstract class DirectInitializer extends Initializer { static create(context: TranslationUnitContext, target: UnboundReferenceEntity, args: readonly Expression[], kind: DirectInitializerKind): ReferenceDirectInitializer; static create(context: TranslationUnitContext, target: ObjectEntity, args: readonly Expression[], kind: DirectInitializerKind): AtomicDirectInitializer; static create(context: TranslationUnitContext, target: ObjectEntity, args: readonly Expression[], kind: DirectInitializerKind): ArrayDirectInitializer; static create(context: TranslationUnitContext, target: ObjectEntity, args: readonly Expression[], kind: DirectInitializerKind): ClassDirectInitializer; static create(context: TranslationUnitContext, target: ObjectEntity, args: readonly Expression[], kind: DirectInitializerKind): AtomicDirectInitializer | ArrayDirectInitializer | ClassDirectInitializer; static create(context: TranslationUnitContext, target: ObjectEntity | UnboundReferenceEntity, args: readonly Expression[], kind: DirectInitializerKind): ReferenceDirectInitializer | AtomicDirectInitializer | ArrayDirectInitializer | ClassDirectInitializer; abstract readonly target: ObjectEntity | UnboundReferenceEntity; abstract readonly args: readonly Expression[]; readonly kind: DirectInitializerKind; constructor(context: TranslationUnitContext, kind: DirectInitializerKind); abstract createRuntimeInitializer(this: CompiledDirectInitializer, parent: RuntimeConstruct): RuntimeDirectInitializer; } export interface CompiledDirectInitializer extends DirectInitializer, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly target: ObjectEntity> | UnboundReferenceEntity>; readonly args: readonly CompiledExpression[]; } export declare abstract class RuntimeDirectInitializer = CompiledDirectInitializer> extends RuntimeInitializer { protected constructor(model: C, parent: RuntimeConstruct); } export declare class ReferenceDirectInitializer extends DirectInitializer { readonly construct_type = "ReferenceDirectInitializer"; readonly target: UnboundReferenceEntity; readonly args: readonly Expression[]; readonly arg?: Expression; constructor(context: TranslationUnitContext, target: UnboundReferenceEntity, args: readonly Expression[], kind: DirectInitializerKind); createRuntimeInitializer>(this: CompiledReferenceDirectInitializer, parent: RuntimeConstruct): RuntimeReferenceDirectInitializer; createRuntimeInitializer>(this: CompiledDirectInitializer, parent: RuntimeConstruct): never; createDefaultOutlet(this: CompiledReferenceDirectInitializer, element: JQuery, parent?: ConstructOutlet): ReferenceDirectInitializerOutlet; explain(sim: Simulation, rtConstruct: RuntimeConstruct): { message: string; }; } export interface CompiledReferenceDirectInitializer extends ReferenceDirectInitializer, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly target: UnboundReferenceEntity>; readonly args: readonly CompiledExpression[]; readonly arg: CompiledExpression, "lvalue">; } export declare class RuntimeReferenceDirectInitializer = ReferenceType> extends RuntimeDirectInitializer> { readonly args: readonly RuntimeExpression, "lvalue">[]; readonly arg: RuntimeExpression, "lvalue">; private alreadyPushed; constructor(model: CompiledReferenceDirectInitializer, parent: RuntimeConstruct); protected upNextImpl(): void; stepForwardImpl(): void; } export declare class AtomicDirectInitializer extends DirectInitializer { readonly construct_type = "AtomicDirectInitializer"; readonly target: ObjectEntity; readonly args: readonly Expression[]; readonly arg: Expression; constructor(context: TranslationUnitContext, target: ObjectEntity, args: readonly Expression[], kind: DirectInitializerKind); createRuntimeInitializer(this: CompiledAtomicDirectInitializer, parent: RuntimeConstruct): RuntimeAtomicDirectInitializer; createRuntimeInitializer(this: CompiledDirectInitializer, parent: RuntimeConstruct): never; createDefaultOutlet(this: CompiledAtomicDirectInitializer, element: JQuery, parent?: ConstructOutlet): AtomicDirectInitializerOutlet; explain(sim: Simulation, rtConstruct: RuntimeConstruct): { message: string; }; } export interface CompiledAtomicDirectInitializer extends AtomicDirectInitializer, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly target: ObjectEntity>; readonly args: readonly CompiledExpression[]; readonly arg: CompiledExpression; } export declare class RuntimeAtomicDirectInitializer extends RuntimeDirectInitializer> { readonly args: readonly RuntimeExpression[]; readonly arg: RuntimeExpression; private alreadyPushed; constructor(model: CompiledAtomicDirectInitializer, parent: RuntimeConstruct); protected upNextImpl(): void; stepForwardImpl(): void; } /** * Note: Only allowed use is to initialize a char array from a string literal, but this can readily be * created in the course of compiling a program if the code attempts to directly initialize an array. That's * desirable, because this class will give the appropriate error messages if it's anything other than a * char array initialized from a string literal. */ export declare class ArrayDirectInitializer extends DirectInitializer { readonly construct_type = "ArrayDirectInitializer"; readonly target: ObjectEntity; readonly args: readonly Expression[]; readonly arg?: StringLiteralExpression; constructor(context: TranslationUnitContext, target: ObjectEntity, args: readonly Expression[], kind: "direct" | "copy"); createRuntimeInitializer(this: CompiledArrayDirectInitializer, parent: RuntimeConstruct): RuntimeArrayDirectInitializer; createRuntimeInitializer(this: CompiledDirectInitializer, parent: RuntimeConstruct): never; createDefaultOutlet(this: CompiledAtomicDirectInitializer, element: JQuery, parent?: ConstructOutlet): AtomicDirectInitializerOutlet; explain(sim: Simulation, rtConstruct: RuntimeConstruct): { message: string; }; } export interface CompiledArrayDirectInitializer extends ArrayDirectInitializer, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly target: ObjectEntity>; readonly args: readonly CompiledStringLiteralExpression[]; readonly arg: CompiledStringLiteralExpression; } export declare class RuntimeArrayDirectInitializer extends RuntimeDirectInitializer, CompiledArrayDirectInitializer> { readonly arg: RuntimeStringLiteralExpression; readonly args: readonly RuntimeStringLiteralExpression[]; private alreadyPushed; constructor(model: CompiledArrayDirectInitializer, parent: RuntimeConstruct); protected upNextImpl(): void; stepForwardImpl(): void; } export declare class ClassDirectInitializer extends DirectInitializer { readonly construct_type = "ClassDirectInitializer"; readonly target: ObjectEntity; readonly args: readonly Expression[]; readonly ctor?: FunctionEntity>; readonly ctorCall?: FunctionCall; constructor(context: TranslationUnitContext, target: ObjectEntity, args: readonly Expression[], kind: DirectInitializerKind); createRuntimeInitializer(this: CompiledClassDirectInitializer, parent: RuntimeConstruct): RuntimeClassDirectInitializer; createRuntimeInitializer(this: CompiledDirectInitializer, parent: RuntimeConstruct): never; createDefaultOutlet(this: CompiledClassDirectInitializer, element: JQuery, parent?: ConstructOutlet): ClassDirectInitializerOutlet; explain(sim: Simulation, rtConstruct: RuntimeConstruct): { message: string; }; } export interface CompiledClassDirectInitializer extends ClassDirectInitializer, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly target: ObjectEntity>; readonly args: readonly CompiledExpression[]; readonly ctor: FunctionEntity>; readonly ctorCall: CompiledFunctionCall>; } export declare class RuntimeClassDirectInitializer extends RuntimeDirectInitializer> { readonly ctorCall?: RuntimeFunctionCall>; private index; constructor(model: CompiledClassDirectInitializer, parent: RuntimeConstruct); protected upNextImpl(): void; stepForwardImpl(): void; }