/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.gosu.parser;
import gw.internal.gosu.parser.statements.SyntheticFunctionStatement;
import gw.lang.parser.GosuParserTypes;
import gw.lang.reflect.FunctionType;
import gw.lang.reflect.gs.IGosuClass;
import gw.lang.parser.ISymbol;
import gw.lang.parser.ISymbolTable;
import gw.lang.parser.ScriptPartId;
import gw.lang.reflect.gs.ICompilableType;
import gw.lang.reflect.IType;
import java.util.ArrayList;
/**
*/
public class VarPropertySetFunctionSymbol extends DynamicFunctionSymbol
{
private String _varIdentifier;
public VarPropertySetFunctionSymbol( ICompilableType gsClass, ISymbolTable symTable, String strProperty, String strVarIdentifier, IType varType )
{
super( symTable, '@' + strProperty,
new FunctionType( '@' + strProperty, GosuParserTypes.NULL_TYPE(), new IType[]{varType} ),
getSymbolArray( "__value_", varType ), new SyntheticFunctionStatement() );
SyntheticFunctionStatement stmt = (SyntheticFunctionStatement)getValueDirectly();
stmt.setDfsOwner( this );
_scriptPartId = new ScriptPartId( gsClass, null );
_varIdentifier = strVarIdentifier;
}
private static ArrayList<ISymbol> getSymbolArray( CharSequence strVarIdentifier, IType varType )
{
ArrayList<ISymbol> arr = new ArrayList<ISymbol>( 1 );
final Symbol symbol = new Symbol( strVarIdentifier.toString(), varType, null );
symbol._iIndex = 1;
arr.add( symbol );
return arr;
}
public String getVarIdentifier()
{
return _varIdentifier;
}
public DynamicFunctionSymbol getParameterizedVersion( IGosuClass gsClass )
{
return this;
}
}