packages feed

ivory-examples-0.1.0.5: examples/TestExamples.hs

import System.Environment

import qualified AddrOfRegression
import qualified Alloc
import qualified Area
import qualified Array
import qualified BitData
import qualified Bits
import qualified ClassHierarchy
import qualified ConcreteFile
import qualified Cond
import qualified ConstPtrRef
import qualified ConstRef
import qualified Coroutine
import qualified Extern
import qualified Factorial
import qualified FibLoop
import qualified FibTutorial
import qualified Float
import qualified Forever
import qualified FunPtr
import qualified Loop
import qualified Overflow
import qualified PID
import qualified PublicPrivate
import qualified SizeOf
import qualified String

import Control.Monad (when)
import Ivory.Compile.C.CmdlineFrontend
import Ivory.Stdlib.String
import Ivory.Language (Module())
import Ivory.Stdlib (stdlibModules)

main :: IO ()
main = do
  args <- getArgs
  when (null args)
       (error "Binary takes a path to srcs and headers as an argument")
  let path = head args
  let opts = initialOpts { outDir = Just path, srcLocs = True }
  compileExample opts modules

compileExample :: Opts -> [Module] -> IO ()
compileExample opts ms = runCompiler ms stdlibStringArtifacts opts

modules :: [Module]
modules = [ AddrOfRegression.cmodule
          , Alloc.cmodule
          , Area.cmodule
          , Array.cmodule
          , BitData.cmodule
          , Bits.cmodule
          , ClassHierarchy.cmodule
          , ConcreteFile.concreteIvory
          , ConcreteFile.examplesfile
          , Cond.cmodule
          , ConstPtrRef.cmodule
          , ConstRef.cmodule
          , Coroutine.cmodule
          , Extern.cmodule
          , Factorial.cmodule
          , FibLoop.cmodule
          , FibTutorial.fib_tutorial_module
          , Float.cmodule
          , Forever.cmodule
          , FunPtr.cmodule
          , Loop.cmodule
          , Overflow.cmodule
          , PID.cmodule
          , PublicPrivate.cmodule
          , SizeOf.cmodule
          , String.cmodule
          ]
          ++ stdlibModules