/// /// import { CompleteObjectType, VoidType } from "../../compilation/types"; import { ExpressionContext } from "../../compilation/contexts"; import { SuccessfullyCompiled } from "../CPPConstruct"; import { ValueCategory, Expression, CompiledExpression, t_TypedExpression } from "./Expression"; import { RuntimeExpression } from "./RuntimeExpression"; import { UnaryOperatorExpressionOutlet } from "../../../view/constructs/ExpressionOutlets"; import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet"; import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator"; import { t_UnaryOperators, UnaryOperatorExpressionASTNode } from "../../../ast/ast_expressions"; import { LogicalNotExpression } from "./LogicalNotExpression"; import { UnaryMinusExpression } from "./UnaryMinusExpression"; import { UnaryPlusExpression } from "./UnaryPlusExpression"; import { AddressOfExpression } from "./AddressOfExpression"; import { DereferenceExpression } from "./DereferenceExpression"; import { PrefixIncrementExpression } from "./PrefixIncrementExpression"; export declare abstract class UnaryOperatorExpression extends Expression { abstract readonly type?: CompleteObjectType | VoidType; abstract readonly operand: Expression; abstract readonly operator: t_UnaryOperators; protected constructor(context: ExpressionContext, ast: ASTType | undefined); createDefaultOutlet(this: CompiledUnaryOperatorExpression, element: JQuery, parent?: ConstructOutlet): UnaryOperatorExpressionOutlet; } export declare type AnalyticUnaryOperatorExpression = DereferenceExpression | AddressOfExpression | UnaryPlusExpression | UnaryMinusExpression | LogicalNotExpression | PrefixIncrementExpression; export interface TypedUnaryOperatorExpression extends UnaryOperatorExpression, t_TypedExpression { readonly type: T; readonly valueCategory: ValueCategory; } export interface CompiledUnaryOperatorExpression extends TypedUnaryOperatorExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly operand: CompiledExpression; } export interface RuntimeUnaryOperatorExpression extends RuntimeExpression> { readonly operand: RuntimeExpression; }