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; }