dtptngen.h

00001 /*
00002 *******************************************************************************
00003 * Copyright (C) 2007, 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/utypes.h"
00016 #include "unicode/format.h"
00017 #include "unicode/datefmt.h"
00018 #include "unicode/calendar.h"
00019 #include "unicode/ustring.h"
00020 #include "unicode/locid.h"
00021 #include "unicode/udat.h"
00022 #include "unicode/udatpg.h"
00023 #include "unicode/uniset.h"
00024 
00025 U_NAMESPACE_BEGIN
00026 
00027 class DateFormatSymbols;
00028 class DateFormat;
00029 class Hashtable;
00030 class FormatParser;
00031 class DateTimeMatcher;
00032 class DistanceInfo;
00033 class PatternMap;
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      
00079     virtual ~DateTimePatternGenerator();
00080 
00086     DateTimePatternGenerator* clone() const;
00087 
00095     UBool operator==(const DateTimePatternGenerator& other) const;
00096 
00107     UnicodeString getSkeleton(const UnicodeString& pattern, UErrorCode& status);
00108 
00122     UnicodeString getBaseSkeleton(const UnicodeString& pattern, UErrorCode& status);
00123 
00144     UDateTimePatternConflict addPattern(const UnicodeString& pattern, 
00145                                         UBool override, 
00146                                         UnicodeString& conflictingPattern,
00147                                         UErrorCode& status);
00148 
00167     void setAppendItemFormat(UDateTimePatternField field, const UnicodeString& value);
00168 
00177     const UnicodeString& getAppendItemFormat(UDateTimePatternField field) const;
00178 
00190     void setAppendItemName(UDateTimePatternField field, const UnicodeString& value);
00191 
00200     const UnicodeString& getAppendItemName(UDateTimePatternField field) const;
00201 
00221     void setDateTimeFormat(const UnicodeString& dateTimeFormat);
00222 
00228     const UnicodeString& getDateTimeFormat() const;
00229 
00243      UnicodeString getBestPattern(const UnicodeString& skeleton, UErrorCode& status);
00244 
00245 
00262      UnicodeString replaceFieldTypes(const UnicodeString& pattern, 
00263                                      const UnicodeString& skeleton, 
00264                                      UErrorCode& status);
00265 
00277      StringEnumeration* getSkeletons(UErrorCode& status) const;
00278 
00285      const UnicodeString& getPatternForSkeleton(const UnicodeString& skeleton) const;
00286      
00296      StringEnumeration* getBaseSkeletons(UErrorCode& status) const;
00297      
00310      StringEnumeration* getRedundants(UErrorCode& status);
00311       
00323     void setDecimal(const UnicodeString& decimal);
00324 
00330     const UnicodeString& getDecimal() const;
00331 
00337     virtual UClassID getDynamicClassID() const;
00338 
00344     static UClassID U_EXPORT2 getStaticClassID(void);
00345 
00346 private:
00351     DateTimePatternGenerator(UErrorCode & status);
00352 
00357     DateTimePatternGenerator(const Locale& locale, UErrorCode & status);
00358 
00364     DateTimePatternGenerator(const DateTimePatternGenerator& other);
00365 
00371     DateTimePatternGenerator& operator=(const DateTimePatternGenerator& other);
00372 
00373     Locale pLocale;  // pattern locale
00374     FormatParser *fp;
00375     DateTimeMatcher* dtMatcher;
00376     DistanceInfo *distanceInfo;
00377     PatternMap *patternMap;
00378     UnicodeString appendItemFormats[UDATPG_FIELD_COUNT];
00379     UnicodeString appendItemNames[UDATPG_FIELD_COUNT];
00380     UnicodeString dateTimeFormat;
00381     UnicodeString decimal;
00382     DateTimeMatcher *skipMatcher;
00383     Hashtable *fAvailableFormatKeyHash;
00384     UnicodeString hackPattern;
00385     UErrorCode fStatus;
00386     UnicodeString emptyString;
00387 
00388     void initData(const Locale &locale);
00389     void addCanonicalItems();
00390     void addICUPatterns(const Locale& locale);
00391     void hackTimes(UnicodeString& hackPattern, UErrorCode& status);
00392     void addCLDRData(const Locale& locale);
00393     void initHashtable(UErrorCode& status);
00394     void setDateTimeFromCalendar(const Locale& locale);
00395     void setDecimalSymbols(const Locale& locale, UErrorCode& status);
00396     UDateTimePatternField getAppendFormatNumber(const char* field);
00397     UDateTimePatternField getAppendNameNumber(const char* field);
00398     void getAppendName(UDateTimePatternField field, UnicodeString& value);
00399     int32_t getCanonicalIndex(const UnicodeString& field);
00400     const UnicodeString* getBestRaw(DateTimeMatcher& source, int32_t includeMask, DistanceInfo* missingFields);
00401     UnicodeString adjustFieldTypes(const UnicodeString& pattern, UBool fixFractionalSeconds);
00402     UnicodeString getBestAppending(const int32_t missingFields);
00403     int32_t getTopBitNumber(int32_t foundMask);
00404     void setAvailableFormat(const UnicodeString &key, UErrorCode& status);
00405     UBool isAvailableFormatSet(const UnicodeString &key);
00406     void copyHashtable(Hashtable *other);
00407     UBool isCanonicalItem(const UnicodeString& item);
00408     UErrorCode getStatus() {  return fStatus; } ;
00409 } ;// end class DateTimePatternGenerator
00410 
00411 U_NAMESPACE_END
00412 
00413 #endif

Generated on Wed Aug 8 04:08:13 2007 for ICU 3.8 by  doxygen 1.5.2