-- | Defines Drasil generator functions.
module Drasil.Generator.Composed (
  -- * Generators
  exportSmithEtAlSrsWCode, exportSmithEtAlSrsWCodeZoo,
) where

import Language.Drasil.Code (Choices)
import Drasil.SRSDocument (SRSDecl)
import Drasil.System (SmithEtAlSRS)

import Drasil.Generator.Code (exportCode, exportCodeZoo)
import Drasil.Generator.SRS (exportSmithEtAlSrs)

-- | Generate an SRS softifact with a specific solution softifact.
exportSmithEtAlSrsWCode :: SmithEtAlSRS -> SRSDecl -> String -> Choices -> IO ()
exportSmithEtAlSrsWCode :: SmithEtAlSRS -> SRSDecl -> String -> Choices -> IO ()
exportSmithEtAlSrsWCode SmithEtAlSRS
syst SRSDecl
srsDecl String
srsFileName Choices
chcs = do
  SmithEtAlSRS -> SRSDecl -> String -> IO ()
exportSmithEtAlSrs SmithEtAlSRS
syst SRSDecl
srsDecl String
srsFileName
  SmithEtAlSRS -> Choices -> IO ()
exportCode SmithEtAlSRS
syst Choices
chcs

-- | Generate an SRS softifact with a zoo of solution softifacts.
exportSmithEtAlSrsWCodeZoo :: SmithEtAlSRS -> SRSDecl -> String -> [Choices] -> IO ()
exportSmithEtAlSrsWCodeZoo :: SmithEtAlSRS -> SRSDecl -> String -> [Choices] -> IO ()
exportSmithEtAlSrsWCodeZoo SmithEtAlSRS
syst SRSDecl
srsDecl String
srsFileName [Choices]
chcs = do
  SmithEtAlSRS -> SRSDecl -> String -> IO ()
exportSmithEtAlSrs SmithEtAlSRS
syst SRSDecl
srsDecl String
srsFileName
  SmithEtAlSRS -> [Choices] -> IO ()
exportCodeZoo SmithEtAlSRS
syst [Choices]
chcs