Exemple #1
0
    HRESULT FormatBasicValue( const DataObject& objVal, int radix, std::wstring& outStr )
    {
        _ASSERT( objVal._Type->IsBasic() );

        HRESULT hr = S_OK;
        Type*   type = NULL;

        if ( (objVal._Type == NULL) || !objVal._Type->IsScalar() )
            return E_FAIL;

        type = objVal._Type;

        if ( type->IsBool() )
        {
            hr = FormatBool( objVal, outStr );
        }
        else if ( type->IsChar() )
        {
            hr = FormatChar( objVal, radix, outStr );
        }
        else if ( type->IsIntegral() )
        {
            hr = FormatInt( objVal, radix, outStr );
        }
        else if ( type->IsComplex() )
        {
            hr = FormatComplex( objVal, outStr );
        }
        else if ( type->IsReal() )
        {
            hr = FormatSimpleReal( objVal.Value.Float80Value, outStr );
        }
        else if ( type->IsImaginary() )
        {
            hr = FormatSimpleReal( objVal.Value.Float80Value, outStr );
            outStr.append( 1, L'i' );
        }
        else
            return E_FAIL;

        if ( FAILED( hr ) )
            return hr;

        return S_OK;
    }