/// /// import { CtorInitializerASTNode, MemberInitializerASTNode } from "../../../ast/ast_declarations"; import { ArrayMemberInitializerOutlet } from "../../../view/constructs/InitializerOutlet"; import { CtorInitializerOutlet } from "../../../view/constructs/CtorInitializerOutlet"; import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet"; import { MemberBlockContext, SemanticContext, TranslationUnitContext } from "../../compilation/contexts"; import { MemberObjectEntity, ReceiverEntity } from "../../compilation/entities"; import { AnalyticConstruct } from "../../../analysis/predicates"; import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator"; import { BoundedArrayType, CompleteClassType } from "../../compilation/types"; import { RuntimeConstruct, SuccessfullyCompiled } from "../CPPConstruct"; import { BasicCPPConstruct } from "../BasicCPPConstruct"; import { Expression } from "../expressions/Expression"; import { ClassDefaultInitializer, CompiledClassDefaultInitializer, CompiledDefaultInitializer, DefaultInitializer, RuntimeClassDefaultInitializer, RuntimeDefaultInitializer } from "./DefaultInitializer"; import { ClassDirectInitializer, CompiledClassDirectInitializer, CompiledDirectInitializer, DirectInitializer, RuntimeClassDirectInitializer, RuntimeDirectInitializer } from "./DirectInitializer"; import { Initializer, RuntimeInitializer } from "./Initializer"; import { ClassValueInitializer, ValueInitializer } from "./ValueInitializer"; declare type DelegatedConstructorCtorInitializerComponent = { kind: "delegatedConstructor"; args: readonly Expression[]; memInitAST: MemberInitializerASTNode; }; declare type BaseCtorInitializerComponent = { kind: "base"; args: readonly Expression[]; memInitAST: MemberInitializerASTNode; }; declare type MemberCtorInitializerComponent = { kind: "member"; name: string; args: readonly Expression[]; memInitAST: MemberInitializerASTNode; }; declare type CtorInitializerComponent = DelegatedConstructorCtorInitializerComponent | BaseCtorInitializerComponent | MemberCtorInitializerComponent; export declare type MemberInitializer = DefaultInitializer | ValueInitializer | DirectInitializer | ArrayMemberInitializer; declare type BaseOrDelegateInitializer = ClassDefaultInitializer | ClassValueInitializer | ClassDirectInitializer; export declare class CtorInitializer extends BasicCPPConstruct { readonly construct_type = "ctor_initializer"; readonly target: ReceiverEntity; readonly delegatedConstructorInitializer?: BaseOrDelegateInitializer; readonly baseInitializer?: BaseOrDelegateInitializer; readonly memberInitializers: readonly (MemberInitializer | NonExistentMemberInitializer)[]; readonly memberInitializersByName: { [index: string]: MemberInitializer | NonExistentMemberInitializer | undefined; }; static createFromAST(ast: CtorInitializerASTNode, context: MemberBlockContext): CtorInitializer; constructor(context: MemberBlockContext, ast: CtorInitializerASTNode | undefined, components: readonly CtorInitializerComponent[]); createRuntimeCtorInitializer(this: CompiledCtorInitializer, parent: RuntimeConstruct): RuntimeCtorInitializer; createDefaultOutlet(this: CompiledCtorInitializer, element: JQuery, parent?: ConstructOutlet): CtorInitializerOutlet; isSemanticallyEquivalent_impl(other: AnalyticConstruct, ec: SemanticContext): boolean; } export interface CompiledCtorInitializer extends CtorInitializer, SuccessfullyCompiled { readonly delegatedConstructorInitializer?: CompiledClassDirectInitializer; readonly baseInitializer?: CompiledClassDefaultInitializer | CompiledClassDirectInitializer; readonly memberInitializers: readonly (CompiledDefaultInitializer | CompiledDirectInitializer)[]; readonly memberInitializersByName: { [index: string]: CompiledClassDefaultInitializer | CompiledDirectInitializer | undefined; }; } export declare class RuntimeCtorInitializer extends RuntimeConstruct { readonly delegatedConstructorInitializer?: RuntimeClassDirectInitializer; readonly baseInitializer?: RuntimeClassDefaultInitializer | RuntimeClassDirectInitializer; readonly memberInitializers: readonly (RuntimeDefaultInitializer | RuntimeDirectInitializer)[]; private index; private memberIndex; constructor(model: CompiledCtorInitializer, parent: RuntimeConstruct); protected upNextImpl(): void; stepForwardImpl(): void; } /** * Note: only use is in implicitly defined copy constructor */ export declare class ArrayMemberInitializer extends Initializer { readonly construct_type = "array_member_initializer"; readonly kind = "direct"; readonly target: MemberObjectEntity; readonly otherMember: MemberObjectEntity; readonly elementInitializers: DirectInitializer[]; constructor(context: TranslationUnitContext, target: MemberObjectEntity, otherMember: MemberObjectEntity); createRuntimeInitializer(this: CompiledArrayMemberInitializer, parent: RuntimeConstruct): RuntimeArrayMemberInitializer; createDefaultOutlet(this: CompiledArrayMemberInitializer, element: JQuery, parent?: ConstructOutlet): ArrayMemberInitializerOutlet; } export interface CompiledArrayMemberInitializer extends ArrayMemberInitializer, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly elementInitializers: CompiledDirectInitializer[]; } export declare class RuntimeArrayMemberInitializer extends RuntimeInitializer { readonly elementInitializers: RuntimeDirectInitializer[]; private index; constructor(model: CompiledArrayMemberInitializer, parent: RuntimeConstruct); protected upNextImpl(): void; stepForwardImpl(): void; } export declare class NonExistentMemberInitializer extends BasicCPPConstruct { readonly construct_type = "nonexistent_member_initializer"; readonly receiverType: CompleteClassType; readonly memberName: string; readonly args: readonly Expression[]; constructor(context: TranslationUnitContext, ast: MemberInitializerASTNode, receiverType: CompleteClassType, memberName: string, args: readonly Expression[]); isSemanticallyEquivalent_impl(other: AnalyticConstruct, equivalenceContext: SemanticContext): boolean; } export {};