// precision can also be specified.
static wxString ToString(long val,
int style = Style_WithThousandsSep);
-
+#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+ static wxString ToString(wxLongLong_t val,
+ int style = Style_WithThousandsSep);
+#endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
static wxString ToString(double val,
int precision,
int style = Style_WithThousandsSep);
// Return true on success and stores the result in the provided location
// which must be a valid non-NULL pointer.
static bool FromString(wxString s, long *val);
+#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+ static bool FromString(wxString s, wxLongLong_t *val);
+#endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
static bool FromString(wxString s, double *val);
static bool GetThousandsSeparatorIfUsed(wxChar *sep);
private:
+ // Post-process the string representing an integer.
+ static wxString PostProcessIntString(wxString s, int style);
+
// Add the thousands separators to a string representing a number without
// the separators. This is used by ToString(Style_WithThousandsSep).
static void AddThousandsSeparators(wxString& s);
// Conversion to string and helpers
// ----------------------------------------------------------------------------
-wxString wxNumberFormatter::ToString(long val, int style)
+wxString wxNumberFormatter::PostProcessIntString(wxString s, int style)
{
- wxString s = wxString::Format("%ld", val);
-
if ( style & Style_WithThousandsSep )
AddThousandsSeparators(s);
return s;
}
+wxString wxNumberFormatter::ToString(long val, int style)
+{
+ return PostProcessIntString(wxString::Format("%ld", val), style);
+}
+
+#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+
+wxString wxNumberFormatter::ToString(wxLongLong_t val, int style)
+{
+ return PostProcessIntString(wxString::Format("%" wxLongLongFmtSpec "d", val),
+ style);
+}
+
+#endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+
wxString wxNumberFormatter::ToString(double val, int precision, int style)
{
const wxString fmt = wxString::Format("%%.%df", precision);
return s.ToLong(val);
}
+#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+
+bool wxNumberFormatter::FromString(wxString s, wxLongLong_t *val)
+{
+ RemoveThousandsSeparators(s);
+ return s.ToLongLong(val);
+}
+
+#endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+
bool wxNumberFormatter::FromString(wxString s, double *val)
{
RemoveThousandsSeparators(s);
private:
CPPUNIT_TEST_SUITE( NumFormatterTestCase );
CPPUNIT_TEST( LongToString );
+#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+ CPPUNIT_TEST( LongLongToString );
+#endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
CPPUNIT_TEST( DoubleToString );
CPPUNIT_TEST( NoTrailingZeroes );
CPPUNIT_TEST( LongFromString );
+#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+ CPPUNIT_TEST( LongLongFromString );
+#endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
CPPUNIT_TEST( DoubleFromString );
CPPUNIT_TEST_SUITE_END();
void LongToString();
+#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+ void LongLongToString();
+#endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
void DoubleToString();
void NoTrailingZeroes();
void LongFromString();
+#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+ void LongLongFromString();
+#endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
void DoubleFromString();
wxLocale *m_locale;
if ( !m_locale )
return;
- CPPUNIT_ASSERT_EQUAL( "1", wxNumberFormatter::ToString( 1));
- CPPUNIT_ASSERT_EQUAL( "12", wxNumberFormatter::ToString( 12));
- CPPUNIT_ASSERT_EQUAL( "123", wxNumberFormatter::ToString( 123));
- CPPUNIT_ASSERT_EQUAL( "1,234", wxNumberFormatter::ToString( 1234));
- CPPUNIT_ASSERT_EQUAL( "12,345", wxNumberFormatter::ToString( 12345));
- CPPUNIT_ASSERT_EQUAL( "123,456", wxNumberFormatter::ToString( 123456));
- CPPUNIT_ASSERT_EQUAL( "1,234,567", wxNumberFormatter::ToString( 1234567));
- CPPUNIT_ASSERT_EQUAL( "12,345,678", wxNumberFormatter::ToString( 12345678));
- CPPUNIT_ASSERT_EQUAL("123,456,789", wxNumberFormatter::ToString( 123456789));
+ CPPUNIT_ASSERT_EQUAL( "1", wxNumberFormatter::ToString( 1L));
+ CPPUNIT_ASSERT_EQUAL( "12", wxNumberFormatter::ToString( 12L));
+ CPPUNIT_ASSERT_EQUAL( "123", wxNumberFormatter::ToString( 123L));
+ CPPUNIT_ASSERT_EQUAL( "1,234", wxNumberFormatter::ToString( 1234L));
+ CPPUNIT_ASSERT_EQUAL( "12,345", wxNumberFormatter::ToString( 12345L));
+ CPPUNIT_ASSERT_EQUAL( "123,456", wxNumberFormatter::ToString( 123456L));
+ CPPUNIT_ASSERT_EQUAL( "1,234,567", wxNumberFormatter::ToString( 1234567L));
+ CPPUNIT_ASSERT_EQUAL( "12,345,678", wxNumberFormatter::ToString( 12345678L));
+ CPPUNIT_ASSERT_EQUAL("123,456,789", wxNumberFormatter::ToString( 123456789L));
}
+#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+
+void NumFormatterTestCase::LongLongToString()
+{
+ if ( !m_locale )
+ return;
+
+ CPPUNIT_ASSERT_EQUAL( "1", wxNumberFormatter::ToString(wxLL( 1)));
+ CPPUNIT_ASSERT_EQUAL( "12", wxNumberFormatter::ToString(wxLL( 12)));
+ CPPUNIT_ASSERT_EQUAL( "123", wxNumberFormatter::ToString(wxLL( 123)));
+ CPPUNIT_ASSERT_EQUAL( "1,234", wxNumberFormatter::ToString(wxLL( 1234)));
+ CPPUNIT_ASSERT_EQUAL( "12,345", wxNumberFormatter::ToString(wxLL( 12345)));
+ CPPUNIT_ASSERT_EQUAL( "123,456", wxNumberFormatter::ToString(wxLL( 123456)));
+ CPPUNIT_ASSERT_EQUAL( "1,234,567", wxNumberFormatter::ToString(wxLL( 1234567)));
+ CPPUNIT_ASSERT_EQUAL( "12,345,678", wxNumberFormatter::ToString(wxLL( 12345678)));
+ CPPUNIT_ASSERT_EQUAL("123,456,789", wxNumberFormatter::ToString(wxLL( 123456789)));
+}
+
+#endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+
void NumFormatterTestCase::DoubleToString()
{
if ( !m_locale )
CPPUNIT_ASSERT_EQUAL( 1234567, l );
}
+#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+
+void NumFormatterTestCase::LongLongFromString()
+{
+ if ( !m_locale )
+ return;
+
+ WX_ASSERT_FAILS_WITH_ASSERT
+ (
+ wxNumberFormatter::FromString("123", static_cast<wxLongLong_t *>(0))
+ );
+
+ wxLongLong_t l;
+ CPPUNIT_ASSERT( !wxNumberFormatter::FromString("", &l) );
+ CPPUNIT_ASSERT( !wxNumberFormatter::FromString("foo", &l) );
+ CPPUNIT_ASSERT( !wxNumberFormatter::FromString("1.234", &l) );
+
+ CPPUNIT_ASSERT( wxNumberFormatter::FromString("123", &l) );
+ CPPUNIT_ASSERT_EQUAL( 123, l );
+
+ CPPUNIT_ASSERT( wxNumberFormatter::FromString("1234", &l) );
+ CPPUNIT_ASSERT_EQUAL( 1234, l );
+
+ CPPUNIT_ASSERT( wxNumberFormatter::FromString("1,234", &l) );
+ CPPUNIT_ASSERT_EQUAL( 1234, l );
+
+ CPPUNIT_ASSERT( wxNumberFormatter::FromString("12,345", &l) );
+ CPPUNIT_ASSERT_EQUAL( 12345, l );
+
+ CPPUNIT_ASSERT( wxNumberFormatter::FromString("123,456", &l) );
+ CPPUNIT_ASSERT_EQUAL( 123456, l );
+
+ CPPUNIT_ASSERT( wxNumberFormatter::FromString("1,234,567", &l) );
+ CPPUNIT_ASSERT_EQUAL( 1234567, l );
+}
+
+#endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+
void NumFormatterTestCase::DoubleFromString()
{
if ( !m_locale )