{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TemplateHaskell #-}
module Data.Aviation.WB.Arm.ArmRange(
ArmRange(..)
, HasArmRange(..)
, HasArmRanges(..)
, SetArmRange(..)
, HasArmRange0(..)
, (.->.)
) where
import Control.Lens(Lens', Traversal', Setter', lens, makeClassy)
import Data.Aviation.WB.Arm.ArmRangeLower(ArmRangeLower, HasArmRangeLower(armRangeLower), HasArmRangeLowers(armRangeLowers), SetArmRangeLower(setArmRangeLower))
import Data.Aviation.WB.Arm.ArmRangeUpper(ArmRangeUpper, HasArmRangeUpper(armRangeUpper), HasArmRangeUppers(armRangeUppers), SetArmRangeUpper(setArmRangeUpper))
import Data.Eq(Eq)
import Data.Maybe(Maybe)
import Data.Ord(Ord)
import Prelude(Show)
data ArmRange =
ArmRange
ArmRangeLower
ArmRangeUpper
deriving (Eq, Ord, Show)
makeClassy ''ArmRange
(.->.) ::
ArmRangeLower
-> ArmRangeUpper
-> ArmRange
(.->.) =
ArmRange
infixl 2 .->.
class HasArmRanges a where
armRanges ::
Traversal'
a
ArmRange
instance HasArmRanges ArmRange where
armRanges =
armRange
class SetArmRange a where
setArmRange ::
Setter'
a
ArmRange
instance SetArmRange ArmRange where
setArmRange =
armRange
instance HasArmRangeLower ArmRange where
armRangeLower =
lens
(\(ArmRange lower _) -> lower)
(\(ArmRange _ upper) lower -> ArmRange lower upper)
instance HasArmRangeUpper ArmRange where
armRangeUpper =
lens
(\(ArmRange _ upper) -> upper)
(\(ArmRange lower _) upper -> ArmRange lower upper)
instance HasArmRangeLowers ArmRange where
armRangeLowers =
armRangeLower
instance HasArmRangeUppers ArmRange where
armRangeUppers =
armRangeUpper
instance SetArmRangeLower ArmRange where
setArmRangeLower =
armRangeLower
instance SetArmRangeUpper ArmRange where
setArmRangeUpper =
armRangeUpper
class HasArmRange0 a where
armRange0 ::
Lens'
a
(Maybe ArmRange)