packages feed

layers-game-0.3: src/Utils.cpp

#define __POS__        (__FILE__ ++ ":" ++ show __LINE__)
#define ERROR          error $ __POS__ ++ " -> " ++

#define SHOW(a)        (#a ++ "=" ++ (show (a)))
#define S(a)           SHOW(a)
#define SHOW2(a,b)     (S(a) ++ " " ++ S(b))
#define S2(a,b)        SHOW2(a,b)
#define SHOW3(a,b,c)   (S2(a,b) ++ " " ++ S(c))
#define S3(a,b,c)      SHOW3(a,b,c)
#define SHOW4(a,b,c,d) (S3(a,b,c) ++ " " ++ S(d))
#define S4(a,b,c,d)    SHOW4(a,b,c,d)

#define PRINT(a)        putStrLn S(a)
#define P(a)            PRINT(a)
#define PRINT2(a,b)     putStrLn S2(a,b)
#define P2(a,b)         PRINT2(a,b)
#define PRINT3(a,b,c)   putStrLn S3(a,b,c)
#define P3(a,b,c)       PRINT3(a,b,c)
#define PRINT4(a,b,c,d) putStrLn S4(a,b,c,d)
#define P4(a,b,c,d)     PRINT4(a,b,c,d)

#define SHOWLN(x)       (#x ++ "=" ++ (show (x)) ++ "\n")

#define IMPORT_LENS_AS_LE import qualified Data.Lens.Strict as LE; \
                          import Control.Category ((.)); \
                          import Prelude hiding ((.)); \

#define LENS(field)    field##L = LE.lens field (\value record -> record {field=value})