import { CompleteObjectType, PointerType } from "../../compilation/types"; import { ExpressionContext, ConstructDescription } from "../../compilation/contexts"; import { SuccessfullyCompiled, RuntimeConstruct } from "../CPPConstruct"; import { Expression, CompiledExpression, TypedExpression, t_TypedExpression } from "./Expression"; import { RuntimeExpression } from "./RuntimeExpression"; import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator"; import { DereferenceExpressionASTNode } from "../../../ast/ast_expressions"; import { SimpleRuntimeExpression } from "./SimpleRuntimeExpression"; import { UnaryOperatorExpression } from "./UnaryOperatorExpression"; export declare class DereferenceExpression extends UnaryOperatorExpression { readonly construct_type = "dereference_expression"; readonly type?: CompleteObjectType; readonly valueCategory = "lvalue"; readonly operand: Expression; readonly operator = "*"; constructor(context: ExpressionContext, ast: DereferenceExpressionASTNode, operand: Expression); static createFromAST(ast: DereferenceExpressionASTNode, context: ExpressionContext): DereferenceExpression; describeEvalResult(depth: number): ConstructDescription; } export interface TypedDereferenceExpression extends DereferenceExpression, t_TypedExpression { readonly type: T; readonly operand: TypedExpression, "prvalue">; } export interface CompiledDereferenceExpression extends TypedDereferenceExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly operand: CompiledExpression, "prvalue">; } export declare class RuntimeDereferenceExpression extends SimpleRuntimeExpression> { operand: RuntimeExpression, "prvalue">; constructor(model: CompiledDereferenceExpression, parent: RuntimeConstruct); protected operate(): void; }