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

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

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

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

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