{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE DefaultSignatures #-}
module Data.Aviation.Aip.AipDocuments(
AipDocuments(..)
, AipDocuments1
, AipDocuments2
, AsAipDocuments(..)
, FoldAipDocuments(..)
, GetAipDocuments(..)
, SetAipDocuments(..)
, ManyAipDocuments(..)
, HasAipDocuments(..)
, IsAipDocuments(..)
) where
import Control.Category((.), id)
import Control.Lens
import Data.Aeson(FromJSON(parseJSON), ToJSON(toJSON), withArray)
import Data.Aviation.Aip.Aip_SUP_and_AICs(Aip_SUP_and_AICs)
import Data.Aviation.Aip.AipDocument(AipDocument)
import Data.Aviation.Aip.DAPDocs(DAPDocs)
import Data.Aviation.Aip.Ersa(Ersa)
import Data.Aviation.Aip.Href(SetHref, FoldHref(_FoldHref), ManyHref(_ManyHref))
import Data.Aviation.Aip.ListItemLinks(ListItemLinks)
import Data.Aviation.Aip.ListItemLinks1(ListItemLinks1)
import Data.Eq(Eq)
import Data.Foldable(toList)
import Data.Function(($))
import Data.Functor((<$>))
import Data.Int(Int)
import Data.Monoid(Monoid(mappend, mempty))
import Data.Ord(Ord)
import Data.Semigroup(Semigroup((<>)))
import Prelude(Show)
newtype AipDocuments book charts sup_aic dap ersa =
AipDocuments
[AipDocument book charts sup_aic dap ersa]
deriving (Eq, Ord, Show)
instance Semigroup (AipDocuments book charts sup_aic dap ersa) where
AipDocuments x <> AipDocuments y =
AipDocuments (x <> y)
instance Monoid (AipDocuments book charts sup_aic dap ersa) where
mappend =
(<>)
mempty =
AipDocuments []
instance Wrapped (AipDocuments book charts sup_aic dap ersa) where
type Unwrapped (AipDocuments book charts sup_aic dap ersa) =
[AipDocument book charts sup_aic dap ersa]
_Wrapped' =
iso (\(AipDocuments x) -> x) AipDocuments
instance (AipDocuments book charts sup_aic dap ersa) ~ x =>
Rewrapped (AipDocuments book charts sup_aic dap ersa) x
type AipDocuments1 =
AipDocuments () () () () ()
type AipDocuments2 =
AipDocuments ListItemLinks ListItemLinks1 Aip_SUP_and_AICs DAPDocs Ersa
instance (FromJSON book, FromJSON charts, FromJSON sup_aic, FromJSON dap, FromJSON ersa) => FromJSON (AipDocuments book charts sup_aic dap ersa) where
parseJSON =
withArray "AipDocuments" $ \v ->
AipDocuments <$> traverse parseJSON (toList v)
instance (ToJSON book, ToJSON charts, ToJSON sup_aic, ToJSON dap, ToJSON ersa) => ToJSON (AipDocuments book charts sup_aic dap ersa) where
toJSON (AipDocuments x) =
toJSON x
instance Cons (AipDocuments book charts sup_aic dap ersa) (AipDocuments book charts sup_aic dap ersa) (AipDocument book charts sup_aic dap ersa) (AipDocument book charts sup_aic dap ersa) where
_Cons =
_Wrapped . _Cons . seconding (from _Wrapped)
instance Snoc (AipDocuments book charts sup_aic dap ersa) (AipDocuments book charts sup_aic dap ersa) (AipDocument book charts sup_aic dap ersa) (AipDocument book charts sup_aic dap ersa) where
_Snoc =
_Wrapped . _Snoc . firsting (from _Wrapped)
instance Each (AipDocuments book charts sup_aic dap ersa) (AipDocuments book charts sup_aic dap ersa) (AipDocument book charts sup_aic dap ersa) (AipDocument book charts sup_aic dap ersa) where
each =
_Wrapped . each
instance Reversing (AipDocuments book charts sup_aic dap ersa) where
reversing =
_Wrapped %~ reversing
instance Plated (AipDocuments book charts sup_aic dap ersa) where
plate =
_Wrapped . plate . from _Wrapped
type instance IxValue (AipDocuments book charts sup_aic dap ersa) = (AipDocument book charts sup_aic dap ersa)
type instance Index (AipDocuments book charts sup_aic dap ersa) = Int
instance Ixed (AipDocuments book charts sup_aic dap ersa) where
ix i =
_Wrapped . ix i
class ManyAipDocuments a => AsAipDocuments a where
_AipDocuments ::
Prism (a book charts sup_aic dap ersa) (a book' charts' sup_aic' dap' ersa') (AipDocuments book charts sup_aic dap ersa) (AipDocuments book' charts' sup_aic' dap' ersa')
default _AipDocuments ::
IsAipDocuments a =>
Prism (a book charts sup_aic dap ersa) (a book' charts' sup_aic' dap' ersa') (AipDocuments book charts sup_aic dap ersa) (AipDocuments book' charts' sup_aic' dap' ersa')
_AipDocuments =
_IsAipDocuments
instance AsAipDocuments AipDocuments where
_AipDocuments =
id
class FoldAipDocuments a where
_FoldAipDocuments ::
Fold (a book charts sup_aic dap ersa) (AipDocuments book charts sup_aic dap ersa)
instance FoldAipDocuments AipDocuments where
_FoldAipDocuments =
id
class FoldAipDocuments a => GetAipDocuments a where
_GetAipDocuments ::
Getter (a book charts sup_aic dap ersa) (AipDocuments book charts sup_aic dap ersa)
default _GetAipDocuments ::
HasAipDocuments a =>
Getter (a book charts sup_aic dap ersa) (AipDocuments book charts sup_aic dap ersa)
_GetAipDocuments =
aipDocuments
instance GetAipDocuments AipDocuments where
_GetAipDocuments =
id
class SetAipDocuments a where
_SetAipDocuments ::
Setter (a book charts sup_aic dap ersa) (a book' charts' sup_aic' dap' ersa') (AipDocuments book charts sup_aic dap ersa) (AipDocuments book' charts' sup_aic' dap' ersa')
default _SetAipDocuments ::
ManyAipDocuments a =>
Setter (a book charts sup_aic dap ersa) (a book' charts' sup_aic' dap' ersa') (AipDocuments book charts sup_aic dap ersa) (AipDocuments book' charts' sup_aic' dap' ersa')
_SetAipDocuments =
_ManyAipDocuments
instance SetAipDocuments AipDocuments where
_SetAipDocuments =
id
class (FoldAipDocuments a, SetAipDocuments a) => ManyAipDocuments a where
_ManyAipDocuments ::
Traversal (a book charts sup_aic dap ersa) (a book' charts' sup_aic' dap' ersa') (AipDocuments book charts sup_aic dap ersa) (AipDocuments book' charts' sup_aic' dap' ersa')
instance ManyAipDocuments AipDocuments where
_ManyAipDocuments =
id
class (GetAipDocuments a, ManyAipDocuments a) => HasAipDocuments a where
aipDocuments ::
Lens (a book charts sup_aic dap ersa) (a book' charts' sup_aic' dap' ersa') (AipDocuments book charts sup_aic dap ersa) (AipDocuments book' charts' sup_aic' dap' ersa')
default aipDocuments ::
IsAipDocuments a =>
Lens (a book charts sup_aic dap ersa) (a book' charts' sup_aic' dap' ersa') (AipDocuments book charts sup_aic dap ersa) (AipDocuments book' charts' sup_aic' dap' ersa')
aipDocuments =
_IsAipDocuments
instance HasAipDocuments AipDocuments where
aipDocuments =
id
class (HasAipDocuments a, AsAipDocuments a) => IsAipDocuments a where
_IsAipDocuments ::
Iso (a book charts sup_aic dap ersa) (a book' charts' sup_aic' dap' ersa') (AipDocuments book charts sup_aic dap ersa) (AipDocuments book' charts' sup_aic' dap' ersa')
instance IsAipDocuments AipDocuments where
_IsAipDocuments =
id
instance (ManyHref book, ManyHref charts, ManyHref sup_aic, ManyHref dap, ManyHref ersa) => SetHref (AipDocuments book charts sup_aic dap ersa) where
instance (ManyHref book, ManyHref charts, ManyHref sup_aic, ManyHref dap, ManyHref ersa) => FoldHref (AipDocuments book charts sup_aic dap ersa) where
_FoldHref =
_ManyHref
instance (ManyHref book, ManyHref charts, ManyHref sup_aic, ManyHref dap, ManyHref ersa) => ManyHref (AipDocuments book charts sup_aic dap ersa) where
_ManyHref =
_Wrapped . traverse . _ManyHref