Index: source/i18n/unicode/scientificformathelper.h |
diff --git a/source/i18n/unicode/scientificformathelper.h b/source/i18n/unicode/scientificformathelper.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e5b53794e68b97f40b1cab8ac05a4435c417f369 |
--- /dev/null |
+++ b/source/i18n/unicode/scientificformathelper.h |
@@ -0,0 +1,139 @@ |
+/* |
+********************************************************************** |
+* Copyright (c) 2014, International Business Machines |
+* Corporation and others. All Rights Reserved. |
+********************************************************************** |
+*/ |
+#ifndef SCIFORMATHELPER_H |
+#define SCIFORMATHELPER_H |
+ |
+#include "unicode/utypes.h" |
+ |
+#if !UCONFIG_NO_FORMATTING |
+ |
+#ifndef U_HIDE_DRAFT_API |
+ |
+#include "unicode/unistr.h" |
+ |
+/** |
+ * \file |
+ * \brief C++ API: Formatter for measure objects. |
+ */ |
+ |
+U_NAMESPACE_BEGIN |
+ |
+class DecimalFormatSymbols; |
+class FieldPositionIterator; |
+class DecimalFormatStaticSets; |
+ |
+/** |
+ * A helper class for formatting numbers in standard scientific notation |
+ * instead of E notation. |
+ * |
+ * Sample code: |
+ * <pre> |
+ * UErrorCode status = U_ZERO_ERROR; |
+ * DecimalFormat *decfmt = (DecimalFormat *) |
+ * NumberFormat::createScientificInstance("en", status); |
+ * UnicodeString appendTo; |
+ * FieldPositionIterator fpositer; |
+ * decfmt->format(1.23456e-78, appendTo, &fpositer, status); |
+ * ScientificFormatHelper helper(*decfmt->getDecimalFormatSymbols(), status); |
+ * UnicodeString result; |
+ * |
+ * // result = "1.23456x10<sup>-78</sup>" |
+ * helper.insertMarkup(appendTo, fpositer, "<sup>", "</sup>", result, status)); |
+ * </pre> |
+ * |
+ * @see NumberFormat |
+ * @draft ICU 54 |
+ */ |
+class U_I18N_API ScientificFormatHelper : public UObject { |
+ public: |
+ /** |
+ * Constructor. |
+ * @param symbols comes from DecimalFormat instance used for default |
+ * scientific notation. |
+ * @param status any error reported here. |
+ * @draft ICU 54 |
+ */ |
+ ScientificFormatHelper(const DecimalFormatSymbols &symbols, UErrorCode& status); |
+ |
+ /** |
+ * Copy constructor. |
+ * @draft ICU 54 |
+ */ |
+ ScientificFormatHelper(const ScientificFormatHelper &other); |
+ |
+ /** |
+ * Assignment operator. |
+ * @draft ICU 54 |
+ */ |
+ ScientificFormatHelper &operator=(const ScientificFormatHelper &other); |
+ |
+ /** |
+ * Destructor. |
+ * @draft ICU 54 |
+ */ |
+ virtual ~ScientificFormatHelper(); |
+ |
+ /** |
+ * Formats standard scientific notation by surrounding exponent with |
+ * html to make it superscript. |
+ * @param s the original formatted scientific notation |
+ * e.g "6.02e23". s is output from |
+ * NumberFormat::createScientificInstance()->format(). |
+ * @param fpi the FieldPositionIterator from the format call. |
+ * fpi is output from |
+ * NumberFormat::createScientificInstance()->format(). |
+ * @param beginMarkup the start html for the exponent e.g "<sup>" |
+ * @param endMarkup the end html for the exponent e.g "</sup>" |
+ * @param result standard scientific notation appended here. |
+ * @param status any error returned here. When status is set to a |
+ * non-zero error, the value of result is unspecified, |
+ * and client should fallback to using s for scientific |
+ * notation. |
+ * @return the value stored in result. |
+ * @draft ICU 54 |
+ */ |
+ UnicodeString &insertMarkup( |
+ const UnicodeString &s, |
+ FieldPositionIterator &fpi, |
+ const UnicodeString &beginMarkup, |
+ const UnicodeString &endMarkup, |
+ UnicodeString &result, |
+ UErrorCode &status) const; |
+ |
+ /** |
+ * Formats standard scientific notation by using superscript unicode |
+ * points 0..9. |
+ * @param s the original formatted scientific notation |
+ * e.g "6.02e23". s is output from |
+ * NumberFormat::createScientificInstance()->format(). |
+ * @param fpi the FieldPositionIterator from the format call. |
+ * fpi is output from |
+ * NumberFormat::createScientificInstance()->format(). |
+ * @param result standard scientific notation appended here. |
+ * @param status any error returned here. When status is set to a |
+ * non-zero error, the value of result is unspecified, |
+ * and client should fallback to using s for scientific |
+ * notation. |
+ * @return the value stored in result. |
+ * @draft ICU 54 |
+ */ |
+ UnicodeString &toSuperscriptExponentDigits( |
+ const UnicodeString &s, |
+ FieldPositionIterator &fpi, |
+ UnicodeString &result, |
+ UErrorCode &status) const; |
+ private: |
+ UnicodeString fPreExponent; |
+ const DecimalFormatStaticSets *fStaticSets; |
+}; |
+ |
+U_NAMESPACE_END |
+ |
+#endif /* U_HIDE_DRAFT_API */ |
+ |
+#endif /* !UCONFIG_NO_FORMATTING */ |
+#endif |