import { Bool, ArithmeticType, AtomicType } from "../../compilation/types"; import { ExpressionContext, ConstructDescription, SemanticContext } from "../../compilation/contexts"; import { SuccessfullyCompiled, RuntimeConstruct } from "../CPPConstruct"; import { Expression, CompiledExpression, t_TypedExpression } from "./Expression"; import { RuntimeExpression } from "./RuntimeExpression"; import { AnalyticConstruct } from "../../../analysis/predicates"; import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator"; import { RelationalBinaryOperatorExpressionASTNode, t_RelationalBinaryOperators } from "../../../ast/ast_expressions"; import { SimpleRuntimeExpression } from "./SimpleRuntimeExpression"; import { BinaryOperatorExpression } from "./BinaryOperatorExpression"; import { OperatorOverloadExpression } from "./OperatorOverloadExpression"; import { PointerComparisonExpression } from "./PointerComparisonExpression"; import { Value } from "../../runtime/Value"; export declare const RELATIONAL_BINARY_OPERATIONS: { [k in t_RelationalBinaryOperators]: (left: Value, right: Value) => Value; }; export declare class RelationalBinaryOperatorExpression extends BinaryOperatorExpression { readonly construct_type = "relational_binary_operator_expression"; readonly type: Bool; readonly left: Expression; readonly right: Expression; readonly operator: t_RelationalBinaryOperators; protected constructor(context: ExpressionContext, ast: RelationalBinaryOperatorExpressionASTNode, left: Expression, right: Expression, operator: t_RelationalBinaryOperators); static createFromAST(ast: RelationalBinaryOperatorExpressionASTNode, context: ExpressionContext): RelationalBinaryOperatorExpression | PointerComparisonExpression | OperatorOverloadExpression; describeEvalResult(depth: number): ConstructDescription; isSemanticallyEquivalent_impl(other: AnalyticConstruct, ec: SemanticContext): boolean; } export interface TypedRelationalBinaryOperatorExpression extends RelationalBinaryOperatorExpression, t_TypedExpression { } export interface CompiledRelationalBinaryOperatorExpression extends TypedRelationalBinaryOperatorExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly left: CompiledExpression; readonly right: CompiledExpression; } export declare class RuntimeRelationalBinaryOperator extends SimpleRuntimeExpression> { readonly left: RuntimeExpression; readonly right: RuntimeExpression; constructor(model: CompiledRelationalBinaryOperatorExpression, parent: RuntimeConstruct); operate(): void; }