1
/////////////////////////////////////////////////////////////////////////////
2
// Name: wx/numformatter.h
3
// Purpose: wxNumberFormatter class
4
// Author: Fulvio Senore, Vadim Zeitlin
6
// Copyright: (c) 2010 wxWidgets team
7
// Licence: wxWindows licence
8
/////////////////////////////////////////////////////////////////////////////
10
#ifndef _WX_NUMFORMATTER_H_
11
#define _WX_NUMFORMATTER_H_
13
#include "wx/string.h"
15
// Helper class for formatting numbers with thousands separators which also
16
// supports parsing the numbers formatted by it.
17
class WXDLLIMPEXP_BASE wxNumberFormatter
20
// Bit masks for ToString()
24
Style_WithThousandsSep = 0x01,
25
Style_NoTrailingZeroes = 0x02 // Only for floating point numbers
28
// Format a number as a string. By default, the thousands separator is
29
// used, specify Style_None to prevent this. For floating point numbers,
30
// precision can also be specified.
31
static wxString ToString(long val,
32
int style = Style_WithThousandsSep);
33
#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
34
static wxString ToString(wxLongLong_t val,
35
int style = Style_WithThousandsSep);
36
#endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
37
static wxString ToString(double val,
39
int style = Style_WithThousandsSep);
41
// Parse a string representing a number, possibly with thousands separator.
43
// Return true on success and stores the result in the provided location
44
// which must be a valid non-NULL pointer.
45
static bool FromString(wxString s, long *val);
46
#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
47
static bool FromString(wxString s, wxLongLong_t *val);
48
#endif // wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
49
static bool FromString(wxString s, double *val);
52
// Get the decimal separator for the current locale. It is always defined
53
// and we fall back to returning '.' in case of an error.
54
static wxChar GetDecimalSeparator();
56
// Get the thousands separator if grouping of the digits is used by the
57
// current locale. The value returned in sep should be only used if the
58
// function returns true.
59
static bool GetThousandsSeparatorIfUsed(wxChar *sep);
62
// Post-process the string representing an integer.
63
static wxString PostProcessIntString(wxString s, int style);
65
// Add the thousands separators to a string representing a number without
66
// the separators. This is used by ToString(Style_WithThousandsSep).
67
static void AddThousandsSeparators(wxString& s);
69
// Remove trailing zeroes and, if there is nothing left after it, the
70
// decimal separator itself from a string representing a floating point
71
// number. Also used by ToString().
72
static void RemoveTrailingZeroes(wxString& s);
74
// Remove all thousands separators from a string representing a number.
75
static void RemoveThousandsSeparators(wxString& s);
78
#endif // _WX_NUMFORMATTER_H_