fudgets-0.18.3: hsrc/defaults/defaults.h
{-
HBC uses "cpp -C -traditional" which causes all the /**/ to be left behind
when the macro definitions are processed. That is why the definitions
are inside a comment.
#define parameter_class(name,type) parameter_class_gen(name,name,type)
#define parameter_class_gen(classname,par,type) \
class Has/**/classname xxx where {\
set/**/par :: (type) -> Customiser xxx; \
get/**/par :: xxx -> (type); \
get/**/par/**/Maybe :: xxx -> Maybe (type); \
get/**/par = fromMaybe (error "get par: missing default") . get/**/par/**/Maybe }
#define parameter_class1(par) class Has/**/par xxx where {\
set/**/par :: a -> Customiser (xxx a); \
get/**/par/**/Maybe :: xxx a -> Maybe a; \
get/**/par :: xxx a -> a; \
get/**/par = fromMaybe (error "get par: missing default") . get/**/par/**/Maybe }
#define parameter_instance1(par,type) parameter_instance(par,type a)
#define parameter_instance(par,type) instance Has/**/par (type) where {\
set/**/par p (Pars ps) = Pars (par p:ps); \
get/**/par/**/Maybe (Pars ps) = getparMaybe (\x->case x of par p -> Just p; _-> Nothing) ps }
/* non-overloaded parameters: */
#define parameter(par) \
set/**/par p = cust (\ (Pars ps) -> Pars (par p:ps)); \
get/**/par (Pars ps) = getpar (\x->case x of par p -> Just p; _-> Nothing) ps; \
get/**/par/**/Maybe (Pars ps) = getparMaybe (\x->case x of par p -> Just p; _-> Nothing) ps
-}