packages feed

containers-benchmark-1.0: src/Variants/gen.sh

#!/bin/sh

for c in Map Set IntMap IntSet
do
  for i in Int IntegerSmall IntegerBig String ByteString
  do
    [ "$c" = IntMap -o "$c" = IntSet ] && [ "$i" != Int ] && continue

    case $i in
      Int | IntegerSmall | IntegerBig)
        addons="
#define FOLD_SUM";
        benchmark="
benchmark = driver (InputData.$i.asc) (InputData.$i.rnd)";;

      String | ByteString)
        addons="";
        benchmark="
benchmark = do
  strlenarg : args <- getArgs
  let strlen = read strlenarg
  withArgs args $ driver (InputData.$i.asc strlen) (InputData.$i.rnd strlen)";;
    esac

    cat >${c}_$i.hs <<EOF
{-# LANGUAGE CPP, BangPatterns #-}

module Variants.${c}_$i ( benchmark ) where

import qualified Container.$c as C
import qualified InputData.$i
#include "../Driver.inc.hs"
$addons
#include "../Benchmark/${c#Int}-like.inc.hs"
$benchmark
EOF
  done
done