Mercurial > repos > rhope
diff nworker_c.rhope @ 135:18a4403fe576
Javascript backend can now produce broken output. Needs fixes plus port of standard lib
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 14 Nov 2010 03:09:49 -0500 |
parents | 1af91ceaaf49 |
children | fc3815b7462f |
line wrap: on
line diff
--- a/nworker_c.rhope Wed Nov 10 22:29:49 2010 -0500 +++ b/nworker_c.rhope Sun Nov 14 03:09:49 2010 -0500 @@ -1,4 +1,3 @@ -Import cbackend_c.rhope Import number_c.rhope Import boolean.rhope @@ -1353,8 +1352,10 @@ } } -Make Special@NBlueprint[bp,backend,func name,bp name,pop worker:out] +Make Special@NBlueprint[bp,backend,info,bp name:out] { + func name <- [info]Index[0] + pop worker <- [info]Index[1] func <- [[backend]Create Function[func name,("obj"),(),"cdecl"] ]Set Input Type[Type Instance[bp name], 0] out <- [backend]Store Function[Fold[pop worker, func, [bp]Fields >>]] @@ -1434,18 +1435,13 @@ Compile Special@NBlueprint[bp,backend,name:out] { - init name <- [" init "]Append[name] - [("Array","Boxed Array","Worker")]Find[=[?,name]] - { - after copyclean <- Val[backend] - }{ - copy name <- [" copy "]Append[name] - cleanup name <- [" cleanup "]Append[name] - after copyclean <- [bp]Make Special[ - [bp]Make Special[backend, copy name, name, Make Copy[?]], - cleanup name, name, Make Cleanup[?]] - } - out <- Fold[Getters Setters[?, ?, name], [bp]Make Special[after copyclean, init name, name, Make Init[?]], [bp]Fields >>] + makespecial <- [[[Dictionary[] + ]Set["init", Make Init[?]] + ]Set["copy", Make Copy[?]] + ]Set["cleanup", Make Cleanup[?]] + + after specials <- Fold[[bp]Make Special[?, ?, name], backend, [backend]Needed Specials[name,makespecial]] + out <- Fold[Getters Setters[?, ?, name], after specials, [bp]Fields >>] } Blueprint NProgram