{-# LANGUAGE TypeFamilies #-}
module Language.Drasil.Code.Imperative.GOOL.ClassInterface (
ReadMeInfo(..),
PackageSym(..), AuxiliarySym(..)
) where
import Language.Drasil (Expr)
import Database.Drasil (ChunkDB)
import Language.Drasil.Code.DataDesc (DataDesc)
import Language.Drasil.Mod (Name, Version)
import Language.Drasil.Choices (Comments, ImplementationType, Verbosity)
import GOOL.Drasil (ProgData, GOOLState)
import Text.PrettyPrint.HughesPJ (Doc)
class (AuxiliarySym r) => PackageSym r where
type Package r
package :: ProgData -> [r (Auxiliary r)] -> r (Package r)
class AuxiliarySym r where
type Auxiliary r
type AuxHelper r
doxConfig :: String -> GOOLState -> Verbosity -> r (Auxiliary r)
readMe :: ReadMeInfo -> r (Auxiliary r)
sampleInput :: ChunkDB -> DataDesc -> [Expr] -> r (Auxiliary r)
optimizeDox :: r (AuxHelper r)
makefile :: [FilePath] -> ImplementationType -> [Comments] -> GOOLState ->
ProgData -> r (Auxiliary r)
auxHelperDoc :: r (AuxHelper r) -> Doc
auxFromData :: FilePath -> Doc -> r (Auxiliary r)
type LangAbbrev = String
type LangVers = String
type CaseName = String
type ExamplePurpose = String
type ExampleDescr = String
type Contributor = String
type InFile = String
type OutFile = String
data ReadMeInfo = ReadMeInfo {
ReadMeInfo -> LangAbbrev
langName :: LangAbbrev,
ReadMeInfo -> LangAbbrev
langVersion :: LangVers,
ReadMeInfo -> Maybe LangAbbrev
invalidOS :: Maybe String,
ReadMeInfo -> ImplementationType
implementType :: ImplementationType,
ReadMeInfo -> [(LangAbbrev, LangAbbrev)]
extLibNV :: [(Name,Version)],
ReadMeInfo -> [LangAbbrev]
extLibFP :: [FilePath],
ReadMeInfo -> [LangAbbrev]
contributors :: [Contributor],
ReadMeInfo -> [LangAbbrev]
configFP :: [FilePath],
ReadMeInfo -> LangAbbrev
caseName :: CaseName,
ReadMeInfo -> LangAbbrev
examplePurpose :: ExamplePurpose,
ReadMeInfo -> LangAbbrev
exampleDescr :: ExampleDescr,
ReadMeInfo -> Int
folderNum :: Int,
ReadMeInfo -> (LangAbbrev, LangAbbrev)
inputOutput :: (InFile, OutFile)
}