/// /// import { AnalyticConstruct } from "../../../analysis/predicates"; import { CommaASTNode, TernaryASTNode } from "../../../ast/ast_expressions"; import { CommaExpressionOutlet, TernaryExpressionOutlet } from "../../../view/constructs/ExpressionOutlets"; import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet"; import { ConstructDescription, ExpressionContext, SemanticContext } from "../../compilation/contexts"; import { Bool, ExpressionType } from "../../compilation/types"; import { RuntimeConstruct, SuccessfullyCompiled } from "../CPPConstruct"; import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator"; import { CompiledExpression, Expression, TypedExpression, t_TypedExpression, ValueCategory } from "./Expression"; import { RuntimeExpression } from "./RuntimeExpression"; import { SimpleRuntimeExpression } from "./SimpleRuntimeExpression"; export declare class CommaExpression extends Expression { readonly construct_type = "comma_expression"; readonly type?: ExpressionType; readonly valueCategory?: ValueCategory; readonly left: Expression; readonly right: Expression; constructor(context: ExpressionContext, ast: CommaASTNode, left: Expression, right: Expression); static createFromAST(ast: CommaASTNode, context: ExpressionContext): CommaExpression; createDefaultOutlet(this: CompiledCommaExpression, element: JQuery, parent?: ConstructOutlet): CommaExpressionOutlet; describeEvalResult(depth: number): ConstructDescription; isSemanticallyEquivalent_impl(other: AnalyticConstruct, ec: SemanticContext): boolean; } export interface TypedCommaExpression extends CommaExpression, t_TypedExpression { readonly type: T; readonly valueCategory: V; readonly right: TypedExpression; } export interface CompiledCommaExpression extends TypedCommaExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly left: CompiledExpression; readonly right: CompiledExpression; } export declare class RuntimeComma extends SimpleRuntimeExpression> { left: RuntimeExpression; right: RuntimeExpression; constructor(model: CompiledCommaExpression, parent: RuntimeConstruct); protected operate(): void; } export declare class TernaryExpression extends Expression { readonly construct_type = "ternary_expression"; readonly type?: ExpressionType; readonly valueCategory?: ValueCategory; readonly condition: Expression; readonly then: Expression; readonly otherwise: Expression; constructor(context: ExpressionContext, ast: TernaryASTNode, condition: Expression, then: Expression, otherwise: Expression); static createFromAST(ast: TernaryASTNode, context: ExpressionContext): TernaryExpression; private compileCondition; private compileConsequences; createDefaultOutlet(this: CompiledTernaryExpression, element: JQuery, parent?: ConstructOutlet): TernaryExpressionOutlet; describeEvalResult(depth: number): ConstructDescription; isSemanticallyEquivalent_impl(other: AnalyticConstruct, ec: SemanticContext): boolean; } export interface TypedTernaryExpression extends TernaryExpression, t_TypedExpression { readonly type: T; readonly valueCategory: V; readonly then: TypedExpression; readonly otherwise: TypedExpression; } export interface CompiledTernaryExpression extends TypedTernaryExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly condition: CompiledExpression; readonly then: CompiledExpression; readonly otherwise: CompiledExpression; } export declare class RuntimeTernary extends RuntimeExpression> { condition: RuntimeExpression; then: RuntimeExpression; otherwise: RuntimeExpression; private index; constructor(model: CompiledTernaryExpression, parent: RuntimeConstruct); protected upNextImpl(): void; protected stepForwardImpl(): void; }