packages feed

immutaball-core-0.1.0.4.1: Immutaball/Share/Context/Config.hs

{-# OPTIONS_GHC -fno-warn-tabs #-}  -- Support tab indentation better, for a better default of no warning if tabs are used: https://dmitryfrank.com/articles/indent_with_tabs_align_with_spaces .
-- Enable warnings:
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

-- State.hs.

{-# LANGUAGE Haskell2010 #-}
{-# LANGUAGE TemplateHaskell #-}

module Immutaball.Share.Context.Config
	(
		IBDirs(..), ibStaticDataDir, ibUserDataDir, ibUserConfigDir,
		ContextConfig'(..), cxtCfgStaticConfig, cxtCfgDirs, cxtCfgNeverballrc,
			cxtCfgInitialWire, cxtCfgHeadless, cxtCfgUseExistingSDLManager,
			cxtCfgUseExistingGLManager
	) where

import Prelude ()
import Immutaball.Prelude

import Control.Lens

import Immutaball.Share.Config
import Immutaball.Share.GLManager
import Immutaball.Share.SDLManager

data IBDirs = IBDirs {
	_ibStaticDataDir :: FilePath,
	_ibUserDataDir   :: FilePath,
	_ibUserConfigDir :: FilePath
}
	deriving (Eq, Ord, Show)
makeLenses ''IBDirs

data ContextConfig' cxt initialWire = ContextConfig {
	_cxtCfgStaticConfig :: StaticConfig' (cxt -> Maybe initialWire),
	_cxtCfgDirs         :: IBDirs,
	_cxtCfgNeverballrc  :: Neverballrc,
	_cxtCfgInitialWire  :: cxt -> Maybe initialWire,
	_cxtCfgHeadless     :: Bool,

	-- | Allow tests to share a single manager.
	_cxtCfgUseExistingSDLManager :: Maybe SDLManagerHandle,
	_cxtCfgUseExistingGLManager  :: Maybe GLManagerHandle
}
makeLenses ''ContextConfig'