00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef SELFMT
00017 #define SELFMT
00018
00019 #include "unicode/messagepattern.h"
00020 #include "unicode/numfmt.h"
00021 #include "unicode/utypes.h"
00022
00028 #if !UCONFIG_NO_FORMATTING
00029
00030 U_NAMESPACE_BEGIN
00031
00032 class MessageFormat;
00033
00183 class U_I18N_API SelectFormat : public Format {
00184 public:
00185
00194 SelectFormat(const UnicodeString& pattern, UErrorCode& status);
00195
00200 SelectFormat(const SelectFormat& other);
00201
00206 virtual ~SelectFormat();
00207
00219 void applyPattern(const UnicodeString& pattern, UErrorCode& status);
00220
00221
00222 using Format::format;
00223
00237 UnicodeString& format(const UnicodeString& keyword,
00238 UnicodeString& appendTo,
00239 FieldPosition& pos,
00240 UErrorCode& status) const;
00241
00248 SelectFormat& operator=(const SelectFormat& other);
00249
00257 virtual UBool operator==(const Format& other) const;
00258
00266 virtual UBool operator!=(const Format& other) const;
00267
00273 virtual Format* clone(void) const;
00274
00290 UnicodeString& format(const Formattable& obj,
00291 UnicodeString& appendTo,
00292 FieldPosition& pos,
00293 UErrorCode& status) const;
00294
00303 UnicodeString& toPattern(UnicodeString& appendTo);
00304
00327 virtual void parseObject(const UnicodeString& source,
00328 Formattable& result,
00329 ParsePosition& parse_pos) const;
00330
00335 static UClassID U_EXPORT2 getStaticClassID(void);
00336
00341 virtual UClassID getDynamicClassID() const;
00342
00343 private:
00344 friend class MessageFormat;
00345
00346 SelectFormat();
00347
00356 static int32_t findSubMessage(const MessagePattern& pattern, int32_t partIndex,
00357 const UnicodeString& keyword, UErrorCode& ec);
00358
00359 MessagePattern msgPattern;
00360 };
00361
00362 U_NAMESPACE_END
00363
00364 #endif
00365
00366 #endif // _SELFMT
00367