checkpoint
[sbp.git] / src / edu / berkeley / sbp / bind / Bindable.java
index 4a10187..ddd6242 100644 (file)
@@ -29,6 +29,18 @@ public abstract class Bindable implements ToJava {
         return null;
     }
 
+    public Binding createBinding(final int[] map) {
+        return new Binding() {
+                public Object invoke(Object[] o) {
+                    int max = 0;
+                    for(int i=0; i<map.length; i++) max = Math.max(map[i], max);
+                    Object[] o2 = new Object[max+1];
+                    for(int i=0; i<o.length; i++) o2[map[i]] = o[i];
+                    return impose(o2);
+                }
+            };
+    }
+
     private static class BindableMethod extends Bindable {
         private final Method _method;
         public String toString() { return "BindableMethod["+_method+"]"; }