module mTaskMakeSymbols //import iTasks import gdynamic, gCons, GenEq, StdMisc, StdArray, GenBimap import GenPrint import mTask import StdEnum import StdFile import StdString from StdFunc import o import StdBool import StdTuple import Data.Tuple import StdList from Data.Func import $ import Data.List from Text import class Text(join,toUpperCase), instance Text String derive consIndex BC derive consName BC derive conses BC, AnalogPin (<+) infixr 5 :: a b -> String | toString a & toString b (<+) a b = toString a +++ toString b toDefine :: Int BC -> String toDefine i b = "#define " <+ toUpperCase (consName{|*|} b) <+ " " <+ i Start w # (io, w) = stdio w # io = io <<< "#ifndef MTASK_H\n#define MTASK_H\n" # io = io <<< join "\n" (zipWith toDefine [1..] conses{|*|}) # (ok, w) = fclose (io <<< "\n#endif\n") w | not ok = abort "Couldn't close stdio" = w