{-# LANGUAGE CPP #-}
{-# LANGUAGE TemplateHaskell #-}
module Database.Tds.Primitives.Fixed ( Fixed0 (..)
, Fixed1 (..)
, Fixed2 (..)
, Fixed3 (..)
, Fixed4 (..)
, Fixed5 (..)
, Fixed6 (..)
, Fixed7 (..)
, Fixed8 (..)
, Fixed9 (..)
, Fixed10 (..)
, Fixed11 (..)
, Fixed12 (..)
, Fixed13 (..)
, Fixed14 (..)
, Fixed15 (..)
, Fixed16 (..)
, Fixed17 (..)
, Fixed18 (..)
, Fixed19 (..)
, Fixed20 (..)
, Fixed21 (..)
, Fixed22 (..)
, Fixed23 (..)
, Fixed24 (..)
, Fixed25 (..)
, Fixed26 (..)
, Fixed27 (..)
, Fixed28 (..)
, Fixed29 (..)
, Fixed30 (..)
, Fixed31 (..)
, Fixed32 (..)
, Fixed33 (..)
, Fixed34 (..)
, Fixed35 (..)
, Fixed36 (..)
, Fixed37 (..)
, Fixed38 (..)
, Exp0 (..)
, Exp1 (..)
, Exp2 (..)
, Exp3 (..)
, Exp4 (..)
, Exp5 (..)
, Exp6 (..)
, Exp7 (..)
, Exp8 (..)
, Exp9 (..)
, Exp10 (..)
, Exp11 (..)
, Exp12 (..)
, Exp13 (..)
, Exp14 (..)
, Exp15 (..)
, Exp16 (..)
, Exp17 (..)
, Exp18 (..)
, Exp19 (..)
, Exp20 (..)
, Exp21 (..)
, Exp22 (..)
, Exp23 (..)
, Exp24 (..)
, Exp25 (..)
, Exp26 (..)
, Exp27 (..)
, Exp28 (..)
, Exp29 (..)
, Exp30 (..)
, Exp31 (..)
, Exp32 (..)
, Exp33 (..)
, Exp34 (..)
, Exp35 (..)
, Exp36 (..)
, Exp37 (..)
, Exp38 (..)
) where
import Data.Monoid ((<>))
import Language.Haskell.TH
import Language.Haskell.TH.Syntax (returnQ)
import Data.Fixed (HasResolution(..),Fixed(..))
#if MIN_VERSION_template_haskell(2,11,0)
returnQ $ (flip map) [0..38] $ \i -> DataD [] (mkName $ "Exp" <> (show i)) [] Nothing [] []
#else
returnQ $ (flip map) [0..38] $ \i -> DataD [] (mkName $ "Exp" <> (show i)) [] [] []
#endif
#if MIN_VERSION_template_haskell(2,11,0)
returnQ $ (flip map) [0..38] $ \i ->
InstanceD Nothing [] (AppT (ConT ''HasResolution) (ConT $ (mkName $ "Exp" <> (show i))))
[FunD 'resolution [Clause [WildP] (NormalB (LitE (IntegerL (10^i)))) []]]
#else
returnQ $ (flip map) [0..38] $ \i ->
InstanceD [] (AppT (ConT ''HasResolution) (ConT $ (mkName $ "Exp" <> (show i))))
[FunD 'resolution [Clause [WildP] (NormalB (LitE (IntegerL (10^i)))) []]]
#endif
returnQ $ (flip map) [0..38] $ \i -> TySynD (mkName $ "Fixed" <> (show i)) [] $
AppT (ConT ''Fixed) (ConT $ mkName $ "Exp" <> (show i))