X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fbind%2FBindable.java;h=8f5cc86749efa2060ac98fda91c2bfb6ae308d1a;hb=f09d2abb95f106197aea99c345282c3bf0cd3717;hp=4a10187bf6b720bdbead0042a6eaeba02f82b3da;hpb=c8a17fdd2e149fe5feecd96c71b7f2cab286ab96;p=sbp.git diff --git a/src/edu/berkeley/sbp/bind/Bindable.java b/src/edu/berkeley/sbp/bind/Bindable.java index 4a10187..8f5cc86 100644 --- a/src/edu/berkeley/sbp/bind/Bindable.java +++ b/src/edu/berkeley/sbp/bind/Bindable.java @@ -22,6 +22,11 @@ public abstract class Bindable implements ToJava { public abstract String[] getArgNames(); public abstract Class[] getArgTypes(); + public Binding createBinding() { return new SimpleBinding(); } + public Binding createBinding(final int[] map) { return new SimpleBinding(map); } + public Binding createBinding(final int[] map, Object prepend) { return new SimpleBinding(map, prepend); } + + public static Bindable create(Object o) { if (o instanceof Class) return new BindableClass((Class)o); if (o instanceof Method) return new BindableMethod((Method)o); @@ -29,6 +34,8 @@ public abstract class Bindable implements ToJava { return null; } + // Subclasses ////////////////////////////////////////////////////////////////////////////// + private static class BindableMethod extends Bindable { private final Method _method; public String toString() { return "BindableMethod["+_method+"]"; } @@ -105,6 +112,8 @@ public abstract class Bindable implements ToJava { } + // Helpers ////////////////////////////////////////////////////////////////////////////// + private static void appendClassArray(StringBuffer sb, Class[] c) { sb.append("new Class[] {"); for(int i=0; i