public override int GetHashCode()
{
int code = (int) var.type;
switch( type )
{
case VarType.Null: break;
case VarType.Bool: code ^= var.data.B << 8; break;
case VarType.Int: code ^= var.data.I.GetHashCode(); break;
case VarType.Real: code ^= var.data.R.GetHashCode(); break;
case VarType.String: // union pointer overlap
case VarType.Func:
case VarType.CFunc:
case VarType.Object:
case VarType.Ptr:
case VarType.Thread: code ^= var.data.P.GetHashCode(); break;
default: throw new SGSException( RC.EINVAL, string.Format( "invalid variable type ({0})", type ) );
}
return code;
}