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