1 // Copyright 2006 all rights reserved; see LICENSE file for BSD-style license
3 package edu.berkeley.sbp.bind;
4 import edu.berkeley.sbp.*;
5 import edu.berkeley.sbp.util.*;
6 import edu.berkeley.sbp.bind.*;
9 import java.lang.reflect.*;
11 public class BindingFunctor<T> implements TreeFunctor<T,Object>, ToJava {
12 private Binding _binding;
13 private String _toString;
14 public String toString() {
17 public BindingFunctor(String toString, Binding binding) {
18 this._binding = binding;
19 this._toString = toString;
21 public void toJava(StringBuffer sb) {
22 sb.append("new BindingFunctor(");
24 sb.append(StringUtil.toJavaString(_toString));
29 public Object invoke(Iterable<Tree<T>> t) {
30 ArrayList ret = new ArrayList();
32 if (tc.head() != null && tc.head() instanceof Functor)
33 ret.add(((TreeFunctor<Object,Object>)tc.head()).invoke(tc.children()));
34 else if (tc.size() == 0)
37 System.err.println("FIXME: don't know what to do about " + tc);
41 Object[] o = (Object[])ret.toArray(new Object[0]);
42 return _binding.invoke(o);