module Drasil.DblPend.Choices where

import Language.Drasil.Code (Choices(..), CodeSpec, codeSpec, Comments(..),
  Verbosity(..), ConstraintBehaviour(..), ImplementationType(..), Lang(..), 
  Modularity(..), Structure(..), ConstantStructure(..), ConstantRepr(..), 
  InputModule(..), AuxFile(..), Visibility(..), defaultChoices, makeArchit,
  makeData, makeConstraints, makeODE, makeDocConfig, makeLogConfig, makeOptFeats,
  ExtLib(..))

import Data.Drasil.ExternalLibraries.ODELibraries (scipyODEPckg, osloPckg,
  apacheODEPckg, odeintPckg)
import Drasil.DblPend.Body (fullSI)
import Drasil.DblPend.ODEs (dblPenODEInfo)

code :: CodeSpec
code :: CodeSpec
code = SystemInformation -> Choices -> [Mod] -> CodeSpec
codeSpec SystemInformation
fullSI Choices
choices []

choices :: Choices
choices :: Choices
choices = Choices
defaultChoices {
  lang :: [Lang]
lang = [Lang
Python, Lang
Cpp, Lang
CSharp, Lang
Java],
  architecture :: Architecture
architecture = Modularity -> ImplementationType -> Architecture
makeArchit (InputModule -> Modularity
Modular InputModule
Combined) ImplementationType
Program,
  dataInfo :: DataInfo
dataInfo = Structure -> ConstantStructure -> ConstantRepr -> DataInfo
makeData Structure
Unbundled (Structure -> ConstantStructure
Store Structure
Bundled) ConstantRepr
Const,
  optFeats :: OptionalFeatures
optFeats = DocConfig -> LogConfig -> [AuxFile] -> OptionalFeatures
makeOptFeats
    ([Comments] -> Verbosity -> Visibility -> DocConfig
makeDocConfig [Comments
CommentFunc, Comments
CommentClass, Comments
CommentMod] Verbosity
Quiet Visibility
Hide)
    ([Logging] -> FilePath -> LogConfig
makeLogConfig [] FilePath
"log.txt")
    [FilePath -> AuxFile
SampleInput FilePath
"../../datafiles/dblpend/sampleInput.txt", AuxFile
ReadME],
  srsConstraints :: Constraints
srsConstraints = ConstraintBehaviour -> ConstraintBehaviour -> Constraints
makeConstraints ConstraintBehaviour
Warning ConstraintBehaviour
Warning,
  extLibs :: [ExtLib]
extLibs = [ODE -> ExtLib
Math ([ODEInfo] -> [ODELibPckg] -> ODE
makeODE [ODEInfo
dblPenODEInfo] [ODELibPckg
scipyODEPckg, ODELibPckg
osloPckg, ODELibPckg
apacheODEPckg, ODELibPckg
odeintPckg])]
}