Package org.renjin.primitives.special

Source Code of org.renjin.primitives.special.ExpressionFunction

package org.renjin.primitives.special;

import com.google.common.collect.Lists;
import org.renjin.eval.Context;
import org.renjin.eval.EvalException;
import org.renjin.sexp.*;
import org.renjin.util.NamesBuilder;

import java.util.List;

/**
* Returns a vector of type "expression" containing its arguments
* (unevaluated).
*/
public class ExpressionFunction extends SpecialFunction {

  public ExpressionFunction() {
    super("expression");
  }

  @Override
  public SEXP apply(Context context, Environment rho, FunctionCall call, PairList args) {
    NamesBuilder names = NamesBuilder.withInitialLength(0);
    List<SEXP> expressions = Lists.newArrayList();
    for(PairList.Node node : args.nodes()) {
      names.add(node.getName());
      expressions.add(node.getValue());
    }
    AttributeMap.Builder attributes = AttributeMap.builder();
    if(names.haveNames()) {
      attributes.setNames((StringVector)names.build());
    }
    return new ExpressionVector(expressions, attributes.build());
  }
}
TOP

Related Classes of org.renjin.primitives.special.ExpressionFunction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.