///
///
import { DynamicObject } from "../../runtime/objects";
import { BoundedArrayType, FunctionType, VoidType, PointerToCompleteType as PointerToCompleteObjectType } from "../../compilation/types";
import { ExpressionContext, ConstructDescription } from "../../compilation/contexts";
import { SuccessfullyCompiled, RuntimeConstruct } from "../CPPConstruct";
import { Expression, CompiledExpression, t_TypedExpression } from "./Expression";
import { RuntimeExpression } from "./RuntimeExpression";
import { DeleteExpressionOutlet, DeleteArrayExpressionOutlet } from "../../../view/constructs/ExpressionOutlets";
import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet";
import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator";
import { CompiledFunctionCall, FunctionCall, RuntimeFunctionCall } from "../FunctionCall";
import { DeleteExpressionASTNode, DeleteArrayExpressionASTNode } from "../../../ast/ast_expressions";
import { NewObjectType } from "./NewExpression";
export declare class DeleteExpression extends Expression {
readonly construct_type = "delete_expression";
readonly type: VoidType;
readonly valueCategory = "prvalue";
readonly operand: Expression;
readonly dtor?: FunctionCall;
readonly operator = "delete";
constructor(context: ExpressionContext, ast: DeleteExpressionASTNode, operand: Expression);
static createFromAST(ast: DeleteExpressionASTNode, context: ExpressionContext): DeleteExpression;
createDefaultOutlet(this: CompiledDeleteExpression, element: JQuery, parent?: ConstructOutlet): DeleteExpressionOutlet;
describeEvalResult(depth: number): ConstructDescription;
}
export interface TypedDeleteExpression extends DeleteExpression, t_TypedExpression {
}
export interface CompiledDeleteExpression extends TypedDeleteExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
readonly operand: CompiledExpression;
readonly dtor?: CompiledFunctionCall>;
}
export declare class RuntimeDeleteExpression extends RuntimeExpression {
readonly operand: RuntimeExpression;
readonly dtor?: RuntimeFunctionCall>;
readonly destroyedObject?: DynamicObject;
constructor(model: CompiledDeleteExpression, parent: RuntimeConstruct);
protected upNextImpl(): void;
protected stepForwardImpl(): void;
}
export declare class DeleteArrayExpression extends Expression {
readonly construct_type = "delete_array_expression";
readonly type: VoidType;
readonly valueCategory = "prvalue";
readonly operand: Expression;
readonly elementDtor?: FunctionCall;
readonly operator = "delete";
constructor(context: ExpressionContext, ast: DeleteArrayExpressionASTNode, operand: Expression);
static createFromAST(ast: DeleteArrayExpressionASTNode, context: ExpressionContext): DeleteArrayExpression;
createDefaultOutlet(this: CompiledDeleteArrayExpression, element: JQuery, parent?: ConstructOutlet): DeleteArrayExpressionOutlet;
describeEvalResult(depth: number): ConstructDescription;
}
export interface TypedDeleteArrayExpression extends DeleteArrayExpression, t_TypedExpression {
}
export interface CompiledDeleteArrayExpression extends TypedDeleteArrayExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
readonly operand: CompiledExpression;
readonly elementDtor?: CompiledFunctionCall>;
}
export declare class RuntimeDeleteArrayExpression extends RuntimeExpression {
private index;
readonly operand: RuntimeExpression;
readonly dtors: readonly RuntimeFunctionCall>[];
readonly targetArray?: DynamicObject;
constructor(model: CompiledDeleteArrayExpression, parent: RuntimeConstruct);
protected upNextImpl(): void;
protected stepForwardImpl(): void;
}