aip-0.1.0: src/Data/Aviation/Aip/ListItemLinks1.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Data.Aviation.Aip.ListItemLinks1(
ListItemLinks1(..)
, AsListItemLinks1(..)
, FoldListItemLinks1(..)
, GetListItemLinks1(..)
, SetListItemLinks1(..)
, ManyListItemLinks1(..)
, HasListItemLinks1(..)
, IsListItemLinks1(..)
) where
import Control.Category((.), id)
import Control.Applicative(pure)
import Control.Lens
import Data.Aeson(FromJSON(parseJSON), ToJSON(toJSON), withArray)
import Data.Aviation.Aip.Href(SetHref, FoldHref(_FoldHref), ManyHref(_ManyHref))
import Data.Aviation.Aip.ListItemLink(ListItemLink)
import Data.Eq(Eq)
import Data.Foldable(toList)
import Data.Function(($))
import Data.Functor((<$>))
import Data.Int(Int)
import Data.List.NonEmpty(NonEmpty)
import Data.Monoid(Monoid(mappend, mempty))
import Data.Ord(Ord)
import Data.Semigroup(Semigroup((<>)))
import Prelude(Show)
newtype ListItemLinks1 =
ListItemLinks1
[NonEmpty ListItemLink]
deriving (Eq, Ord, Show)
instance Semigroup ListItemLinks1 where
ListItemLinks1 x <> ListItemLinks1 y =
ListItemLinks1 (x <> y)
instance Monoid ListItemLinks1 where
mappend =
(<>)
mempty =
ListItemLinks1 mempty
instance FromJSON ListItemLinks1 where
parseJSON =
withArray "ListItemLinks1" $ \v ->
ListItemLinks1 <$> traverse parseJSON (toList v)
instance ToJSON ListItemLinks1 where
toJSON (ListItemLinks1 x) =
toJSON x
instance Wrapped ListItemLinks1 where
type Unwrapped ListItemLinks1 =
[NonEmpty ListItemLink]
_Wrapped' =
iso (\(ListItemLinks1 x) -> x) ListItemLinks1
instance ListItemLinks1 ~ x =>
Rewrapped ListItemLinks1 x
instance Cons ListItemLinks1 ListItemLinks1 (NonEmpty ListItemLink) (NonEmpty ListItemLink) where
_Cons =
_Wrapped . _Cons . seconding (from _Wrapped)
instance Snoc ListItemLinks1 ListItemLinks1 (NonEmpty ListItemLink) (NonEmpty ListItemLink) where
_Snoc =
_Wrapped . _Snoc . firsting (from _Wrapped)
instance Each ListItemLinks1 ListItemLinks1 (NonEmpty ListItemLink) (NonEmpty ListItemLink) where
each =
_Wrapped . each
instance Reversing ListItemLinks1 where
reversing =
_Wrapped %~ reversing
instance Plated ListItemLinks1 where
plate =
_Wrapped . plate . from _Wrapped
type instance IxValue ListItemLinks1 = NonEmpty ListItemLink
type instance Index ListItemLinks1 = Int
instance Ixed ListItemLinks1 where
ix i =
_Wrapped . ix i
class ManyListItemLinks1 a => AsListItemLinks1 a where
_ListItemLinks1 ::
Prism' a ListItemLinks1
default _ListItemLinks1 ::
IsListItemLinks1 a =>
Prism' a ListItemLinks1
_ListItemLinks1 =
_IsListItemLinks1
instance AsListItemLinks1 ListItemLinks1 where
_ListItemLinks1 =
id
class FoldListItemLinks1 a where
_FoldListItemLinks1 ::
Fold a ListItemLinks1
instance FoldListItemLinks1 ListItemLinks1 where
_FoldListItemLinks1 =
id
class FoldListItemLinks1 a => GetListItemLinks1 a where
_GetListItemLinks1 ::
Getter a ListItemLinks1
default _GetListItemLinks1 ::
HasListItemLinks1 a =>
Getter a ListItemLinks1
_GetListItemLinks1 =
listItemLinks1
instance GetListItemLinks1 ListItemLinks1 where
_GetListItemLinks1 =
id
class SetListItemLinks1 a where
_SetListItemLinks1 ::
Setter' a ListItemLinks1
default _SetListItemLinks1 ::
ManyListItemLinks1 a =>
Setter' a ListItemLinks1
_SetListItemLinks1 =
_ManyListItemLinks1
instance SetListItemLinks1 ListItemLinks1 where
_SetListItemLinks1 =
id
class (FoldListItemLinks1 a, SetListItemLinks1 a) => ManyListItemLinks1 a where
_ManyListItemLinks1 ::
Traversal' a ListItemLinks1
instance ManyListItemLinks1 ListItemLinks1 where
_ManyListItemLinks1 =
id
class (GetListItemLinks1 a, ManyListItemLinks1 a) => HasListItemLinks1 a where
listItemLinks1 ::
Lens' a ListItemLinks1
default listItemLinks1 ::
IsListItemLinks1 a =>
Lens' a ListItemLinks1
listItemLinks1 =
_IsListItemLinks1
instance HasListItemLinks1 ListItemLinks1 where
listItemLinks1 =
id
class (HasListItemLinks1 a, AsListItemLinks1 a) => IsListItemLinks1 a where
_IsListItemLinks1 ::
Iso' a ListItemLinks1
instance IsListItemLinks1 ListItemLinks1 where
_IsListItemLinks1 =
id
instance SetListItemLinks1 () where
instance FoldListItemLinks1 () where
_FoldListItemLinks1 =
_ManyListItemLinks1
instance ManyListItemLinks1 () where
_ManyListItemLinks1 _ x =
pure x
instance SetHref ListItemLinks1 where
instance FoldHref ListItemLinks1 where
_FoldHref =
_ManyHref
instance ManyHref ListItemLinks1 where
_ManyHref =
_Wrapped . traverse . traverse . _ManyHref