{-# LANGUAGE CPP #-}
{-# LANGUAGE TemplateHaskell #-}
module Config where
import ParseArgs
import Data.Label
data Options = Options
{
_optBackend :: Backend
, _optSize :: Int
, _optZoom :: Int
, _optScale :: Float
, _optDegree :: Int
, _optBench :: Bool
, _optHelp :: Bool
}
deriving Show
$(mkLabels [''Options])
defaults :: Options
defaults = Options
{ _optBackend = maxBound
, _optSize = 200
, _optZoom = 3
, _optScale = 30
, _optDegree = 5
#ifdef ACCELERATE_ENABLE_GUI
, _optBench = False
#else
, _optBench = True
#endif
, _optHelp = False
}
options :: [OptDescr (Options -> Options)]
options =
[ Option [] ["size"] (ReqArg (set optSize . read) "INT") "visualisation size (200)"
, Option [] ["zoom"] (ReqArg (set optZoom . read) "INT") "pixel replication factor (3)"
, Option [] ["scale"] (ReqArg (set optScale . read) "FLOAT") "feature size of visualisation (30)"
, Option [] ["degree"] (ReqArg (set optDegree . read) "INT") "number of waves to sum for each point (5)"
, Option [] ["benchmark"] (NoArg (set optBench True)) "benchmark instead of displaying animation (False)"
, Option "h?" ["help"] (NoArg (set optHelp True)) "show help message"
]
header :: [String]
header =
[ "accelerate-crystal (c) [2011..2013] The Accelerate Team"
, ""
, "Usage: accelerate-crystal [OPTIONS]"
, ""
]
footer :: [String]
footer = []