module OpcXmlDaClient.XmlSchemaValues.Types where

import qualified Domain
import qualified DomainOptics
import OpcXmlDaClient.Base.Prelude

Domain.declare
  (Just (True, False))
  ( mconcat
      [ Domain.enumDeriver,
        Domain.boundedDeriver,
        Domain.showDeriver,
        Domain.eqDeriver,
        Domain.genericDeriver,
        Domain.dataDeriver,
        Domain.typeableDeriver,
        Domain.hasFieldDeriver,
        Domain.constructorIsLabelDeriver,
        Domain.accessorIsLabelDeriver,
        DomainOptics.labelOpticDeriver
      ]
  )
  =<< Domain.loadSchema "domain/xml-schema-values.domain.yaml"

deriving instance Ord Date

deriving instance Ord Time

instance Ord Duration where
  compare :: Duration -> Duration -> Ordering
compare = ((Bool, Integer, NominalDiffTime)
 -> (Bool, Integer, NominalDiffTime) -> Ordering)
-> (Duration -> (Bool, Integer, NominalDiffTime))
-> Duration
-> Duration
-> Ordering
forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
on (Bool, Integer, NominalDiffTime)
-> (Bool, Integer, NominalDiffTime) -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (\(Duration Bool
a (CalendarDiffTime Integer
b NominalDiffTime
c)) -> (Bool
a, Integer
b, NominalDiffTime
c))