public override void Translate( ScriptCompiler compiler, AbstractNode node )
{
ObjectAbstractNode obj = (ObjectAbstractNode)node;
if ( obj != null )
{
if ( string.IsNullOrEmpty( obj.Name ) )
{
compiler.AddError( CompileErrorCode.ObjectNameExpected, obj.File, obj.Line,
"gpu program object must have names" );
return;
}
}
else
{
compiler.AddError( CompileErrorCode.ObjectNameExpected, obj.File, obj.Line,
"gpu program object must have names" );
return;
}
// Must have a language type
if ( obj.Values.Count == 0 )
{
compiler.AddError( CompileErrorCode.StringExpected, obj.File, obj.Line,
"gpu program object require language declarations" );
return;
}
// Get the language
string language;
if ( !getString( obj.Values[ 0 ], out language ) )
{
compiler.AddError( CompileErrorCode.InvalidParameters, obj.File, obj.Line );
return;
}
if ( language == "asm" )
_translateGpuProgram( compiler, obj );
else if ( language == "unified" )
_translateUnifiedGpuProgram( compiler, obj );
else
_translateHighLevelGpuProgram( compiler, obj );
}