/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.lang.ir.builder.statement;
import gw.lang.ir.builder.IRStatementBuilder;
import gw.lang.ir.builder.IRBuilderContext;
import gw.lang.ir.builder.IRExpressionBuilder;
import gw.lang.ir.builder.IRArgConverter;
import gw.lang.ir.IRType;
import gw.lang.ir.IRStatement;
import gw.lang.ir.IRExpression;
import gw.lang.ir.statement.IRArrayStoreStatement;
import gw.lang.UnstableAPI;
@UnstableAPI
public class IRArrayStoreStatementBuilder extends IRStatementBuilder {
private IRExpressionBuilder _target;
private IRExpressionBuilder _index;
private IRExpressionBuilder _value;
public IRArrayStoreStatementBuilder(IRExpressionBuilder target, IRExpressionBuilder index, IRExpressionBuilder value) {
_target = target;
_index = index;
_value = value;
}
@Override
protected IRStatement buildImpl(IRBuilderContext context) {
IRExpression target = _target.build( context );
IRType componentType = target.getType().getComponentType();
IRExpression value = IRArgConverter.castOrConvertIfNecessary(componentType, _value.build( context ) );
return new IRArrayStoreStatement( target, _index.build( context ), value, componentType );
}
}