import { LocalObjectEntity, LocalReferenceEntity } from "../../../compilation/entities"; import { CompleteParameterType, ReferenceType } from "../../../compilation/types"; import { SuccessfullyCompiled } from "../../CPPConstruct"; import { CompiledDeclarator, TypedDeclarator } from "../Declarator"; import { CompiledStorageSpecifier } from "../StorageSpecifier"; import { CompiledTypeSpecifier } from "../TypeSpecifier"; import { ParameterDeclaration } from "./ParameterDeclaration"; export interface ParameterDefinition extends ParameterDeclaration { readonly name: string; readonly type: CompleteParameterType; readonly declaredEntity: LocalObjectEntity | LocalReferenceEntity; } export interface TypedParameterDefinition extends ParameterDeclaration { readonly type: T; readonly declarator: TypedDeclarator; readonly declaredEntity: LocalObjectEntity> | LocalReferenceEntity>; } export interface CompiledParameterDefinition extends TypedParameterDefinition, SuccessfullyCompiled { readonly typeSpecifier: CompiledTypeSpecifier; readonly storageSpecifier: CompiledStorageSpecifier; readonly declarator: CompiledDeclarator; }