/// /// import { ExpressionASTNode } from "../../../ast/ast_expressions"; import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet"; import { ConstructDescription, ExpressionContext } from "../../compilation/contexts"; import { FunctionEntity } from "../../compilation/entities"; import { CompleteClassType, CompleteReturnType, FunctionType, PeelReference } from "../../compilation/types"; import { RuntimeConstruct, SuccessfullyCompiled } from "../CPPConstruct"; import { CompiledFunctionCall, FunctionCall, RuntimeFunctionCall, TypedFunctionCall } from "../FunctionCall"; import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator"; import { CompiledExpression, Expression, TypedExpression, ValueCategory } from "./Expression"; import { RuntimeExpression } from "./RuntimeExpression"; import { InvalidExpression } from "./InvalidExpression"; import { t_OverloadableOperators } from "./selectOperatorOverload"; import { NonMemberOperatorOverloadExpressionOutlet, MemberOperatorOverloadExpressionOutlet } from "../../../view/constructs/ExpressionOutlets"; export declare class NonMemberOperatorOverloadExpression extends Expression { readonly construct_type = "non_member_operator_overload_expression"; readonly type?: PeelReference; readonly valueCategory?: ValueCategory; readonly operator: t_OverloadableOperators; readonly originalArgs: readonly Expression[]; readonly call?: FunctionCall; constructor(context: ExpressionContext, ast: ExpressionASTNode | undefined, operator: t_OverloadableOperators, args: readonly Expression[], selectedFunctionEntity: FunctionEntity); createDefaultOutlet(this: CompiledNonMemberOperatorOverloadExpression, element: JQuery, parent?: ConstructOutlet): NonMemberOperatorOverloadExpressionOutlet; describeEvalResult(depth: number): ConstructDescription; } export interface TypedNonMemberOperatorOverloadExpression = PeelReference, V extends ValueCategory = ValueCategory> extends NonMemberOperatorOverloadExpression { readonly type: T; readonly valueCategory: V; readonly call: TypedFunctionCall>; } export interface CompiledNonMemberOperatorOverloadExpression = PeelReference, V extends ValueCategory = ValueCategory> extends TypedNonMemberOperatorOverloadExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly originalArgs: readonly CompiledExpression[]; readonly call: CompiledFunctionCall>; } export declare class RuntimeNonMemberOperatorOverloadExpression = PeelReference, V extends ValueCategory = ValueCategory> extends RuntimeExpression> { readonly call: RuntimeFunctionCall>; constructor(model: CompiledNonMemberOperatorOverloadExpression, parent: RuntimeConstruct); protected upNextImpl(): void; protected stepForwardImpl(): void; } export declare class MemberOperatorOverloadExpression extends Expression { readonly construct_type = "member_operator_overload_expression"; readonly type?: PeelReference; readonly valueCategory?: ValueCategory; readonly operator: t_OverloadableOperators; readonly originalArgs: readonly Expression[]; readonly receiverExpression: TypedExpression; readonly call?: FunctionCall; constructor(context: ExpressionContext, ast: ExpressionASTNode | undefined, operator: t_OverloadableOperators, receiverExpression: TypedExpression, args: readonly Expression[], selectedFunctionEntity: FunctionEntity); createDefaultOutlet(this: CompiledMemberOperatorOverloadExpression, element: JQuery, parent?: ConstructOutlet): MemberOperatorOverloadExpressionOutlet; describeEvalResult(depth: number): ConstructDescription; } export interface TypedMemberOperatorOverloadExpression = PeelReference, V extends ValueCategory = ValueCategory> extends MemberOperatorOverloadExpression { readonly type: T; readonly valueCategory: V; readonly call: TypedFunctionCall>; } export interface CompiledMemberOperatorOverloadExpression = PeelReference, V extends ValueCategory = ValueCategory> extends TypedMemberOperatorOverloadExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly originalArgs: readonly CompiledExpression[]; readonly receiverExpression: CompiledExpression; readonly call: CompiledFunctionCall>; } export declare class RuntimeMemberOperatorOverloadExpression = PeelReference, V extends ValueCategory = ValueCategory> extends RuntimeExpression> { readonly receiverExpression: RuntimeExpression; readonly call?: RuntimeFunctionCall>; constructor(model: CompiledMemberOperatorOverloadExpression, parent: RuntimeConstruct); protected upNextImpl(): void; protected stepForwardImpl(): void; } export declare type OperatorOverloadExpression = NonMemberOperatorOverloadExpression | MemberOperatorOverloadExpression | InvalidOperatorOverloadExpression; export declare class InvalidOperatorOverloadExpression extends InvalidExpression { readonly construct_type = "invalid_operator_overload_expression"; readonly operator: t_OverloadableOperators; readonly originalArgs: readonly Expression[]; constructor(context: ExpressionContext, ast: ExpressionASTNode, op: t_OverloadableOperators, originalArgs: readonly Expression[]); createDefaultOutlet(this: never, element: JQuery, parent?: ConstructOutlet): never; describeEvalResult(depth: number): ConstructDescription; }