00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef FORMAT_H
00024 #define FORMAT_H
00025
00026
00027 #include "unicode/utypes.h"
00028
00034 #if !UCONFIG_NO_FORMATTING
00035
00036 #include "unicode/unistr.h"
00037 #include "unicode/fmtable.h"
00038 #include "unicode/fieldpos.h"
00039 #include "unicode/fpositer.h"
00040 #include "unicode/parsepos.h"
00041 #include "unicode/parseerr.h"
00042 #include "unicode/locid.h"
00043
00044 U_NAMESPACE_BEGIN
00045
00096 class U_I18N_API Format : public UObject {
00097 public:
00098
00102 virtual ~Format();
00103
00112 virtual UBool operator==(const Format& other) const = 0;
00113
00121 UBool operator!=(const Format& other) const { return !operator==(other); }
00122
00129 virtual Format* clone() const = 0;
00130
00141 UnicodeString& format(const Formattable& obj,
00142 UnicodeString& appendTo,
00143 UErrorCode& status) const;
00144
00161 virtual UnicodeString& format(const Formattable& obj,
00162 UnicodeString& appendTo,
00163 FieldPosition& pos,
00164 UErrorCode& status) const = 0;
00181 virtual UnicodeString& format(const Formattable& obj,
00182 UnicodeString& appendTo,
00183 FieldPositionIterator* posIter,
00184 UErrorCode& status) const;
00185
00225 virtual void parseObject(const UnicodeString& source,
00226 Formattable& result,
00227 ParsePosition& parse_pos) const = 0;
00228
00241 void parseObject(const UnicodeString& source,
00242 Formattable& result,
00243 UErrorCode& status) const;
00244
00251 Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
00252
00253 #ifndef U_HIDE_INTERNAL_API
00254
00260 const char* getLocaleID(ULocDataLocaleType type, UErrorCode &status) const;
00261 #endif
00262
00263 protected:
00265 void setLocaleIDs(const char* valid, const char* actual);
00266
00267 protected:
00272 Format();
00273
00277 Format(const Format&);
00278
00282 Format& operator=(const Format&);
00283
00284
00293 static void syntaxError(const UnicodeString& pattern,
00294 int32_t pos,
00295 UParseError& parseError);
00296
00297 private:
00298 char actualLocale[ULOC_FULLNAME_CAPACITY];
00299 char validLocale[ULOC_FULLNAME_CAPACITY];
00300 };
00301
00302 U_NAMESPACE_END
00303
00304 #endif
00305
00306 #endif // _FORMAT
00307