//----------------------------------------------------------------------------- HRESULT String::Cast( const DataType& type ) { switch( type.Type() ) { case SASVT_STRING: return Set( ((String&)type).Get() ); } return E_FAIL; }
//----------------------------------------------------------------------------- bool DataType::Equal( const DataType& a, const DataType& b ) { if( a.Type() != b.Type() ) return false; switch( a.Type() ) { case SASVT_BOOL: return Bool::Equal( (Bool&)a, (Bool&)b ); case SASVT_INT: return Int::Equal( (Int&)a, (Int&)b ); case SASVT_FLOAT: return Float::Equal( (Float&)a, (Float&)b ); case SASVT_STRING: return String::Equal( (String&)a, (String&)b ); case SASVT_TEXTURE: return Texture::Equal( (Texture&)a, (Texture&)b ); case SASVT_TEXTURE1D: return Texture1D::Equal( (Texture1D&)a, (Texture1D&)b ); case SASVT_TEXTURE2D: return Texture2D::Equal( (Texture2D&)a, (Texture2D&)b ); case SASVT_TEXTURE3D: return Texture3D::Equal( (Texture3D&)a, (Texture3D&)b ); case SASVT_TEXTURECUBE: return TextureCube::Equal( (TextureCube&)a, (TextureCube&)b ); } return false; }
//-------------------------------------------------------------------------------------- HRESULT BoundValueTable::SetValue( BindAddressHandle handle, const DataType& DataType ) { switch( DataType.Type() ) { case SASVT_BOOL: case SASVT_INT: case SASVT_FLOAT: return SetValue( handle, Scalar( DataType ) ); default: return SetValue( handle, Object( DataType ) ); } }
//-------------------------------------------------------------------------------------- HRESULT Value::Cast( const DataType& DataType ) { switch( DataType.Type() ) { case SASVT_BOOL: case SASVT_INT: case SASVT_FLOAT: return Cast( Scalar(DataType) ); default: return Cast( Object(DataType) ); } };
//----------------------------------------------------------------------------- HRESULT Float::Cast( const DataType& type ) { switch( type.Type() ) { case SASVT_BOOL: m_Value = ((Bool&)type).Get() ? 1.0f : 0.0f; return S_OK; case SASVT_INT: m_Value = (float)((Int&)type).Get(); return S_OK; case SASVT_FLOAT: m_Value = ((Float&)type).Get(); return S_OK; } return E_FAIL; }
HRESULT Texture::Cast( const DataType& type ) { switch( type.Type() ) { case SASVT_TEXTURE: Set( ((Texture&)type).Get() ); return S_OK; case SASVT_TEXTURE1D: Set( ((Texture1D&)type).Get() ); return S_OK; case SASVT_TEXTURE2D: Set( ((Texture2D&)type).Get() ); return S_OK; case SASVT_TEXTURE3D: Set( ((Texture3D&)type).Get() ); return S_OK; case SASVT_TEXTURECUBE: Set( ((TextureCube&)type).Get() ); return S_OK; } return E_FAIL; }
Object::Object( const DataType& value ) : Value(SASVC_OBJECT, value.Type()), m_pDataType(NULL) { Set(&value); }
Scalar::Scalar( const DataType& value ) : Value(SASVC_SCALAR, value.Type()), m_pDataType(NULL) { Set(&value); }