2
********************************************************************************
3
* Copyright (C) 2005-2007, International Business Machines
4
* Corporation and others. All Rights Reserved.
5
********************************************************************************
9
********************************************************************************
15
#include "unicode/utypes.h"
19
#include "unicode/format.h"
20
#include "unicode/datefmt.h"
21
#include "unicode/calendar.h"
22
#include "unicode/ustring.h"
23
#include "unicode/locid.h"
25
#if !UCONFIG_NO_FORMATTING
29
* \brief C++ API: Format numbers using Windows API.
36
class Win32NumberFormat : public NumberFormat
39
Win32NumberFormat(const Locale &locale, UBool currency, UErrorCode &status);
41
Win32NumberFormat(const Win32NumberFormat &other);
43
virtual ~Win32NumberFormat();
45
virtual Format *clone(void) const;
47
Win32NumberFormat &operator=(const Win32NumberFormat &other);
50
* Format a double number. Concrete subclasses must implement
51
* these pure virtual methods.
53
* @param number The value to be formatted.
54
* @param appendTo Output parameter to receive result.
55
* Result is appended to existing contents.
56
* @param pos On input: an alignment field, if desired.
57
* On output: the offsets of the alignment field.
58
* @return Reference to 'appendTo' parameter.
61
virtual UnicodeString& format(double number,
62
UnicodeString& appendTo,
63
FieldPosition& pos) const;
65
* Format a long number. Concrete subclasses must implement
66
* these pure virtual methods.
68
* @param number The value to be formatted.
69
* @param appendTo Output parameter to receive result.
70
* Result is appended to existing contents.
71
* @param pos On input: an alignment field, if desired.
72
* On output: the offsets of the alignment field.
73
* @return Reference to 'appendTo' parameter.
76
virtual UnicodeString& format(int32_t number,
77
UnicodeString& appendTo,
78
FieldPosition& pos) const;
81
* Format an int64 number.
83
* @param number The value to be formatted.
84
* @param appendTo Output parameter to receive result.
85
* Result is appended to existing contents.
86
* @param pos On input: an alignment field, if desired.
87
* On output: the offsets of the alignment field.
88
* @return Reference to 'appendTo' parameter.
91
virtual UnicodeString& format(int64_t number,
92
UnicodeString& appendTo,
93
FieldPosition& pos) const;
95
// Use the default behavior for the following.
96
// virtual UnicodeString &format(double number, UnicodeString &appendTo) const;
97
// virtual UnicodeString &format(int32_t number, UnicodeString &appendTo) const;
98
// virtual UnicodeString &format(int64_t number, UnicodeString &appendTo) const;
100
virtual void parse(const UnicodeString& text, Formattable& result, ParsePosition& parsePosition) const;
103
* Sets the maximum number of digits allowed in the fraction portion of a
104
* number. maximumFractionDigits must be >= minimumFractionDigits. If the
105
* new value for maximumFractionDigits is less than the current value
106
* of minimumFractionDigits, then minimumFractionDigits will also be set to
108
* @param newValue the new value to be set.
109
* @see getMaximumFractionDigits
112
virtual void setMaximumFractionDigits(int32_t newValue);
115
* Sets the minimum number of digits allowed in the fraction portion of a
116
* number. minimumFractionDigits must be <= maximumFractionDigits. If the
117
* new value for minimumFractionDigits exceeds the current value
118
* of maximumFractionDigits, then maximumIntegerDigits will also be set to
120
* @param newValue the new value to be set.
121
* @see getMinimumFractionDigits
124
virtual void setMinimumFractionDigits(int32_t newValue);
127
* Return the class ID for this class. This is useful only for comparing to
128
* a return value from getDynamicClassID(). For example:
130
* . Base* polymorphic_pointer = createPolymorphicObject();
131
* . if (polymorphic_pointer->getDynamicClassID() ==
132
* . erived::getStaticClassID()) ...
134
* @return The class ID for all objects of this class.
137
U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
140
* Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This
141
* method is to implement a simple version of RTTI, since not all C++
142
* compilers support genuine RTTI. Polymorphic operator==() and clone()
143
* methods call this method.
145
* @return The class ID for this object. All objects of a
146
* given class have the same class ID. Objects of
147
* other classes have different class IDs.
150
virtual UClassID getDynamicClassID(void) const;
153
UnicodeString &format(int32_t numDigits, UnicodeString &appendTo, wchar_t *format, ...) const;
157
FormatInfo *fFormatInfo;
158
UBool fFractionDigitsSet;
164
#endif /* #if !UCONFIG_NO_FORMATTING */
166
#endif // #ifdef U_WINDOWS