1 package edu.berkeley.sbp.bind;
2 import edu.berkeley.sbp.*;
3 import edu.berkeley.sbp.util.*;
4 import edu.berkeley.sbp.bind.*;
7 import java.lang.reflect.*;
9 public class BindingFunctor<T> implements TreeFunctor<T,Object>, ToJava {
10 private Binding _binding;
11 private String _toString;
12 public String toString() {
15 public BindingFunctor(String toString, Binding binding) {
16 this._binding = binding;
17 this._toString = toString;
19 public void toJava(StringBuffer sb) {
20 sb.append("new BindingFunctor(");
22 sb.append(StringUtil.toJavaString(_toString));
27 public Object invoke(Iterable<Tree<T>> t) {
28 ArrayList ret = new ArrayList();
30 if (tc.head() != null && tc.head() instanceof Functor)
31 ret.add(((TreeFunctor<Object,Object>)tc.head()).invoke(tc.children()));
32 else if (tc.size() == 0)
35 System.err.println("FIXME: don't know what to do about " + tc);
39 Object[] o = (Object[])ret.toArray(new Object[0]);
40 return _binding.invoke(o);