Mercurial > repos > rhope
diff nworker.rhope @ 103:7428aa5d6ade
Compiler compiled by compiler sort of working
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 11 Aug 2010 03:13:28 -0400 |
parents | e73a93fb5de1 |
children | 43cc42df26cc |
line wrap: on
line diff
--- a/nworker.rhope Tue Aug 10 20:55:52 2010 -0400 +++ b/nworker.rhope Wed Aug 11 03:13:28 2010 -0400 @@ -1376,8 +1376,17 @@ { //Rhope identifiers can't start with spaces, so we can use identifiers that start with spaces for special functions init name <- [" init "]Append[name] - copy name <- [" copy "]Append[name] - cleanup name <- [" cleanup "]Append[name] + [("Array","Boxed Array","Worker")]Find[name] + { + [("internalarraynaked","internalarrayboxed","internalworker")]Index[~] + { + copy name <- [~]Append["copy"] + cleanup name <- [~]Append["cleanup"] + } + }{ + copy name <- [" copy "]Append[name] + cleanup name <- [" cleanup "]Append[name] + } type <- [[[Fold["_Compile Blueprint Methods", Fold["_Compile Blueprint Fields", [backend]Create Type[name], [bp]Fields >>], [bp]Methods >>] ]Init <<[init name] ]Copy <<[copy name] @@ -1389,14 +1398,17 @@ Compile Special@NBlueprint[bp,backend,name:out] { init name <- [" init "]Append[name] - copy name <- [" copy "]Append[name] - cleanup name <- [" cleanup "]Append[name] - got specials <- [bp]Make Special[ - [bp]Make Special[ - [bp]Make Special[backend, init name, name, "Make Init"], - copy name, name, "Make Copy"], - cleanup name, name, "Make Cleanup"] - out <- Fold[["Getters Setters"]Set Input[2, name], got specials, [bp]Fields >>] + [("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"]Set Input[2, name], [bp]Make Special[after copyclean, init name, name, "Make Init"], [bp]Fields >>] } Blueprint NProgram