/// /// import { PeelReference, CompleteReturnType, CompleteObjectType, PotentialParameterType, VoidType } from "../../compilation/types"; import { ExpressionContext, ConstructDescription } from "../../compilation/contexts"; import { SuccessfullyCompiled, RuntimeConstruct } from "../CPPConstruct"; import { MAGIC_FUNCTION_NAMES } from "../../compilation/lexical"; import { ValueCategory, Expression, CompiledExpression, t_TypedExpression } from "./Expression"; import { RuntimeExpression } from "./RuntimeExpression"; import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet"; import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator"; import { FunctionCallExpressionASTNode } from "../../../ast/ast_expressions"; import { SimpleRuntimeExpression } from "./SimpleRuntimeExpression"; import { MagicFunctionCallExpressionOutlet } from "../../../view/constructs/ExpressionOutlets"; interface MagicFunctionImpl { readonly returnType: CompleteObjectType | VoidType; readonly valueCategory: ValueCategory; readonly paramTypes: readonly PotentialParameterType[]; readonly operate: (rt: RuntimeMagicFunctionCallExpression) => void; } export declare class MagicFunctionCallExpression extends Expression { readonly construct_type = "magic_function_call_expression"; readonly type: PeelReference; readonly valueCategory: ValueCategory; readonly functionName: string; readonly functionImpl: MagicFunctionImpl; readonly args: readonly Expression[]; constructor(context: ExpressionContext, ast: FunctionCallExpressionASTNode | undefined, functionName: MAGIC_FUNCTION_NAMES, args: readonly Expression[]); createDefaultOutlet(this: CompiledMagicFunctionCallExpression, element: JQuery, parent?: ConstructOutlet): MagicFunctionCallExpressionOutlet; describeEvalResult(depth: number): ConstructDescription; } export interface TypedMagicFunctionCallExpression = PeelReference, V extends ValueCategory = ValueCategory> extends MagicFunctionCallExpression, t_TypedExpression { readonly type: T; readonly valueCategory: V; } export interface CompiledMagicFunctionCallExpression = PeelReference, V extends ValueCategory = ValueCategory> extends TypedMagicFunctionCallExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; readonly args: readonly CompiledExpression[]; } export declare class RuntimeMagicFunctionCallExpression = PeelReference, V extends ValueCategory = ValueCategory> extends SimpleRuntimeExpression> { args: readonly RuntimeExpression[]; constructor(model: CompiledMagicFunctionCallExpression, parent: RuntimeConstruct); protected operate(): void; } export {};