import { ClassDefinitionASTNode } from "../../../../ast/ast_declarations"; import { ClassContext, SemanticContext, TranslationUnitContext } from "../../../compilation/contexts"; import { BaseSubobjectEntity, FunctionEntity, MemberObjectEntity, MemberReferenceEntity, MemberVariableEntity } from "../../../compilation/entities"; import { AnalyticConstruct } from "../../../../analysis/predicates"; import { CompleteClassType, FunctionType, VoidType } from "../../../compilation/types"; import { SuccessfullyCompiled } from "../../CPPConstruct"; import { BasicCPPConstruct } from "../../BasicCPPConstruct"; import { MemberDeclaration } from "../declarations"; import { FunctionDeclaration } from "../function/FunctionDeclaration"; import { FunctionDefinition } from "../function/FunctionDefinition"; import { BaseSpecifier, CompiledBaseSpecifier } from "./BaseSpecifier"; import { ClassDeclaration, CompiledClassDeclaration, TypedClassDeclaration } from "./ClassDeclaration"; export declare class ClassDefinition extends BasicCPPConstruct { readonly construct_type = "class_definition"; readonly declaration: ClassDeclaration; readonly name: string; readonly type: CompleteClassType; readonly baseSpecifiers: readonly BaseSpecifier[]; readonly memberDeclarations: readonly MemberDeclaration[]; readonly memberDeclarationsByName: { [index: string]: MemberDeclaration | undefined; }; readonly constructorDeclarations: readonly FunctionDeclaration[]; readonly baseType?: CompleteClassType; readonly memberFunctionEntities: readonly FunctionEntity[]; readonly memberVariableEntities: readonly MemberVariableEntity[]; readonly memberObjectEntities: readonly MemberObjectEntity[]; readonly memberReferenceEntities: readonly MemberReferenceEntity[]; readonly memberVariableEntitiesByName: { [index: string]: MemberVariableEntity | undefined; }; readonly defaultConstructor?: FunctionEntity>; readonly constCopyConstructor?: FunctionEntity>; readonly nonConstCopyConstructor?: FunctionEntity>; readonly constructors: readonly FunctionEntity>[]; readonly destructor?: FunctionEntity>; readonly objectSize: number; readonly inlineMemberFunctionDefinitions: readonly FunctionDefinition[]; private readonly implicitPublicContext; static createFromAST(ast: ClassDefinitionASTNode, tuContext: TranslationUnitContext): ClassDefinition; constructor(context: ClassContext, ast: ClassDefinitionASTNode | undefined, declaration: ClassDeclaration, baseSpecs: readonly BaseSpecifier[], memberDeclarations: readonly MemberDeclaration[]); attachInlineFunctionDefinition(def: FunctionDefinition): void; private createImplicitlyDefinedDefaultConstructorIfAppropriate; private createImplicitlyDefinedCopyConstructorIfAppropriate; lookupAssignmentOperator(requireConstParam: boolean, isReceiverConst: boolean): import("../../../compilation/scopes").DeclaredScopeEntry | undefined; private createImplicitlyDefinedCopyAssignmentOperatorIfAppropriate; private createImplicitlyDefinedDestructorIfAppropriate; getBaseAndMemberEntities(): readonly MemberVariableEntity[] | (MemberVariableEntity | BaseSubobjectEntity)[]; isSuccessfullyCompiled(): this is CompiledClassDefinition; isSemanticallyEquivalent_impl(other: AnalyticConstruct, equivalenceContext: SemanticContext): boolean; } export interface TypedClassDefinition extends ClassDefinition, SuccessfullyCompiled { readonly type: T; readonly declaration: TypedClassDeclaration; } export interface CompiledClassDefinition extends TypedClassDefinition, SuccessfullyCompiled { readonly declaration: CompiledClassDeclaration; readonly baseSpecifiers: readonly CompiledBaseSpecifier[]; }