/*
*******************************************************************************
*
-* Copyright (C) 2012-2013, International Business Machines
+* Copyright (C) 2012-2014, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
#include "unicode/utypes.h"
-#ifndef U_HIDE_DRAFT_API
-
#include "unicode/unistr.h"
#include "unicode/locid.h"
/** @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;
* 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);
* @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();
* @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