{-# LANGUAGE CPP #-}
module DFudIO(Fudlogue,fudlogue,fudlogue'{-,fudIO,fudIO'-},HasCache(..)) where

import FDefaults
import FudIO(fudIO1)
--import FudIO2(fudIO2)
import Fudget
--import Xtypes
--import Cache(allcacheF)
import NewCache(allcacheF)
import CmdLineEnv(argFlag)

#include "defaults.h"

data Fudlogue = Pars [Pars]
data Pars = Cache Bool

parameter_class(Cache,Bool)
parameter_instance(Cache,Fudlogue)

fudlogue :: F a b -> IO ()
fudlogue = Customiser Fudlogue -> F a b -> IO ()
forall a b. Customiser Fudlogue -> F a b -> IO ()
fudlogue' Customiser Fudlogue
forall a. Customiser a
standard
fudlogue' :: Customiser Fudlogue -> F a b -> IO ()
fudlogue' :: Customiser Fudlogue -> F a b -> IO ()
fudlogue' Customiser Fudlogue
pmod F a b
f = F a b -> IO ()
forall i o. F i o -> IO ()
fudIO1 (Customiser Fudlogue -> F a b -> F a b
forall xxx i o. HasCache xxx => (Fudlogue -> xxx) -> F i o -> F i o
cache Customiser Fudlogue
pmod F a b
f)
{-
fudIO = fudIO' standard
--fudIO' :: Customiser Fudlogue -> F a b -> IO ()
fudIO' pmod inCh outCh f = fudIO2 inCh outCh (cache pmod f)
-}

cache :: (Fudlogue -> xxx) -> F i o -> F i o
cache Fudlogue -> xxx
pmod = if xxx -> Bool
forall xxx. HasCache xxx => xxx -> Bool
getCache xxx
ps then F i o -> F i o
forall i o. F i o -> F i o
allcacheF else F i o -> F i o
forall a. Customiser a
id
  where ps :: xxx
ps = Fudlogue -> xxx
pmod ([Pars] -> Fudlogue
Pars [Bool -> Pars
Cache Bool
usecache])

usecache :: Bool
usecache = [Char] -> Bool -> Bool
argFlag [Char]
"cache" Bool
True