ICU 62.1 62.1
scientificnumberformatter.h
Go to the documentation of this file.
1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3/*
4**********************************************************************
5* Copyright (c) 2014-2016, International Business Machines
6* Corporation and others. All Rights Reserved.
7**********************************************************************
8*/
9#ifndef SCINUMBERFORMATTER_H
10#define SCINUMBERFORMATTER_H
11
12#include "unicode/utypes.h"
13
14#if !UCONFIG_NO_FORMATTING
15
16
17#include "unicode/unistr.h"
18
25
26class FieldPositionIterator;
27class DecimalFormatSymbols;
28class DecimalFormat;
29class Formattable;
30
51public:
52
65
76 const Locale &locale, UErrorCode &status);
77
78
96
109 const Locale &locale,
113
114
120 return new ScientificNumberFormatter(*this);
121 }
122
128
140 const Formattable &number,
141 UnicodeString &appendTo,
142 UErrorCode &status) const;
143 private:
144 class U_I18N_API Style : public UObject {
145 public:
146 virtual Style *clone() const = 0;
147 protected:
148 virtual UnicodeString &format(
149 const UnicodeString &original,
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,
166 UnicodeString &appendTo,
167 UErrorCode &status) const;
168 };
169
170 class U_I18N_API MarkupStyle : public Style {
171 public:
172 MarkupStyle(
173 const UnicodeString &beginMarkup,
174 const UnicodeString &endMarkup)
175 : Style(),
176 fBeginMarkup(beginMarkup),
177 fEndMarkup(endMarkup) { }
178 virtual Style *clone() const;
179 protected:
180 virtual UnicodeString &format(
181 const UnicodeString &original,
182 FieldPositionIterator &fpi,
183 const UnicodeString &preExponent,
184 UnicodeString &appendTo,
185 UErrorCode &status) const;
186 private:
187 UnicodeString fBeginMarkup;
188 UnicodeString fEndMarkup;
189 };
190
191 ScientificNumberFormatter(
192 DecimalFormat *fmtToAdopt,
193 Style *styleToAdopt,
194 UErrorCode &status);
195
196 ScientificNumberFormatter(const ScientificNumberFormatter &other);
197 ScientificNumberFormatter &operator=(const ScientificNumberFormatter &);
198
199 static void getPreExponent(
200 const DecimalFormatSymbols &dfs, UnicodeString &preExponent);
201
202 static ScientificNumberFormatter *createInstance(
203 DecimalFormat *fmtToAdopt,
204 Style *styleToAdopt,
205 UErrorCode &status);
206
207 UnicodeString fPreExponent;
208 DecimalFormat *fDecimalFormat;
209 Style *fStyle;
210
211};
212
214
215
216#endif /* !UCONFIG_NO_FORMATTING */
217#endif
FieldPositionIterator returns the field ids and their start/limit positions generated by a call to Fo...
Definition fpositer.h:55
Formattable objects can be passed to the Format class or its subclasses for formatting.
Definition fmtable.h:62
"Smart pointer" base class; do not use directly: use LocalPointer etc.
A Locale object represents a specific geographical, political, or cultural region.
Definition locid.h:188
A formatter that formats numbers in user-friendly scientific notation.
static ScientificNumberFormatter * createSuperscriptInstance(DecimalFormat *fmtToAdopt, UErrorCode &status)
Creates a ScientificNumberFormatter instance that uses superscript characters for exponents.
static ScientificNumberFormatter * createMarkupInstance(DecimalFormat *fmtToAdopt, const UnicodeString &beginMarkup, const UnicodeString &endMarkup, UErrorCode &status)
Creates a ScientificNumberFormatter instance that uses markup for exponents.
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 ...
virtual ~ScientificNumberFormatter()
Destructor.
UnicodeString & format(const Formattable &number, UnicodeString &appendTo, UErrorCode &status) const
Formats a number into user friendly scientific notation.
ScientificNumberFormatter * clone() const
Returns a copy of this object.
UObject is the common ICU "boilerplate" class.
Definition uobject.h:223
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition unistr.h:287
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:396
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition utypes.h:360
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition uversion.h:138
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition uversion.h:137