X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=mTaskCode.icl;h=410e05e58aa1211a5e268077ade06bdb0cc2503a;hb=9f47008270ad2ab66d7787eb29b0f83a82a8e42e;hp=3edd2ce21f06d82ac180749e31fad4b151d19c14;hpb=e25fda18ca554ec3fe937152403872b916367ddb;p=mTask.git diff --git a/mTaskCode.icl b/mTaskCode.icl index 3edd2ce..410e05e 100644 --- a/mTaskCode.icl +++ b/mTaskCode.icl @@ -74,6 +74,7 @@ instance sds Code where in setCode Var +.+ c (type2string v + " " + name + " = " + toCode v + ";\n") +.+ setCode Setup +.+ unMain body} con f = defCode f + pub _ = undef defCode :: ((Code t p) -> In t (Main (Code u q))) -> Main (Code u r) | type t defCode f = @@ -352,23 +353,6 @@ instance analogIO Code where instance noOp Code where noOp = C \rw c.c :: Code a p = C ((ReadWrite (Code a Expr)) CODE -> CODE) -:: CODE = - { fresh :: Int - , freshMTask :: Int - , funs :: [String] - , ifuns :: Int - , vars :: [String] - , ivars :: Int - , setup :: [String] - , isetup :: Int - , loop :: [String] - , iloop :: Int - , includes :: [String] - , def :: Def - , mode :: Mode - , binds :: [String] - } - unC :: (Code a p) -> ((ReadWrite (Code a Expr)) CODE -> CODE) unC (C f) = f @@ -376,10 +360,10 @@ unC (C f) = f :: Mode = /*MainMode |*/ NoReturn | Return String | SubExp | Assign String setMode :: Mode -> Code a p -setMode m = C \rw c.{c & mode = m} +setMode m = C \rw c.{CODE|c & mode` = m} getMode :: (Mode -> Code a p) -> Code a p -getMode f = C \rw c.unC (f c.mode) rw c +getMode f = C \rw c.unC (f c.mode`) rw c embed :: (Code a p) -> Code a p embed e = @@ -395,10 +379,10 @@ embed e = (+.+) (C f) (C g) = C \rw c.g Rd (f Rd c) fresh :: (Int -> (Code a p)) -> (Code a p) -fresh f = C \rw c.unC (f c.fresh) rw {c & fresh = c.fresh + 1} +fresh f = C \rw c.unC (f c.fresh) rw {CODE | c & fresh = c.fresh + 1} freshMTask :: (Int -> (Code a p)) -> (Code a p) -freshMTask f = C \rw c.unC (f c.freshMTask) rw {c & freshMTask = c.freshMTask + 1} +freshMTask f = C \rw c.unC (f c.freshMTask) rw {CODE | c & freshMTask = c.freshMTask + 1} setCode :: Def -> (Code a p) setCode d = C \rw c.{c & def = d} @@ -608,7 +592,7 @@ newCode = , iloop = 4 , includes = [] , def = Setup - , mode = NoReturn + , mode` = NoReturn , binds = [] }