PATH:
usr
/
include
/
unicode
// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /* ********************************************************************** * Copyright (c) 2014-2016, International Business Machines * Corporation and others. All Rights Reserved. ********************************************************************** */ #ifndef SCINUMBERFORMATTER_H #define SCINUMBERFORMATTER_H #include "unicode/utypes.h" #if U_SHOW_CPLUSPLUS_API #if !UCONFIG_NO_FORMATTING #include "unicode/unistr.h" /** * \file * \brief C++ API: Formats in scientific notation. */ U_NAMESPACE_BEGIN class FieldPositionIterator; class DecimalFormatSymbols; class DecimalFormat; class Formattable; /** * A formatter that formats numbers in user-friendly scientific notation. * * Sample code: * <pre> * UErrorCode status = U_ZERO_ERROR; * LocalPointer<ScientificNumberFormatter> fmt( * ScientificNumberFormatter::createMarkupInstance( * "en", "<sup>", "</sup>", status)); * if (U_FAILURE(status)) { * return; * } * UnicodeString appendTo; * // appendTo = "1.23456x10<sup>-78</sup>" * fmt->format(1.23456e-78, appendTo, status); * </pre> * * @stable ICU 55 */ class U_I18N_API ScientificNumberFormatter : public UObject { public: /** * Creates a ScientificNumberFormatter instance that uses * superscript characters for exponents. * @param fmtToAdopt The DecimalFormat which must be configured for * scientific notation. * @param status error returned here. * @return The new ScientificNumberFormatter instance. * * @stable ICU 55 */ static ScientificNumberFormatter *createSuperscriptInstance( DecimalFormat *fmtToAdopt, UErrorCode &status); /** * Creates a ScientificNumberFormatter instance that uses * superscript characters for exponents for this locale. * @param locale The locale * @param status error returned here. * @return The ScientificNumberFormatter instance. * * @stable ICU 55 */ static ScientificNumberFormatter *createSuperscriptInstance( const Locale &locale, UErrorCode &status); /** * Creates a ScientificNumberFormatter instance that uses * markup for exponents. * @param fmtToAdopt The DecimalFormat which must be configured for * scientific notation. * @param beginMarkup the markup to start superscript. * @param endMarkup the markup to end superscript. * @param status error returned here. * @return The new ScientificNumberFormatter instance. * * @stable ICU 55 */ static ScientificNumberFormatter *createMarkupInstance( DecimalFormat *fmtToAdopt, const UnicodeString &beginMarkup, const UnicodeString &endMarkup, UErrorCode &status); /** * Creates a ScientificNumberFormatter instance that uses * markup for exponents for this locale. * @param locale The locale * @param beginMarkup the markup to start superscript. * @param endMarkup the markup to end superscript. * @param status error returned here. * @return The ScientificNumberFormatter instance. * * @stable ICU 55 */ static ScientificNumberFormatter *createMarkupInstance( const Locale &locale, const UnicodeString &beginMarkup, const UnicodeString &endMarkup, UErrorCode &status); /** * Returns a copy of this object. Caller must free returned copy. * @stable ICU 55 */ ScientificNumberFormatter *clone() const { return new ScientificNumberFormatter(*this); } /** * Destructor. * @stable ICU 55 */ virtual ~ScientificNumberFormatter(); /** * Formats a number into user friendly scientific notation. * * @param number the number to format. * @param appendTo formatted string appended here. * @param status any error returned here. * @return appendTo * * @stable ICU 55 */ UnicodeString &format( const Formattable &number, UnicodeString &appendTo, UErrorCode &status) const; private: class U_I18N_API Style : public UObject { public: virtual Style *clone() const = 0; protected: virtual UnicodeString &format( const UnicodeString &original, FieldPositionIterator &fpi, const UnicodeString &preExponent, UnicodeString &appendTo, UErrorCode &status) const = 0; private: friend class ScientificNumberFormatter; }; class U_I18N_API SuperscriptStyle : public Style { public: virtual SuperscriptStyle *clone() const; protected: virtual UnicodeString &format( const UnicodeString &original, FieldPositionIterator &fpi, const UnicodeString &preExponent, UnicodeString &appendTo, UErrorCode &status) const; }; class U_I18N_API MarkupStyle : public Style { public: MarkupStyle( const UnicodeString &beginMarkup, const UnicodeString &endMarkup) : Style(), fBeginMarkup(beginMarkup), fEndMarkup(endMarkup) { } virtual MarkupStyle *clone() const; protected: virtual UnicodeString &format( const UnicodeString &original, FieldPositionIterator &fpi, const UnicodeString &preExponent, UnicodeString &appendTo, UErrorCode &status) const; private: UnicodeString fBeginMarkup; UnicodeString fEndMarkup; }; ScientificNumberFormatter( DecimalFormat *fmtToAdopt, Style *styleToAdopt, UErrorCode &status); ScientificNumberFormatter(const ScientificNumberFormatter &other); ScientificNumberFormatter &operator=(const ScientificNumberFormatter &); static void getPreExponent( const DecimalFormatSymbols &dfs, UnicodeString &preExponent); static ScientificNumberFormatter *createInstance( DecimalFormat *fmtToAdopt, Style *styleToAdopt, UErrorCode &status); UnicodeString fPreExponent; DecimalFormat *fDecimalFormat; Style *fStyle; }; U_NAMESPACE_END #endif /* !UCONFIG_NO_FORMATTING */ #endif /* U_SHOW_CPLUSPLUS_API */ #endif
[+]
..
[-] caniter.h
[edit]
[-] messagepattern.h
[edit]
[-] stringpiece.h
[edit]
[-] icudataver.h
[edit]
[-] normalizer2.h
[edit]
[-] schriter.h
[edit]
[-] utf.h
[edit]
[-] casemap.h
[edit]
[-] rbtz.h
[edit]
[-] measfmt.h
[edit]
[-] ustream.h
[edit]
[-] translit.h
[edit]
[-] dcfmtsym.h
[edit]
[-] simpleformatter.h
[edit]
[-] uversion.h
[edit]
[-] ucharstrie.h
[edit]
[-] localebuilder.h
[edit]
[-] tztrans.h
[edit]
[-] utf_old.h
[edit]
[-] ucal.h
[edit]
[-] utext.h
[edit]
[-] formattedvalue.h
[edit]
[-] uchriter.h
[edit]
[-] ucnv_cb.h
[edit]
[-] ucpmap.h
[edit]
[-] normlzr.h
[edit]
[-] utf16.h
[edit]
[-] alphaindex.h
[edit]
[-] ugender.h
[edit]
[-] bytestream.h
[edit]
[-] uobject.h
[edit]
[-] uenum.h
[edit]
[-] bytestrie.h
[edit]
[-] ulistformatter.h
[edit]
[-] ucharstriebuilder.h
[edit]
[-] tblcoll.h
[edit]
[-] parseerr.h
[edit]
[-] idna.h
[edit]
[-] appendable.h
[edit]
[-] ustdio.h
[edit]
[-] ucnv_err.h
[edit]
[-] unorm.h
[edit]
[-] ubidi.h
[edit]
[-] localematcher.h
[edit]
[-] udata.h
[edit]
[-] uiter.h
[edit]
[-] uclean.h
[edit]
[-] unifunct.h
[edit]
[-] ucsdet.h
[edit]
[-] tznames.h
[edit]
[-] ures.h
[edit]
[-] numfmt.h
[edit]
[-] msgfmt.h
[edit]
[-] listformatter.h
[edit]
[-] dtrule.h
[edit]
[-] bytestriebuilder.h
[edit]
[-] selfmt.h
[edit]
[-] plurrule.h
[edit]
[-] dbbi.h
[edit]
[-] localpointer.h
[edit]
[-] ucasemap.h
[edit]
[-] umachine.h
[edit]
[-] uspoof.h
[edit]
[-] ucoleitr.h
[edit]
[-] std_string.h
[edit]
[-] unifilt.h
[edit]
[-] urename.h
[edit]
[-] smpdtfmt.h
[edit]
[-] vtzone.h
[edit]
[-] uregex.h
[edit]
[-] timezone.h
[edit]
[-] ubiditransform.h
[edit]
[-] ucurr.h
[edit]
[-] reldatefmt.h
[edit]
[-] dtptngen.h
[edit]
[-] gregocal.h
[edit]
[-] currpinf.h
[edit]
[-] utrans.h
[edit]
[-] unistr.h
[edit]
[-] ubrk.h
[edit]
[-] fpositer.h
[edit]
[-] ustring.h
[edit]
[-] uloc.h
[edit]
[-] unirepl.h
[edit]
[-] udatpg.h
[edit]
[-] usetiter.h
[edit]
[-] stringoptions.h
[edit]
[-] regex.h
[edit]
[-] ucnv.h
[edit]
[-] locid.h
[edit]
[-] stsearch.h
[edit]
[-] usprep.h
[edit]
[-] usearch.h
[edit]
[-] decimfmt.h
[edit]
[-] ucol.h
[edit]
[-] unimatch.h
[edit]
[-] umsg.h
[edit]
[-] uchar.h
[edit]
[-] curramt.h
[edit]
[-] nounit.h
[edit]
[-] uniset.h
[edit]
[-] enumset.h
[edit]
[-] calendar.h
[edit]
[-] tmutfmt.h
[edit]
[-] dtitvfmt.h
[edit]
[-] parsepos.h
[edit]
[-] dtintrv.h
[edit]
[-] basictz.h
[edit]
[-] scientificnumberformatter.h
[edit]
[-] umisc.h
[edit]
[-] sortkey.h
[edit]
[-] numberformatter.h
[edit]
[-] docmain.h
[edit]
[-] uformattable.h
[edit]
[-] ureldatefmt.h
[edit]
[-] compactdecimalformat.h
[edit]
[-] umutablecptrie.h
[edit]
[-] rbnf.h
[edit]
[-] ufieldpositer.h
[edit]
[-] fieldpos.h
[edit]
[-] chariter.h
[edit]
[-] coll.h
[edit]
[-] tzrule.h
[edit]
[-] currunit.h
[edit]
[-] utf32.h
[edit]
[-] unorm2.h
[edit]
[-] putil.h
[edit]
[-] icuplug.h
[edit]
[-] unumberformatter.h
[edit]
[-] uldnames.h
[edit]
[-] uconfig.h
[edit]
[-] udisplaycontext.h
[edit]
[-] uidna.h
[edit]
[-] ushape.h
[edit]
[-] ucat.h
[edit]
[-] region.h
[edit]
[-] utypes.h
[edit]
[-] ucptrie.h
[edit]
[-] resbund.h
[edit]
[-] filteredbrk.h
[edit]
[-] rep.h
[edit]
[-] dtfmtsym.h
[edit]
[-] dtitvinf.h
[edit]
[-] stringtriebuilder.h
[edit]
[-] utrace.h
[edit]
[-] tmutamt.h
[edit]
[-] utmscale.h
[edit]
[-] edits.h
[edit]
[-] gender.h
[edit]
[-] uregion.h
[edit]
[-] measure.h
[edit]
[-] udat.h
[edit]
[-] udateintervalformat.h
[edit]
[-] numsys.h
[edit]
[-] locdspnm.h
[edit]
[-] ptypes.h
[edit]
[-] coleitr.h
[edit]
[-] datefmt.h
[edit]
[-] unumsys.h
[edit]
[-] search.h
[edit]
[-] choicfmt.h
[edit]
[-] platform.h
[edit]
[-] measunit.h
[edit]
[-] upluralrules.h
[edit]
[-] tzfmt.h
[edit]
[-] tmunit.h
[edit]
[-] strenum.h
[edit]
[-] ulocdata.h
[edit]
[-] char16ptr.h
[edit]
[-] uformattedvalue.h
[edit]
[-] urep.h
[edit]
[-] ucnvsel.h
[edit]
[-] plurfmt.h
[edit]
[-] errorcode.h
[edit]
[-] unum.h
[edit]
[-] uset.h
[edit]
[-] format.h
[edit]
[-] ustringtrie.h
[edit]
[-] brkiter.h
[edit]
[-] uscript.h
[edit]
[-] rbbi.h
[edit]
[-] uvernum.h
[edit]
[-] utf8.h
[edit]
[-] fmtable.h
[edit]
[-] symtable.h
[edit]
[-] numberrangeformatter.h
[edit]
[-] simpletz.h
[edit]