module Distribution.Types.ComponentInclude (
    ComponentInclude(..),
    ci_id,
    ci_pkgid,
    ci_cname
) where

import Distribution.Types.PackageId
import Distribution.Types.ComponentName
import Distribution.Types.AnnotatedId

-- Once ci_id is refined to an 'OpenUnitId' or 'DefUnitId',
-- the 'includeRequiresRn' is not so useful (because it
-- includes the requirements renaming that is no longer
-- needed); use 'ci_prov_renaming' instead.
data ComponentInclude id rn = ComponentInclude {
        ci_ann_id   :: AnnotatedId id,
        ci_renaming :: rn,
        -- | Did this come from an entry in @mixins@, or
        -- was implicitly generated by @build-depends@?
        ci_implicit :: Bool
    }

ci_id :: ComponentInclude id rn -> id
ci_id = ann_id . ci_ann_id

ci_pkgid :: ComponentInclude id rn -> PackageId
ci_pkgid = ann_pid . ci_ann_id

-- | This should always return 'CLibName' or 'CSubLibName'
ci_cname :: ComponentInclude id rn -> ComponentName
ci_cname = ann_cname . ci_ann_id