module Distribution.Types.Library.Lens
  ( Library
  , module Distribution.Types.Library.Lens
  ) where

import Distribution.Compat.Lens
import Distribution.Compat.Prelude
import Prelude ()

import Distribution.ModuleName (ModuleName)
import Distribution.Types.BuildInfo (BuildInfo)
import Distribution.Types.Library (Library)
import Distribution.Types.LibraryName (LibraryName)
import Distribution.Types.LibraryVisibility (LibraryVisibility)
import Distribution.Types.ModuleReexport (ModuleReexport)

import qualified Distribution.Types.Library as T

libName :: Lens' Library LibraryName
libName :: Lens' Library LibraryName
libName LibraryName -> f LibraryName
f Library
s = (LibraryName -> Library) -> f LibraryName -> f Library
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\LibraryName
x -> Library
s{T.libName = x}) (LibraryName -> f LibraryName
f (Library -> LibraryName
T.libName Library
s))
{-# INLINE libName #-}

exposedModules :: Lens' Library [ModuleName]
exposedModules :: Lens' Library [ModuleName]
exposedModules [ModuleName] -> f [ModuleName]
f Library
s = ([ModuleName] -> Library) -> f [ModuleName] -> f Library
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[ModuleName]
x -> Library
s{T.exposedModules = x}) ([ModuleName] -> f [ModuleName]
f (Library -> [ModuleName]
T.exposedModules Library
s))
{-# INLINE exposedModules #-}

reexportedModules :: Lens' Library [ModuleReexport]
reexportedModules :: Lens' Library [ModuleReexport]
reexportedModules [ModuleReexport] -> f [ModuleReexport]
f Library
s = ([ModuleReexport] -> Library) -> f [ModuleReexport] -> f Library
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[ModuleReexport]
x -> Library
s{T.reexportedModules = x}) ([ModuleReexport] -> f [ModuleReexport]
f (Library -> [ModuleReexport]
T.reexportedModules Library
s))
{-# INLINE reexportedModules #-}

signatures :: Lens' Library [ModuleName]
signatures :: Lens' Library [ModuleName]
signatures [ModuleName] -> f [ModuleName]
f Library
s = ([ModuleName] -> Library) -> f [ModuleName] -> f Library
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\[ModuleName]
x -> Library
s{T.signatures = x}) ([ModuleName] -> f [ModuleName]
f (Library -> [ModuleName]
T.signatures Library
s))
{-# INLINE signatures #-}

libExposed :: Lens' Library Bool
libExposed :: Lens' Library Bool
libExposed Bool -> f Bool
f Library
s = (Bool -> Library) -> f Bool -> f Library
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Bool
x -> Library
s{T.libExposed = x}) (Bool -> f Bool
f (Library -> Bool
T.libExposed Library
s))
{-# INLINE libExposed #-}

libVisibility :: Lens' Library LibraryVisibility
libVisibility :: Lens' Library LibraryVisibility
libVisibility LibraryVisibility -> f LibraryVisibility
f Library
s = (LibraryVisibility -> Library) -> f LibraryVisibility -> f Library
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\LibraryVisibility
x -> Library
s{T.libVisibility = x}) (LibraryVisibility -> f LibraryVisibility
f (Library -> LibraryVisibility
T.libVisibility Library
s))
{-# INLINE libVisibility #-}

libBuildInfo :: Lens' Library BuildInfo
libBuildInfo :: Lens' Library BuildInfo
libBuildInfo BuildInfo -> f BuildInfo
f Library
s = (BuildInfo -> Library) -> f BuildInfo -> f Library
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\BuildInfo
x -> Library
s{T.libBuildInfo = x}) (BuildInfo -> f BuildInfo
f (Library -> BuildInfo
T.libBuildInfo Library
s))
{-# INLINE libBuildInfo #-}