import { TemporaryObjectEntity } from "../compilation/entities"; import { CompleteObjectType } from "../compilation/types"; import { TranslationUnitContext } from "../compilation/contexts"; import { SuccessfullyCompiled, CPPConstruct } from "./CPPConstruct"; import { BasicCPPConstruct } from "./BasicCPPConstruct"; import { ASTNode } from "../../ast/ASTNode"; import { TemporaryDeallocator, CompiledTemporaryDeallocator } from "./TemporaryDeallocator"; import { FunctionCall } from "./FunctionCall"; export declare abstract class PotentialFullExpression extends BasicCPPConstruct { readonly temporaryObjects: TemporaryObjectEntity[]; readonly temporaryDeallocator?: TemporaryDeallocator; onAttach(parent: CPPConstruct): void; isFullExpression(): boolean; /** * Returns the nearest full expression containing this expression (possibly itself). * @param inst */ findFullExpression(): PotentialFullExpression | FunctionCall; mayManageTemporaryLifetimes(): this is PotentialFullExpression; addTemporaryObject(tempObjEnt: TemporaryObjectEntity): void; createTemporaryObject(type: T, name: string): TemporaryObjectEntity; } export interface CompiledPotentialFullExpression extends PotentialFullExpression, SuccessfullyCompiled { readonly temporaryDeallocator?: CompiledTemporaryDeallocator; }