/// /// import { ArraySubobject, DynamicObject } from "../../runtime/objects"; import { AtomicType, PointerType, BoundedArrayType, Int, ArrayElemType, CompleteClassType, Type, PotentiallyCompleteArrayType } from "../../compilation/types"; import { ExpressionContext, ConstructDescription } from "../../compilation/contexts"; import { SuccessfullyCompiled, RuntimeConstruct } from "../CPPConstruct"; import { NewArrayEntity } from "../../compilation/entities"; import { Expression, CompiledExpression, t_TypedExpression } from "./Expression"; import { RuntimeExpression } from "./RuntimeExpression"; import { NewExpressionOutlet, NewArrayExpressionOutlet } from "../../../view/constructs/ExpressionOutlets"; import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet"; import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator"; import { CompiledInitializer, Initializer, RuntimeInitializer } from "../initializers/Initializer"; import { CompiledDirectInitializer, DirectInitializer, RuntimeDirectInitializer } from "../initializers/DirectInitializer"; import { CompiledDefaultInitializer, DefaultInitializer, RuntimeDefaultInitializer } from "../initializers/DefaultInitializer"; import { CompiledDeclarator, Declarator } from "../declarations/Declarator"; import { CompiledTypeSpecifier, TypeSpecifier } from "../declarations/TypeSpecifier"; import { NewExpressionASTNode } from "../../../ast/ast_expressions"; export declare function createNewExpressionFromAST(ast: NewExpressionASTNode, context: ExpressionContext): NewExpression | NewArrayExpression; export declare type NewObjectType = AtomicType | CompleteClassType; export declare class NewExpression extends Expression { readonly construct_type = "new_expression"; readonly type?: PointerType; readonly createdType?: NewObjectType; readonly valueCategory = "prvalue"; readonly typeSpecifier: TypeSpecifier; readonly declarator: Declarator; readonly initializer?: Initializer; constructor(context: ExpressionContext, ast: NewExpressionASTNode, typeSpecifier: TypeSpecifier, declarator: Declarator, createdType: Exclude | undefined); createDefaultOutlet(this: CompiledNewExpression, element: JQuery, parent?: ConstructOutlet): NewExpressionOutlet; describeEvalResult(depth: number): ConstructDescription; } export interface TypedNewExpression = PointerType> extends NewExpression, t_TypedExpression { readonly type: T; readonly createdType: T["ptrTo"]; } export interface CompiledNewExpression = PointerType> extends TypedNewExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly typeSpecifier: CompiledTypeSpecifier; readonly declarator: CompiledDeclarator; readonly initializer?: CompiledInitializer; } export declare class RuntimeNewExpression = PointerType> extends RuntimeExpression> { private index; readonly initializer?: RuntimeInitializer; readonly allocatedObject?: DynamicObject; constructor(model: CompiledNewExpression, parent: RuntimeConstruct); protected upNextImpl(): void; protected stepForwardImpl(): void; } export declare class NewArrayExpression extends Expression { readonly construct_type = "new_array_expression"; readonly type?: PointerType; readonly createdType?: PotentiallyCompleteArrayType; readonly valueCategory = "prvalue"; readonly typeSpecifier: TypeSpecifier; readonly declarator: Declarator; readonly allocatedArray: NewArrayEntity; readonly individualElementInitializers?: readonly DirectInitializer[]; readonly fallbackElementInitializer?: DefaultInitializer; readonly dynamicLengthExpression?: Expression; constructor(context: ExpressionContext, ast: NewExpressionASTNode, typeSpecifier: TypeSpecifier, declarator: Declarator, createdType: PotentiallyCompleteArrayType); createDefaultOutlet(this: CompiledNewArrayExpression, element: JQuery, parent?: ConstructOutlet): NewArrayExpressionOutlet; describeEvalResult(depth: number): ConstructDescription; } export interface TypedNewArrayExpression = PointerType> extends NewArrayExpression, t_TypedExpression { readonly type: T; readonly createdType: PotentiallyCompleteArrayType; readonly allocatedArray: NewArrayEntity>; } export interface CompiledNewArrayExpression = PointerType> extends TypedNewArrayExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly typeSpecifier: CompiledTypeSpecifier; readonly declarator: CompiledDeclarator; readonly individualElementInitializers: readonly CompiledDirectInitializer[]; readonly fallbackElementInitializer: CompiledDefaultInitializer; readonly dynamicLengthExpression?: CompiledExpression; } export declare class RuntimeNewArrayExpression = PointerType> extends RuntimeExpression> { private elemInitIndex; readonly dynamicLengthExpression?: RuntimeExpression; readonly elementInitializers?: readonly (RuntimeDefaultInitializer | RuntimeDirectInitializer)[]; readonly allocatedObject?: DynamicObject>; readonly nextElemToInit?: ArraySubobject; constructor(model: CompiledNewArrayExpression, parent: RuntimeConstruct); protected upNextImpl(): void; protected stepForwardImpl(): void; }