コード例 #1
0
ファイル: FormatValue.cpp プロジェクト: aBothe/MagoWrapper
    HRESULT FormatValue( IValueBinder* binder, const DataObject& objVal, int radix, std::wstring& outStr )
    {
        HRESULT hr = S_OK;
        Type*   type = NULL;

        type = objVal._Type;

        if ( type == NULL )
            return E_FAIL;

        if ( type->IsPointer() )
        {
            hr = FormatPointer( binder, objVal, outStr );
        }
        else if ( type->IsBasic() )
        {
            hr = FormatBasicValue( objVal, radix, outStr );
        }
        else if ( type->AsTypeEnum() != NULL )
        {
            hr = FormatEnum( objVal, radix, outStr );
        }
        else if ( type->IsSArray() )
        {
            hr = FormatSArray( binder, objVal.Addr, objVal._Type, radix, outStr );
        }
        else if ( type->IsDArray() )
        {
            hr = FormatDArray( binder, objVal.Value.Array, objVal._Type, radix, outStr );
        }
        else if ( type->IsAArray() )
        {
            hr = FormatAArray( objVal.Value.Addr, objVal._Type, radix, outStr );
        }
        else if ( type->AsTypeStruct() )
        {
            hr = FormatStruct( binder, objVal.Addr, type, radix, outStr );
        }
        else
            hr = E_FAIL;

        if ( FAILED( hr ) )
            return hr;

        return S_OK;
    }