ICU 49.1.1
49.1.1
|
00001 /* 00002 ******************************************************************************* 00003 * Copyright (C) 2007-2011, International Business Machines Corporation and 00004 * others. All Rights Reserved. 00005 ******************************************************************************* 00006 * 00007 * File DTPTNGEN.H 00008 * 00009 ******************************************************************************* 00010 */ 00011 00012 #ifndef __DTPTNGEN_H__ 00013 #define __DTPTNGEN_H__ 00014 00015 #include "unicode/datefmt.h" 00016 #include "unicode/locid.h" 00017 #include "unicode/udat.h" 00018 #include "unicode/udatpg.h" 00019 00020 U_NAMESPACE_BEGIN 00021 00028 class Hashtable; 00029 class FormatParser; 00030 class DateTimeMatcher; 00031 class DistanceInfo; 00032 class PatternMap; 00033 class PtnSkeleton; 00034 00049 class U_I18N_API DateTimePatternGenerator : public UObject { 00050 public: 00057 static DateTimePatternGenerator* U_EXPORT2 createInstance(UErrorCode& status); 00058 00066 static DateTimePatternGenerator* U_EXPORT2 createInstance(const Locale& uLocale, UErrorCode& status); 00067 00074 static DateTimePatternGenerator* U_EXPORT2 createEmptyInstance(UErrorCode& status); 00075 00080 virtual ~DateTimePatternGenerator(); 00081 00087 DateTimePatternGenerator* clone() const; 00088 00096 UBool operator==(const DateTimePatternGenerator& other) const; 00097 00105 UBool operator!=(const DateTimePatternGenerator& other) const; 00106 00117 UnicodeString getSkeleton(const UnicodeString& pattern, UErrorCode& status); 00118 00132 UnicodeString getBaseSkeleton(const UnicodeString& pattern, UErrorCode& status); 00133 00154 UDateTimePatternConflict addPattern(const UnicodeString& pattern, 00155 UBool override, 00156 UnicodeString& conflictingPattern, 00157 UErrorCode& status); 00158 00177 void setAppendItemFormat(UDateTimePatternField field, const UnicodeString& value); 00178 00187 const UnicodeString& getAppendItemFormat(UDateTimePatternField field) const; 00188 00200 void setAppendItemName(UDateTimePatternField field, const UnicodeString& value); 00201 00210 const UnicodeString& getAppendItemName(UDateTimePatternField field) const; 00211 00231 void setDateTimeFormat(const UnicodeString& dateTimeFormat); 00232 00238 const UnicodeString& getDateTimeFormat() const; 00239 00253 UnicodeString getBestPattern(const UnicodeString& skeleton, UErrorCode& status); 00254 00255 00275 UnicodeString getBestPattern(const UnicodeString& skeleton, 00276 UDateTimePatternMatchOptions options, 00277 UErrorCode& status); 00278 00279 00296 UnicodeString replaceFieldTypes(const UnicodeString& pattern, 00297 const UnicodeString& skeleton, 00298 UErrorCode& status); 00299 00322 UnicodeString replaceFieldTypes(const UnicodeString& pattern, 00323 const UnicodeString& skeleton, 00324 UDateTimePatternMatchOptions options, 00325 UErrorCode& status); 00326 00338 StringEnumeration* getSkeletons(UErrorCode& status) const; 00339 00346 const UnicodeString& getPatternForSkeleton(const UnicodeString& skeleton) const; 00347 00357 StringEnumeration* getBaseSkeletons(UErrorCode& status) const; 00358 00359 #ifndef U_HIDE_INTERNAL_API 00360 00372 StringEnumeration* getRedundants(UErrorCode& status); 00373 #endif /* U_HIDE_INTERNAL_API */ 00374 00386 void setDecimal(const UnicodeString& decimal); 00387 00393 const UnicodeString& getDecimal() const; 00394 00400 virtual UClassID getDynamicClassID() const; 00401 00407 static UClassID U_EXPORT2 getStaticClassID(void); 00408 00409 private: 00414 DateTimePatternGenerator(UErrorCode & status); 00415 00420 DateTimePatternGenerator(const Locale& locale, UErrorCode & status); 00421 00427 DateTimePatternGenerator(const DateTimePatternGenerator& other); 00428 00434 DateTimePatternGenerator& operator=(const DateTimePatternGenerator& other); 00435 00436 Locale pLocale; // pattern locale 00437 FormatParser *fp; 00438 DateTimeMatcher* dtMatcher; 00439 DistanceInfo *distanceInfo; 00440 PatternMap *patternMap; 00441 UnicodeString appendItemFormats[UDATPG_FIELD_COUNT]; 00442 UnicodeString appendItemNames[UDATPG_FIELD_COUNT]; 00443 UnicodeString dateTimeFormat; 00444 UnicodeString decimal; 00445 DateTimeMatcher *skipMatcher; 00446 Hashtable *fAvailableFormatKeyHash; 00447 UnicodeString hackPattern; 00448 UnicodeString emptyString; 00449 UChar fDefaultHourFormatChar; 00450 00451 void initData(const Locale &locale, UErrorCode &status); 00452 void addCanonicalItems(); 00453 void addICUPatterns(const Locale& locale, UErrorCode& status); 00454 void hackTimes(const UnicodeString& hackPattern, UErrorCode& status); 00455 void addCLDRData(const Locale& locale, UErrorCode& status); 00456 UDateTimePatternConflict addPatternWithSkeleton(const UnicodeString& pattern, const UnicodeString * skeletonToUse, UBool override, UnicodeString& conflictingPattern, UErrorCode& status); 00457 void initHashtable(UErrorCode& status); 00458 void setDateTimeFromCalendar(const Locale& locale, UErrorCode& status); 00459 void setDecimalSymbols(const Locale& locale, UErrorCode& status); 00460 UDateTimePatternField getAppendFormatNumber(const char* field) const; 00461 UDateTimePatternField getAppendNameNumber(const char* field) const; 00462 void getAppendName(UDateTimePatternField field, UnicodeString& value); 00463 int32_t getCanonicalIndex(const UnicodeString& field); 00464 const UnicodeString* getBestRaw(DateTimeMatcher& source, int32_t includeMask, DistanceInfo* missingFields, const PtnSkeleton** specifiedSkeletonPtr = 0); 00465 UnicodeString adjustFieldTypes(const UnicodeString& pattern, const PtnSkeleton* specifiedSkeleton, UBool fixFractionalSeconds, UDateTimePatternMatchOptions options = UDATPG_MATCH_NO_OPTIONS); 00466 UnicodeString getBestAppending(int32_t missingFields, UDateTimePatternMatchOptions options = UDATPG_MATCH_NO_OPTIONS); 00467 int32_t getTopBitNumber(int32_t foundMask); 00468 void setAvailableFormat(const UnicodeString &key, UErrorCode& status); 00469 UBool isAvailableFormatSet(const UnicodeString &key) const; 00470 void copyHashtable(Hashtable *other, UErrorCode &status); 00471 UBool isCanonicalItem(const UnicodeString& item) const; 00472 } ;// end class DateTimePatternGenerator 00473 00474 U_NAMESPACE_END 00475 00476 #endif