import { SimpleDeclarationASTNode } from "../../../../ast/ast_declarations"; import { SemanticContext, TranslationUnitContext } from "../../../compilation/contexts"; import { FunctionEntity } from "../../../compilation/entities"; import { QualifiedName } from "../../../compilation/lexical"; import { AnalyticConstruct } from "../../../../analysis/predicates"; import { FunctionType } from "../../../compilation/types"; import { SuccessfullyCompiled } from "../../CPPConstruct"; import { OtherSpecifiers } from "../declarations"; import { CompiledDeclarator, Declarator, TypedDeclarator } from "../Declarator"; import { SimpleDeclaration } from "../SimpleDeclaration"; import { CompiledStorageSpecifier, StorageSpecifier } from "../StorageSpecifier"; import { CompiledTypeSpecifier, TypeSpecifier } from "../TypeSpecifier"; import { CompiledParameterDeclaration, ParameterDeclaration } from "./ParameterDeclaration"; export declare class FunctionDeclaration extends SimpleDeclaration { readonly construct_type = "function_declaration"; readonly type: FunctionType; readonly declaredEntity: FunctionEntity; readonly qualifiedName: QualifiedName; readonly initializer: undefined; readonly parameterDeclarations: readonly ParameterDeclaration[]; readonly isMemberFunction: boolean; readonly isVirtual: boolean; readonly isPureVirtual: boolean; readonly isOverride: boolean; readonly isConstructor: boolean; readonly isDestructor: boolean; constructor(context: TranslationUnitContext, ast: SimpleDeclarationASTNode | undefined, typeSpec: TypeSpecifier, storageSpec: StorageSpecifier, declarator: Declarator, otherSpecs: OtherSpecifiers, type: FunctionType); isSemanticallyEquivalent_impl(other: AnalyticConstruct, equivalenceContext: SemanticContext): boolean; } export interface TypedFunctionDeclaration extends FunctionDeclaration { readonly type: T; readonly declaredEntity: FunctionEntity; readonly declarator: TypedDeclarator; } export interface CompiledFunctionDeclaration extends TypedFunctionDeclaration, SuccessfullyCompiled { readonly typeSpecifier: CompiledTypeSpecifier; readonly storageSpecifier: CompiledStorageSpecifier; readonly declarator: CompiledDeclarator; readonly parameterDeclarations: readonly CompiledParameterDeclaration[]; }