]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/common/unicode/listformatter.h
ICU-531.30.tar.gz
[apple/icu.git] / icuSources / common / unicode / listformatter.h
index 30d99e9771773582d7142ffd5bbe8e8c51f06110..1b3219588a5b7e1f72b7aec7f959a5c316356c78 100644 (file)
@@ -1,7 +1,7 @@
 /*
 *******************************************************************************
 *
-*   Copyright (C) 2012-2013, International Business Machines
+*   Copyright (C) 2012-2014, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 *
 *******************************************************************************
@@ -19,8 +19,6 @@
 
 #include "unicode/utypes.h"
 
-#ifndef U_HIDE_DRAFT_API
-
 #include "unicode/unistr.h"
 #include "unicode/locid.h"
 
@@ -29,6 +27,10 @@ U_NAMESPACE_BEGIN
 /** @internal */
 class Hashtable;
 
+/** @internal */
+struct ListFormatInternal;
+
+/* The following can't be #ifndef U_HIDE_INTERNAL_API, needed for other .h file declarations */
 /** @internal */
 struct ListFormatData : public UMemory {
     UnicodeString twoPattern;
@@ -55,18 +57,31 @@ struct ListFormatData : public UMemory {
  * as "Alice, Bob, Charlie and Delta" in English.
  *
  * The ListFormatter class is not intended for public subclassing.
- * @draft ICU 50
+ * @stable ICU 50
  */
 class U_COMMON_API ListFormatter : public UObject{
 
   public:
+
+    /**
+     * Copy constructor.
+     * @draft ICU 52
+     */
+    ListFormatter(const ListFormatter&);
+
+    /**
+     * Assignment operator.
+     * @draft ICU 52
+     */
+    ListFormatter& operator=(const ListFormatter& other);
+
     /**
      * Creates a ListFormatter appropriate for the default locale.
      *
      * @param errorCode ICU error code, set if no data available for default locale.
      * @return Pointer to a ListFormatter object for the default locale,
      *     created from internal data derived from CLDR data.
-     * @draft ICU 50
+     * @stable ICU 50
      */
     static ListFormatter* createInstance(UErrorCode& errorCode);
 
@@ -77,15 +92,28 @@ class U_COMMON_API ListFormatter : public UObject{
      * @param errorCode ICU error code, set if no data available for the given locale.
      * @return A ListFormatter object created from internal data derived from
      *     CLDR data.
-     * @draft ICU 50
+     * @stable ICU 50
      */
     static ListFormatter* createInstance(const Locale& locale, UErrorCode& errorCode);
 
+#ifndef U_HIDE_INTERNAL_API
+    /**
+     * Creates a ListFormatter appropriate for a locale and style.
+     *
+     * @param locale The locale.
+     * @param style the style, either "standard", "duration", or "duration-short"
+     * @param errorCode ICU error code, set if no data available for the given locale.
+     * @return A ListFormatter object created from internal data derived from
+     *     CLDR data.
+     * @internal
+     */
+    static ListFormatter* createInstance(const Locale& locale, const char* style, UErrorCode& errorCode);
+#endif  /* U_HIDE_INTERNAL_API */
 
     /**
      * Destructor.
      *
-     * @draft ICU 50
+     * @stable ICU 50
      */
     virtual ~ListFormatter();
 
@@ -98,31 +126,42 @@ class U_COMMON_API ListFormatter : public UObject{
      * @param appendTo The string to which the result should be appended to.
      * @param errorCode ICU error code, set if there is an error.
      * @return Formatted string combining the elements of items, appended to appendTo.
-     * @draft ICU 50
+     * @stable ICU 50
      */
     UnicodeString& format(const UnicodeString items[], int32_t n_items,
         UnicodeString& appendTo, UErrorCode& errorCode) const;
 
+#ifndef U_HIDE_INTERNAL_API
+    /**
+      @internal for MeasureFormat
+    */
+    UnicodeString& format(
+            const UnicodeString items[],
+            int32_t n_items,
+            UnicodeString& appendTo,
+            int32_t index,
+            int32_t &offset,
+            UErrorCode& errorCode) const;
+    /**
+     * @internal constructor made public for testing.
+     */
+    ListFormatter(const ListFormatData &data);
     /**
      * @internal constructor made public for testing.
      */
-    ListFormatter(const ListFormatData& listFormatterData);
+    ListFormatter(const ListFormatInternal* listFormatterInternal);
+#endif  /* U_HIDE_INTERNAL_API */
 
   private:
     static void initializeHash(UErrorCode& errorCode);
-    static const ListFormatData* getListFormatData(const Locale& locale, UErrorCode& errorCode);
+    static const ListFormatInternal* getListFormatInternal(const Locale& locale, const char *style, UErrorCode& errorCode);
 
     ListFormatter();
-    ListFormatter(const ListFormatter&);
-
-    ListFormatter& operator = (const ListFormatter&);
-    void addNewString(const UnicodeString& pattern, UnicodeString& originalString,
-                      const UnicodeString& newString, UErrorCode& errorCode) const;
 
-    const ListFormatData& data;
+    ListFormatInternal* owned;
+    const ListFormatInternal* data;
 };
 
 U_NAMESPACE_END
 
-#endif /* U_HIDE_DRAFT_API */
 #endif