Package org.renjin.gcc.translate.expr

Source Code of org.renjin.gcc.translate.expr.NewArrayExpr

package org.renjin.gcc.translate.expr;

import org.renjin.gcc.jimple.JimpleExpr;
import org.renjin.gcc.jimple.JimpleType;
import org.renjin.gcc.translate.FunctionContext;
import org.renjin.gcc.translate.type.ImIndirectType;
import org.renjin.gcc.translate.type.ImPrimitivePtrType;
import org.renjin.gcc.translate.type.ImPrimitiveType;

/**
* Created by IntelliJ IDEA.
* User: alexander
* Date: 6/25/13
* Time: 2:37 PM
* To change this template use File | Settings | File Templates.
*/
public class NewArrayExpr extends AbstractImExpr implements ImIndirectExpr {
  private final ImPrimitivePtrType type;
  private final JimpleExpr elementCountExpr;

  public NewArrayExpr(ImPrimitivePtrType type, JimpleExpr elementCountExpr) {
    this.type = type;
    this.elementCountExpr = elementCountExpr;
  }

  @Override
  public ArrayRef translateToArrayRef(FunctionContext context) {
    String arrayExpr = context.declareTemp(type.getArrayType());
    context.getBuilder().addAssignment(arrayExpr,
        new JimpleExpr(String.format("newarray (%s)[%s]", type.baseType().asJimple(), elementCountExpr)));

    return new ArrayRef(arrayExpr, 0);
  }

  @Override
  public ImIndirectType type() {
    return type;
  }
}
TOP

Related Classes of org.renjin.gcc.translate.expr.NewArrayExpr

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.