Package org.renjin.invoke.reflection.converters

Source Code of org.renjin.invoke.reflection.converters.IntegerConverter

package org.renjin.invoke.reflection.converters;

import org.renjin.sexp.IntArrayVector;
import org.renjin.sexp.IntVector;
import org.renjin.sexp.SEXP;
import org.renjin.sexp.Vector;

/**
* Converter between a JVM {@code int} scalar value and the
*/
public class IntegerConverter extends PrimitiveScalarConverter<Number> {

  public static final IntegerConverter INSTANCE = new IntegerConverter();
 
  private IntegerConverter() {
  }

  @Override
  public SEXP convertToR(Number value) {
    if(value == null) {
      return new IntArrayVector(IntVector.NA);
    } else {
      return new IntArrayVector(value.intValue());
    }
  }

  public static boolean accept(Class clazz) {
    return
        clazz == Integer.TYPE || clazz == Integer.class ||
        clazz == Short.TYPE || clazz == Short.class;
  }

  @Override
  protected Object getFirstElement(Vector value) {
    return value.getElementAsInt(0);
  }

  @Override
  public boolean acceptsSEXP(SEXP exp) {
    return exp instanceof IntVector;// ||exp instanceof DoubleVector ;
//           exp instanceof LogicalVector;
  }

  @Override
  public int getSpecificity() {
    return Specificity.INTEGER;
  }
}
TOP

Related Classes of org.renjin.invoke.reflection.converters.IntegerConverter

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.