import { SimpleDeclarationASTNode } from "../../../ast/ast_declarations"; import { TranslationUnitContext } from "../../compilation/contexts"; import { CPPEntity } from "../../compilation/entities"; import { Type } from "../../compilation/types"; import { SuccessfullyCompiled } from "../CPPConstruct"; import { BasicCPPConstruct } from "../BasicCPPConstruct"; import { CompiledInitializer, Initializer } from "../initializers/Initializer"; import { OtherSpecifiers } from "./declarations"; import { CompiledDeclarator, Declarator } from "./Declarator"; import { CompiledStorageSpecifier, StorageSpecifier } from "./StorageSpecifier"; import { CompiledTypeSpecifier, TypeSpecifier } from "./TypeSpecifier"; export declare abstract class SimpleDeclaration extends BasicCPPConstruct { readonly typeSpecifier: TypeSpecifier; readonly storageSpecifier: StorageSpecifier; readonly declarator: Declarator; readonly otherSpecifiers: OtherSpecifiers; abstract readonly type?: Type; readonly name: string; readonly initializer?: Initializer; abstract readonly declaredEntity?: CPPEntity; protected readonly allowsExtern: boolean; protected constructor(context: ContextType, ast: SimpleDeclarationASTNode | undefined, typeSpec: TypeSpecifier, storageSpec: StorageSpecifier, declarator: Declarator, otherSpecs: OtherSpecifiers); } export interface TypedSimpleDeclaration extends SimpleDeclaration { readonly type: T; readonly declaredEntity: CPPEntity; } export interface CompiledSimpleDeclaration extends TypedSimpleDeclaration, SuccessfullyCompiled { readonly typeSpecifier: CompiledTypeSpecifier; readonly storageSpecifier: CompiledStorageSpecifier; readonly declarator: CompiledDeclarator; readonly initializer?: CompiledInitializer; }