/// /// import { AtomicType } from "../../compilation/types"; import { ExpressionContext } from "../../compilation/contexts"; import { SuccessfullyCompiled } from "../CPPConstruct"; import { Expression, CompiledExpression, TypedExpression, t_TypedExpression } from "./Expression"; import { RuntimeExpression } from "./RuntimeExpression"; import { BinaryOperatorExpressionOutlet } from "../../../view/constructs/ExpressionOutlets"; import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet"; import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator"; import { BinaryOperatorExpressionASTNode, t_BinaryOperators } from "../../../ast/ast_expressions"; import { LogicalBinaryOperatorExpression } from "./LogicalBinaryOperatorExpression"; import { PointerComparisonExpression } from "./PointerComparisonExpression"; import { RelationalBinaryOperatorExpression } from "./RelationalBinaryOperatorExpression"; import { InputOperatorExpression } from "./InputOperatorExpression"; import { OutputOperatorExpression } from "./OutputOperatorExpression"; import { PointerOffsetExpression } from "./PointerOffsetExpression"; import { PointerDifferenceExpression } from "./PointerDifferenceExpression"; import { ArithmeticBinaryOperatorExpression } from "./ArithmeticBinaryOperatorExpression"; export declare abstract class BinaryOperatorExpression extends Expression { abstract readonly construct_type: "arithmetic_binary_operator_expression" | "relational_binary_operator_expression" | "logical_binary_operator_expression" | "pointer_offset_expression" | "pointer_difference_expression" | "pointer_comparison_expression"; abstract readonly type?: AtomicType; readonly valueCategory = "prvalue"; abstract readonly left: Expression; abstract readonly right: Expression; readonly operator: t_BinaryOperators; protected constructor(context: ExpressionContext, ast: ASTType | undefined, operator: t_BinaryOperators); createDefaultOutlet(this: CompiledBinaryOperatorExpression, element: JQuery, parent?: ConstructOutlet): BinaryOperatorExpressionOutlet; } export declare type AnalyticBinaryOperatorExpression = ArithmeticBinaryOperatorExpression | PointerDifferenceExpression | PointerOffsetExpression | OutputOperatorExpression | InputOperatorExpression | RelationalBinaryOperatorExpression | PointerComparisonExpression | LogicalBinaryOperatorExpression; export interface TypedBinaryOperatorExpression extends BinaryOperatorExpression, t_TypedExpression { readonly type: T; readonly left: TypedExpression; readonly right: TypedExpression; } export interface CompiledBinaryOperatorExpression extends TypedBinaryOperatorExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly left: CompiledExpression; readonly right: CompiledExpression; } export interface RuntimeBinaryOperator extends RuntimeExpression> { readonly left: RuntimeExpression; readonly right: RuntimeExpression; }