ICU 57.1 57.1
scientificnumberformatter.h
Go to the documentation of this file.
1/*
2**********************************************************************
3* Copyright (c) 2014-2016, International Business Machines
4* Corporation and others. All Rights Reserved.
5**********************************************************************
6*/
7#ifndef SCINUMBERFORMATTER_H
8#define SCINUMBERFORMATTER_H
9
10#include "unicode/utypes.h"
11
12#if !UCONFIG_NO_FORMATTING
13
14
15#include "unicode/unistr.h"
16
23
25class DecimalFormatStaticSets;
27class DecimalFormat;
28class Formattable;
29
50public:
51
63 DecimalFormat *fmtToAdopt, UErrorCode &status);
64
75 const Locale &locale, UErrorCode &status);
76
77
91 DecimalFormat *fmtToAdopt,
92 const UnicodeString &beginMarkup,
93 const UnicodeString &endMarkup,
94 UErrorCode &status);
95
108 const Locale &locale,
109 const UnicodeString &beginMarkup,
110 const UnicodeString &endMarkup,
111 UErrorCode &status);
112
113
119 return new ScientificNumberFormatter(*this);
120 }
121
127
139 const Formattable &number,
140 UnicodeString &appendTo,
141 UErrorCode &status) const;
142 private:
143 class U_I18N_API Style : public UObject {
144 public:
145 virtual Style *clone() const = 0;
146 protected:
147 virtual UnicodeString &format(
148 const UnicodeString &original,
150 const UnicodeString &preExponent,
151 const DecimalFormatStaticSets &decimalFormatSets,
152 UnicodeString &appendTo,
153 UErrorCode &status) const = 0;
154 private:
155 friend class ScientificNumberFormatter;
156 };
157
158 class U_I18N_API SuperscriptStyle : public Style {
159 public:
160 virtual Style *clone() const;
161 protected:
162 virtual UnicodeString &format(
163 const UnicodeString &original,
165 const UnicodeString &preExponent,
166 const DecimalFormatStaticSets &decimalFormatSets,
167 UnicodeString &appendTo,
168 UErrorCode &status) const;
169 };
170
171 class U_I18N_API MarkupStyle : public Style {
172 public:
173 MarkupStyle(
174 const UnicodeString &beginMarkup,
175 const UnicodeString &endMarkup)
176 : Style(),
177 fBeginMarkup(beginMarkup),
178 fEndMarkup(endMarkup) { }
179 virtual Style *clone() const;
180 protected:
181 virtual UnicodeString &format(
182 const UnicodeString &original,
184 const UnicodeString &preExponent,
185 const DecimalFormatStaticSets &decimalFormatSets,
186 UnicodeString &appendTo,
187 UErrorCode &status) const;
188 private:
189 UnicodeString fBeginMarkup;
190 UnicodeString fEndMarkup;
191 };
192
194 DecimalFormat *fmtToAdopt,
195 Style *styleToAdopt,
196 UErrorCode &status);
197
200
201 static void getPreExponent(
202 const DecimalFormatSymbols &dfs, UnicodeString &preExponent);
203
204 static ScientificNumberFormatter *createInstance(
205 DecimalFormat *fmtToAdopt,
206 Style *styleToAdopt,
207 UErrorCode &status);
208
209 UnicodeString fPreExponent;
210 DecimalFormat *fDecimalFormat;
211 Style *fStyle;
212 const DecimalFormatStaticSets *fStaticSets;
213
214};
215
217
218
219#endif /* !UCONFIG_NO_FORMATTING */
220#endif
This class represents the set of symbols needed by DecimalFormat to format numbers.
Definition: dcfmtsym.h:84
DecimalFormat is a concrete subclass of NumberFormat that formats decimal numbers.
Definition: decimfmt.h:667
FieldPositionIterator returns the field ids and their start/limit positions generated by a call to Fo...
Definition: fpositer.h:53
Formattable objects can be passed to the Format class or its subclasses for formatting.
Definition: fmtable.h:66
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:185
A formatter that formats numbers in user-friendly scientific notation.
static ScientificNumberFormatter * createMarkupInstance(DecimalFormat *fmtToAdopt, const UnicodeString &beginMarkup, const UnicodeString &endMarkup, UErrorCode &status)
Creates a ScientificNumberFormatter instance that uses markup for exponents.
virtual ~ScientificNumberFormatter()
Destructor.
UnicodeString & format(const Formattable &number, UnicodeString &appendTo, UErrorCode &status) const
Formats a number into user friendly scientific notation.
static ScientificNumberFormatter * createMarkupInstance(const Locale &locale, const UnicodeString &beginMarkup, const UnicodeString &endMarkup, UErrorCode &status)
Creates a ScientificNumberFormatter instance that uses markup for exponents for this locale.
static ScientificNumberFormatter * createSuperscriptInstance(const Locale &locale, UErrorCode &status)
Creates a ScientificNumberFormatter instance that uses superscript characters for exponents for this ...
ScientificNumberFormatter * clone() const
Returns a copy of this object.
static ScientificNumberFormatter * createSuperscriptInstance(DecimalFormat *fmtToAdopt, UErrorCode &status)
Creates a ScientificNumberFormatter instance that uses superscript characters for exponents.
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:221
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:294
C++ API: Unicode String.
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers,...
Definition: utypes.h:476
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition: utypes.h:358
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129