dtptngen.h

Go to the documentation of this file.
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

Generated on 27 Oct 2013 for ICU 50.1.2 by  doxygen 1.4.7