diff nworker.rhope @ 47:6202b866d72c

Cleaned up constructor names and merged some other changes in to support the Rhope website
author Mike Pavone <pavone@retrodev.com>
date Tue, 22 Dec 2009 01:22:09 -0500
parents a7c79ac22efc
children a24eb366195c
line wrap: on
line diff
--- a/nworker.rhope	Tue Dec 01 03:59:31 2009 -0500
+++ b/nworker.rhope	Tue Dec 22 01:22:09 2009 -0500
@@ -172,7 +172,7 @@
 
 Worker Ref[name,convention,inputs,outputs,ismethod?:out]
 {
-	out <- [[[[[Build["Worker Ref"]]Name <<[name]]Convention <<[convention]]Inputs <<[inputs]]Outputs <<[outputs]]Is Method ? <<[ismethod?]
+	out <- [[[[[Build["Worker Ref"]]Name <<[name]]Convention <<[convention]]Inputs <<[inputs]]Outputs <<[outputs]]Is Method? <<[ismethod?]
 }
 
 Blueprint Node Ref
@@ -300,7 +300,7 @@
 
 NWorker[convention:out]
 {
-	out <- [[[[[[[[Build["NWorker"]]Convention <<[convention]]Nodes <<[()]]Inputs <<[()]]Outputs <<[()]]Input Types <<[()]]Output Types <<[()]]Name <<["Anonymous"]]Builtin <<[No]
+	out <- [[[[[[[[Build["NWorker"]]Convention <<[convention]]Nodes <<[()]]Inputs <<[()]]Outputs <<[()]]Input Types <<[()]]Output Types <<[()]]Name <<["Anonymous"]]Builtin? <<[No]
 }
 
 Add Node@NWorker[worker,type,data,inputs,outputs:out,node index]
@@ -345,7 +345,11 @@
 		new type <- Val[type]
 		new count <- 1
 	}
-	new node <- [node]Input Types <<[  [[node]Input Types >>]Set[[dest]IO Num >>, new type] ]
+	new node <- [node]Input Types <<[  
+		[[()]Append[
+				[ [node]Input Types >> ]Set[ [dest]IO Num >>, new type ]
+		]]Append[new count] 
+	]
 	out <- Infer Types Node[[nodelist]Set[[dest]Index >>, new node], new node, [dest]Index >>, prog, worker]
 }
 
@@ -361,9 +365,14 @@
 		//Temporary hack
 		If[[Type Of[[node]Data >>]] = ["Whole Number"]]
 		{
-			outtype <- Type Instance["Whole Number"]
-		}{
-			outtype <- Type Instance[Type Of[[node]Data >>]]
+			outtype <- Type Instance["Int32"]
+		}{
+			If[[Type Of[[node]Data >>]] = ["Type Instance"]]
+			{
+				outtype <- Type Instance["Blueprint"]
+			}{
+				outtype <- Type Instance[Type Of[[node]Data >>]]
+			}
 		}
 		nextnode <- [node]Output Types <<[ [()]Append[outtype] ]
 		
@@ -1135,7 +1144,7 @@
 
 Compile Program@NProgram[prog, backend:out]
 {
-	out <- Fold["_Compile Program", Fold["_Compile Program BP Special", Fold["_Compile Program BP", backend, [prog]Blueprints >>], [prog]Blueprints >>], [prog]Workers >>]
+	out <- Fold["_Compile Program", Fold["_Compile Program BP Special", Fold["_Compile Program BP", backend, [prog]Blueprints >>], [prog]Blueprints >>], Map[[prog]Workers >>, ["Infer Types"]Set Input[1, prog]] ]
 }
 
 Register Method@NProgram[prog, name, convention, inputs, outputs: out]
@@ -1146,14 +1155,18 @@
 Register Worker@NProgram[prog, name, convention, inputs, outputs: out]
 {
 	Print[["Register Worker "]Append[name]]
-	after reg <- [prog]Worker Refs <<[ [[prog]Worker Refs >>]Set[name, Worker Ref[name, convention, inputs, outputs, No]]]
-	parts <- [name]Split["@"]
-	[parts]Index[1]
-	{
-		out <- [after reg]Register Method[[parts]Index[0], convention, inputs, outputs]
-	}{
-		out <- Val[after reg]
-	}
+	after reg <- [prog]Worker Refs <<[ 
+		[ [prog]Worker Refs >> ]Set[name, 
+			Worker Ref[name, convention, inputs, outputs, No]
+		]
+	]
+		parts <- [name]Split["@"]
+		[parts]Index[1]
+		{
+			out <- [after reg]Register Method@NProgram[[parts]Index[0], convention, inputs, outputs]
+		}{
+			out <- Val[after reg]
+		}
 }
 
 Register Builtins@NProgram[prog:out]
@@ -1174,81 +1187,81 @@
 	]Bind Worker["+@Int32", 
 		[[[[[NWorker["rhope"]
 		]Inputs <<[("left","right")]
-		]Input Types <<[ [[()]Append[Type Instance["Int32"]]]Type Instance["Int32"] ]
+		]Input Types <<[ [[()]Append[ Type Instance["Int32"]]]Append[Type Instance["Int32"]] ]
 		]Outputs <<[("out")]
-		]Output types <<[ [()]Append[Type Instance["Int32"]] ]
-		]Builin? <<[Yes]]
+		]Output Types <<[ [()]Append[Type Instance["Int32"]] ]
+		]Builtin? <<[Yes]]
 	]Bind Worker["-@Int32", 
 		[[[[[NWorker["rhope"]
 		]Inputs <<[("left","right")]
-		]Input Types <<[ [[()]Append[Type Instance["Int32"]]]Type Instance["Int32"] ]
+		]Input Types <<[ [[()]Append[ Type Instance["Int32"]]]Append[Type Instance["Int32"]] ]
 		]Outputs <<[("out")]
-		]Output types <<[ [()]Append[Type Instance["Int32"]] ]
-		]Builin? <<[Yes]]
+		]Output Types <<[ [()]Append[Type Instance["Int32"]] ]
+		]Builtin? <<[Yes]]
 	]Bind Worker["*@Int32", 
 		[[[[[NWorker["rhope"]
 		]Inputs <<[("left","right")]
-		]Input Types <<[ [[()]Append[Type Instance["Int32"]]]Type Instance["Int32"] ]
+		]Input Types <<[ [[()]Append[ Type Instance["Int32"]]]Append[Type Instance["Int32"]] ]
 		]Outputs <<[("out")]
-		]Output types <<[ [()]Append[Type Instance["Int32"]] ]
-		]Builin? <<[Yes]]
+		]Output Types <<[ [()]Append[Type Instance["Int32"]] ]
+		]Builtin? <<[Yes]]
 	]Bind Worker["/@Int32", 
 		[[[[[NWorker["rhope"]
 		]Inputs <<[("left","right")]
-		]Input Types <<[ [[()]Append[Type Instance["Int32"]]]Type Instance["Int32"] ]
+		]Input Types <<[ [[()]Append[ Type Instance["Int32"]]]Append[Type Instance["Int32"]] ]
 		]Outputs <<[("out")]
-		]Output types <<[ [()]Append[Type Instance["Int32"]] ]
-		]Builin? <<[Yes]]
+		]Output Types <<[ [()]Append[Type Instance["Int32"]] ]
+		]Builtin? <<[Yes]]
 	]Bind Worker["LShift@Int32", 
 		[[[[[NWorker["rhope"]
 		]Inputs <<[("left","right")]
-		]Input Types <<[ [[()]Append[Type Instance["Int32"]]]Type Instance["Int32"] ]
+		]Input Types <<[ [[()]Append[ Type Instance["Int32"]]]Append[Type Instance["Int32"]] ]
 		]Outputs <<[("out")]
-		]Output types <<[ [()]Append[Type Instance["Int32"]] ]
-		]Builin? <<[Yes]]
+		]Output Types <<[ [()]Append[Type Instance["Int32"]] ]
+		]Builtin? <<[Yes]]
 	]Bind Worker["RShift@Int32", 
 		[[[[[NWorker["rhope"]
 		]Inputs <<[("left","right")]
-		]Input Types <<[ [[()]Append[Type Instance["Int32"]]]Type Instance["Int32"] ]
+		]Input Types <<[ [[()]Append[ Type Instance["Int32"]]]Append[Type Instance["Int32"]] ]
 		]Outputs <<[("out")]
-		]Output types <<[ [()]Append[Type Instance["Int32"]] ]
-		]Builin? <<[Yes]]
+		]Output Types <<[ [()]Append[Type Instance["Int32"]] ]
+		]Builtin? <<[Yes]]
 	]Bind Worker["<@Int32", 
 		[[[[[NWorker["rhope"]
 		]Inputs <<[("left","right")]
-		]Input Types <<[ [[()]Append[Type Instance["Int32"]]]Type Instance["Int32"] ]
+		]Input Types <<[ [[()]Append[ Type Instance["Int32"]]]Append[Type Instance["Int32"]] ]
 		]Outputs <<[("out")]
-		]Output types <<[ [()]Append[Type Instance["Int32"]] ]
-		]Builin? <<[Yes]]
+		]Output Types <<[ [()]Append[Type Instance["Int32"]] ]
+		]Builtin? <<[Yes]]
 	]Bind Worker[">@Int32", 
 		[[[[[NWorker["rhope"]
 		]Inputs <<[("left","right")]
-		]Input Types <<[ [[()]Append[Type Instance["Int32"]]]Type Instance["Int32"] ]
+		]Input Types <<[ [[()]Append[ Type Instance["Int32"]]]Append[Type Instance["Int32"]] ]
 		]Outputs <<[("out")]
-		]Output types <<[ [()]Append[Type Instance["Int32"]] ]
-		]Builin? <<[Yes]]
+		]Output Types <<[ [()]Append[Type Instance["Int32"]] ]
+		]Builtin? <<[Yes]]
 	]Bind Blueprint["Boolean", NBlueprint[]]
 	]Bind Worker["If@Boolean",
 		[[[[[NWorker["rhope"]
 		]Inputs <<[("condition")]
 		]Input Types <<[ [()]Append[Type Instance["Boolean"]] ]
 		]Outputs <<[("isyes","isno")]
-		]Output types <<[ [[()]Append[Type Instance["Boolean"]]]Append[Type Instance["Boolean"]] ]
-		]Builin? <<[Yes]]
+		]Output Types <<[ [[()]Append[Type Instance["Boolean"]]]Append[Type Instance["Boolean"]] ]
+		]Builtin? <<[Yes]]
 	]Bind Worker["Print",
 		[[[[[NWorker["rhope"]
 		]Inputs <<[("value")]
 		]Input Types <<[ [()]Append[Type Instance["Any Type"]] ]
 		]Outputs <<[("out")]
-		]Output types <<[ [()]Append[Type Instance["Int32"]] ]
-		]Builin? <<[Yes]] 
+		]Output Types <<[ [()]Append[Type Instance["Int32"]] ]
+		]Builtin? <<[Yes]] 
 	]Bind Worker["Build",
 		[[[[[NWorker["rhope"]
 		]Inputs <<[("type")]
 		]Input Types <<[ [()]Append[Type Instance["Blueprint"]] ]
 		]Outputs <<[("out")]
-		]Output types <<[ [()]Append[Type Instance["Any Type"]] ]
-		]Builin? <<[Yes]] 
+		]Output Types <<[ [()]Append[Type Instance["Any Type"]] ]
+		]Builtin? <<[Yes]] 
 }
 
 Find Worker@NProgram[prog, name:out,notfound]