Package org.renjin.gcc.translate.type

Source Code of org.renjin.gcc.translate.type.PrimitiveTypes

package org.renjin.gcc.translate.type;

import org.renjin.gcc.gimple.type.*;
import org.renjin.gcc.jimple.JimpleType;
import org.renjin.gcc.jimple.RealJimpleType;
import org.renjin.gcc.runtime.CharPtr;
import org.renjin.gcc.runtime.DoublePtr;
import org.renjin.gcc.runtime.IntPtr;
import org.renjin.gcc.runtime.LongPtr;

public class PrimitiveTypes {


  public static JimpleType getArrayType(GimplePrimitiveType type) {
    if (type instanceof GimpleRealType) {
      if (((GimpleRealType) type).getPrecision() == 64) {
        return new RealJimpleType(double[].class);
      } else if (((GimpleRealType) type).getPrecision() == 32) {
        return new RealJimpleType(float[].class);
      }
    } else if (type instanceof GimpleIntegerType) {
      int precision = ((GimpleIntegerType) type).getPrecision();
      switch(precision) {
      case 8:
        return new RealJimpleType(char[].class);
      case 32:
        return new RealJimpleType(int[].class);
      case 64:
        return new RealJimpleType(long[].class);
      }
    } else if (type instanceof GimpleBooleanType) {
      return new RealJimpleType(boolean[].class);
    }
    throw new UnsupportedOperationException(type.toString());
  }

  public static JimpleType getWrapperType(GimplePrimitiveType type) {
    if (type instanceof GimpleRealType) {
      if (((GimpleRealType) type).getPrecision() == 64) {
        return new RealJimpleType(DoublePtr.class);
      } else if (((GimpleRealType) type).getPrecision() == 32) {
        // TODO
      }
    } else if (type instanceof GimpleIntegerType) {
      int precision = ((GimpleIntegerType) type).getPrecision();
      switch(precision) {
      case 8:
        return new RealJimpleType(CharPtr.class);
      case 32:
        return new RealJimpleType(IntPtr.class);
      case 64:
        return new RealJimpleType(LongPtr.class);
      }
    } else if (type instanceof GimpleBooleanType) {
      // TODO
    }
    throw new UnsupportedOperationException(type.toString());
  }
}
TOP

Related Classes of org.renjin.gcc.translate.type.PrimitiveTypes

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.