/*
This example demonstrates the difference between XSIUtils.GetVariantType
and the JScript typeof() function.
*/
//INFO : typeof: number VariantType: siInt4
TestJScriptVariable( 49 ) ;
//INFO : typeof: number VariantType: siDouble
TestJScriptVariable( 49.1 ) ;
//INFO : typeof: boolean VariantType: siBool
TestJScriptVariable( true ) ;
//INFO : typeof: string VariantType: siString
TestJScriptVariable( "hello" ) ;
//INFO : typeof: undefined VariantType: siEmpty
TestJScriptVariable( undefined ) ;
//INFO : typeof: object VariantType: VT_NULL
TestJScriptVariable( null ) ;
// All Softimage objects show up as siDispatch
//INFO : typeof: object VariantType: siDispatch
TestJScriptVariable( ActiveSceneRoot ) ;
// So do these standard Automation objects
//INFO : typeof: object VariantType: siDispatch
TestJScriptVariable( new ActiveXObject( "Scripting.FileSystemObject" )) ;
// A JScript array also shows up as siDispatch
//INFO : typeof: object VariantType: siDispatch
TestJScriptVariable( new Array( "1","2","3" )) ;
// A VBScript error shows up differently than a JScript Array
//INFO : typeof: unknown VariantType: VBScript Array (Safearray)
TestJScriptVariable( Application.Workgroups )
// Even code shows up as an object in JScript
//INFO : typeof: function VariantType: siDispatch
TestJScriptVariable( TestJScriptVariable ) ;
function TestJScriptVariable( in_val )
{
Application.LogMessage( "typeof: " + typeof(in_val) + " VariantType: "
+ siVariantTypeToStr( XSIUtils.GetVariantType(in_val) ) );
}
function siVariantTypeToStr( in_vt )
{
//Demonstrate just the most common
switch ( in_vt ) {
case siEmpty :
return "siEmpty";
case 1 :
// 1 == VT_NULL, used by jscript "null"
return "VT_NULL";
case siInt2 :
return "siInt2";
case siInt4 :
return "siInt4";
case siFloat :
return "siFloat";
case siDouble :
return "siDouble";
case siString :
return "siString";
case siBool :
return "siBool";
case siDispatch :
return "siDispatch";
case siUnknown :
return "siUnknown";
case siByte :
return "siByte";
case siUByte :
return "siUByte";
case siUInt2 :
return "siUInt2";
case siUInt4 :
return "siUInt4";
case siUByte :
return "siUByte";
case 8204 :
// An array of Variants
// 8204 == VT_ARRAY | VT_VARIANT
return "VBScript Array (Safearray)"
default :
return in_vt.toString() ;
}
} |