///
///
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 {};