dtptngen.h

Go to the documentation of this file.
00001 /*
00002 *******************************************************************************
00003 * Copyright (C) 2007-2008, 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 
00048 class U_I18N_API DateTimePatternGenerator : public UObject {
00049 public:
00056     static DateTimePatternGenerator* U_EXPORT2 createInstance(UErrorCode& status);
00057 
00065     static DateTimePatternGenerator* U_EXPORT2 createInstance(const Locale& uLocale, UErrorCode& status);
00066 
00073      static DateTimePatternGenerator* U_EXPORT2 createEmptyInstance(UErrorCode& status);
00074      
00079     virtual ~DateTimePatternGenerator();
00080 
00086     DateTimePatternGenerator* clone() const;
00087 
00095     UBool operator==(const DateTimePatternGenerator& other) const;
00096     
00104     UBool operator!=(const DateTimePatternGenerator& other) const;
00105 
00116     UnicodeString getSkeleton(const UnicodeString& pattern, UErrorCode& status);
00117 
00131     UnicodeString getBaseSkeleton(const UnicodeString& pattern, UErrorCode& status);
00132 
00153     UDateTimePatternConflict addPattern(const UnicodeString& pattern, 
00154                                         UBool override, 
00155                                         UnicodeString& conflictingPattern,
00156                                         UErrorCode& status);
00157 
00176     void setAppendItemFormat(UDateTimePatternField field, const UnicodeString& value);
00177 
00186     const UnicodeString& getAppendItemFormat(UDateTimePatternField field) const;
00187 
00199     void setAppendItemName(UDateTimePatternField field, const UnicodeString& value);
00200 
00209     const UnicodeString& getAppendItemName(UDateTimePatternField field) const;
00210 
00230     void setDateTimeFormat(const UnicodeString& dateTimeFormat);
00231 
00237     const UnicodeString& getDateTimeFormat() const;
00238 
00252      UnicodeString getBestPattern(const UnicodeString& skeleton, UErrorCode& status);
00253 
00254 
00271      UnicodeString replaceFieldTypes(const UnicodeString& pattern, 
00272                                      const UnicodeString& skeleton, 
00273                                      UErrorCode& status);
00274 
00286      StringEnumeration* getSkeletons(UErrorCode& status) const;
00287 
00294      const UnicodeString& getPatternForSkeleton(const UnicodeString& skeleton) const;
00295      
00305      StringEnumeration* getBaseSkeletons(UErrorCode& status) const;
00306      
00319      StringEnumeration* getRedundants(UErrorCode& status);
00320       
00332     void setDecimal(const UnicodeString& decimal);
00333 
00339     const UnicodeString& getDecimal() const;
00340 
00346     virtual UClassID getDynamicClassID() const;
00347 
00353     static UClassID U_EXPORT2 getStaticClassID(void);
00354 
00355 private:
00360     DateTimePatternGenerator(UErrorCode & status);
00361 
00366     DateTimePatternGenerator(const Locale& locale, UErrorCode & status);
00367 
00373     DateTimePatternGenerator(const DateTimePatternGenerator& other);
00374 
00380     DateTimePatternGenerator& operator=(const DateTimePatternGenerator& other);
00381 
00382     Locale pLocale;  // pattern locale
00383     FormatParser *fp;
00384     DateTimeMatcher* dtMatcher;
00385     DistanceInfo *distanceInfo;
00386     PatternMap *patternMap;
00387     UnicodeString appendItemFormats[UDATPG_FIELD_COUNT];
00388     UnicodeString appendItemNames[UDATPG_FIELD_COUNT];
00389     UnicodeString dateTimeFormat;
00390     UnicodeString decimal;
00391     DateTimeMatcher *skipMatcher;
00392     Hashtable *fAvailableFormatKeyHash;
00393     UnicodeString hackPattern;
00394     UnicodeString emptyString;
00395     UBool chineseMonthHack;
00396 
00397     void initData(const Locale &locale, UErrorCode &status);
00398     void addCanonicalItems();
00399     void addICUPatterns(const Locale& locale, UErrorCode& status);
00400     void hackTimes(const UnicodeString& hackPattern, UErrorCode& status);
00401     void addCLDRData(const Locale& locale);
00402     void initHashtable(UErrorCode& status);
00403     void setDateTimeFromCalendar(const Locale& locale, UErrorCode& status);
00404     void setDecimalSymbols(const Locale& locale, UErrorCode& status);
00405     UnicodeString getCJKPattern(const UnicodeString& patternForm);
00406     UDateTimePatternField getAppendFormatNumber(const char* field) const;
00407     UDateTimePatternField getAppendNameNumber(const char* field) const;
00408     void getAppendName(UDateTimePatternField field, UnicodeString& value);
00409     int32_t getCanonicalIndex(const UnicodeString& field);
00410     const UnicodeString* getBestRaw(DateTimeMatcher& source, int32_t includeMask, DistanceInfo* missingFields);
00411     UnicodeString adjustFieldTypes(const UnicodeString& pattern, UBool fixFractionalSeconds);
00412     UnicodeString getBestAppending(int32_t missingFields);
00413     int32_t getTopBitNumber(int32_t foundMask);
00414     void setAvailableFormat(const UnicodeString &key, UErrorCode& status);
00415     UBool isAvailableFormatSet(const UnicodeString &key) const;
00416     void copyHashtable(Hashtable *other, UErrorCode &status);
00417     UBool isCanonicalItem(const UnicodeString& item) const;
00418 } ;// end class DateTimePatternGenerator
00419 
00420 U_NAMESPACE_END
00421 
00422 #endif

Generated on Thu Jan 15 11:25:48 2009 for ICU 4.0.1 by  doxygen 1.4.7