{-# 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 = forall a b. Customiser Fudlogue -> F a b -> IO ()
fudlogue' forall a. Customiser a
standard
fudlogue' :: Customiser Fudlogue -> F a b -> IO ()
fudlogue' :: forall a b. Customiser Fudlogue -> F a b -> IO ()
fudlogue' Customiser Fudlogue
pmod F a b
f = forall {i} {o}. F i o -> IO ()
fudIO1 (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 forall xxx. HasCache xxx => xxx -> Bool
getCache xxx
ps then forall {i} {o}. F i o -> F i o
allcacheF else 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