00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __LISTFORMATTER_H__
00018 #define __LISTFORMATTER_H__
00019
00020 #include "unicode/utypes.h"
00021
00022 #include "unicode/unistr.h"
00023 #include "unicode/locid.h"
00024
00025 U_NAMESPACE_BEGIN
00026
00028 class Hashtable;
00029
00031 struct ListFormatInternal;
00032
00033
00035 struct ListFormatData : public UMemory {
00036 UnicodeString twoPattern;
00037 UnicodeString startPattern;
00038 UnicodeString middlePattern;
00039 UnicodeString endPattern;
00040
00041 ListFormatData(const UnicodeString& two, const UnicodeString& start, const UnicodeString& middle, const UnicodeString& end) :
00042 twoPattern(two), startPattern(start), middlePattern(middle), endPattern(end) {}
00043 };
00044
00045
00062 class U_COMMON_API ListFormatter : public UObject{
00063
00064 public:
00065
00070 ListFormatter(const ListFormatter&);
00071
00076 ListFormatter& operator=(const ListFormatter& other);
00077
00086 static ListFormatter* createInstance(UErrorCode& errorCode);
00087
00097 static ListFormatter* createInstance(const Locale& locale, UErrorCode& errorCode);
00098
00099 #ifndef U_HIDE_INTERNAL_API
00100
00110 static ListFormatter* createInstance(const Locale& locale, const char* style, UErrorCode& errorCode);
00111 #endif
00112
00118 virtual ~ListFormatter();
00119
00120
00131 UnicodeString& format(const UnicodeString items[], int32_t n_items,
00132 UnicodeString& appendTo, UErrorCode& errorCode) const;
00133
00134 #ifndef U_HIDE_INTERNAL_API
00135
00138 UnicodeString& format(
00139 const UnicodeString items[],
00140 int32_t n_items,
00141 UnicodeString& appendTo,
00142 int32_t index,
00143 int32_t &offset,
00144 UErrorCode& errorCode) const;
00148 ListFormatter(const ListFormatData &data, UErrorCode &errorCode);
00152 ListFormatter(const ListFormatInternal* listFormatterInternal);
00153 #endif
00154
00155 private:
00156 static void initializeHash(UErrorCode& errorCode);
00157 static const ListFormatInternal* getListFormatInternal(const Locale& locale, const char *style, UErrorCode& errorCode);
00158
00159 ListFormatter();
00160
00161 ListFormatInternal* owned;
00162 const ListFormatInternal* data;
00163 };
00164
00165 U_NAMESPACE_END
00166
00167 #endif