import { IntegralType, PointerType, PointerToCompleteType as PointerToCompleteObjectType } from "../../compilation/types"; import { ExpressionContext, ConstructDescription } from "../../compilation/contexts"; import { SuccessfullyCompiled, RuntimeConstruct } from "../CPPConstruct"; import { CompiledExpression, TypedExpression, t_TypedExpression } from "./Expression"; import { RuntimeExpression } from "./RuntimeExpression"; import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator"; import { ArithmeticBinaryOperatorExpressionASTNode } from "../../../ast/ast_expressions"; import { SimpleRuntimeExpression } from "./SimpleRuntimeExpression"; import { BinaryOperatorExpression } from "./BinaryOperatorExpression"; export declare class PointerOffsetExpression extends BinaryOperatorExpression { readonly construct_type = "pointer_offset_expression"; readonly type?: PointerType; readonly left: TypedExpression | TypedExpression; readonly right: TypedExpression | TypedExpression; readonly pointer?: TypedExpression; readonly offset?: TypedExpression; readonly pointerOnLeft?: boolean; readonly operator: "+" | "-"; constructor(context: ExpressionContext, ast: ArithmeticBinaryOperatorExpressionASTNode, left: TypedExpression | TypedExpression, right: TypedExpression | TypedExpression, operator: "+" | "-"); describeEvalResult(depth: number): ConstructDescription; } export interface TypedPointerOffsetExpression extends PointerOffsetExpression, t_TypedExpression { readonly type: T; readonly left: TypedExpression | TypedExpression; readonly right: TypedExpression | TypedExpression; readonly pointer: TypedExpression; readonly offset: TypedExpression; } export interface CompiledPointerOffsetExpression extends TypedPointerOffsetExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly left: CompiledExpression | CompiledExpression; readonly right: CompiledExpression | CompiledExpression; readonly pointer: CompiledExpression; readonly offset: CompiledExpression; readonly pointerOnLeft?: boolean; } export declare class RuntimePointerOffset extends SimpleRuntimeExpression> { readonly left: RuntimeExpression | RuntimeExpression; readonly right: RuntimeExpression | RuntimeExpression; readonly pointer: RuntimeExpression; readonly offset: RuntimeExpression; constructor(model: CompiledPointerOffsetExpression, parent: RuntimeConstruct); operate(): void; }