19 #ifndef __LISTFORMATTER_H__
20 #define __LISTFORMATTER_H__
24 #if U_SHOW_CPLUSPLUS_API
32 class FieldPositionIterator;
33 class FieldPositionHandler;
34 class FormattedListData;
41 struct ListFormatInternal;
48 struct ListFormatData :
public UMemory {
49 UnicodeString twoPattern;
50 UnicodeString startPattern;
51 UnicodeString middlePattern;
52 UnicodeString endPattern;
54 ListFormatData(
const UnicodeString& two,
const UnicodeString& start,
const UnicodeString& middle,
const UnicodeString& end) :
55 twoPattern(two), startPattern(start), middlePattern(middle), endPattern(end) {}
66 #if !UCONFIG_NO_FORMATTING
67 #ifndef U_HIDE_DRAFT_API
129 FormattedListData *fData;
134 : fData(nullptr), fErrorCode(errorCode) {}
135 friend class ListFormatter;
138 #endif // !UCONFIG_NO_FORMATTING
188 #ifndef U_HIDE_INTERNAL_API
223 #ifndef U_HIDE_DRAFT_API
242 #endif // U_HIDE_DRAFT_API
244 #if !UCONFIG_NO_FORMATTING
245 #ifndef U_HIDE_DRAFT_API
262 #endif // !UCONFIG_NO_FORMATTING
264 #ifndef U_HIDE_INTERNAL_API
282 ListFormatter(
const ListFormatInternal* listFormatterInternal);
286 static void initializeHash(
UErrorCode& errorCode);
287 static const ListFormatInternal* getListFormatInternal(
const Locale& locale,
const char *style,
UErrorCode& errorCode);
288 struct ListPatternsSink;
289 static ListFormatInternal* loadListFormatInternal(
const Locale& locale,
const char* style,
UErrorCode& errorCode);
293 int32_t index, int32_t &offset, FieldPositionHandler* handler,
UErrorCode& errorCode)
const;
297 ListFormatInternal* owned;
298 const ListFormatInternal* data;
305 #endif // __LISTFORMATTER_H__