ICU 4.2.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
dtptngen.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************
3 * Copyright (C) 2007-2009, International Business Machines Corporation and
4 * others. All Rights Reserved.
5 *******************************************************************************
6 *
7 * File DTPTNGEN.H
8 *
9 *******************************************************************************
10 */
11 
12 #ifndef __DTPTNGEN_H__
13 #define __DTPTNGEN_H__
14 
15 #include "unicode/datefmt.h"
16 #include "unicode/locid.h"
17 #include "unicode/udat.h"
18 #include "unicode/udatpg.h"
19 
21 
28 class Hashtable;
29 class FormatParser;
30 class DateTimeMatcher;
31 class DistanceInfo;
32 class PatternMap;
33 class PtnSkeleton;
34 
50 public:
57  static DateTimePatternGenerator* U_EXPORT2 createInstance(UErrorCode& status);
58 
66  static DateTimePatternGenerator* U_EXPORT2 createInstance(const Locale& uLocale, UErrorCode& status);
67 
74  static DateTimePatternGenerator* U_EXPORT2 createEmptyInstance(UErrorCode& status);
75 
80  virtual ~DateTimePatternGenerator();
81 
87  DateTimePatternGenerator* clone() const;
88 
96  UBool operator==(const DateTimePatternGenerator& other) const;
97 
105  UBool operator!=(const DateTimePatternGenerator& other) const;
106 
117  UnicodeString getSkeleton(const UnicodeString& pattern, UErrorCode& status);
118 
132  UnicodeString getBaseSkeleton(const UnicodeString& pattern, UErrorCode& status);
133 
154  UDateTimePatternConflict addPattern(const UnicodeString& pattern,
155  UBool override,
156  UnicodeString& conflictingPattern,
157  UErrorCode& status);
158 
177  void setAppendItemFormat(UDateTimePatternField field, const UnicodeString& value);
178 
187  const UnicodeString& getAppendItemFormat(UDateTimePatternField field) const;
188 
200  void setAppendItemName(UDateTimePatternField field, const UnicodeString& value);
201 
210  const UnicodeString& getAppendItemName(UDateTimePatternField field) const;
211 
231  void setDateTimeFormat(const UnicodeString& dateTimeFormat);
232 
238  const UnicodeString& getDateTimeFormat() const;
239 
253  UnicodeString getBestPattern(const UnicodeString& skeleton, UErrorCode& status);
254 
255 
272  UnicodeString replaceFieldTypes(const UnicodeString& pattern,
273  const UnicodeString& skeleton,
274  UErrorCode& status);
275 
287  StringEnumeration* getSkeletons(UErrorCode& status) const;
288 
295  const UnicodeString& getPatternForSkeleton(const UnicodeString& skeleton) const;
296 
306  StringEnumeration* getBaseSkeletons(UErrorCode& status) const;
307 
320  StringEnumeration* getRedundants(UErrorCode& status);
321 
333  void setDecimal(const UnicodeString& decimal);
334 
340  const UnicodeString& getDecimal() const;
341 
347  virtual UClassID getDynamicClassID() const;
348 
354  static UClassID U_EXPORT2 getStaticClassID(void);
355 
356 private:
362 
367  DateTimePatternGenerator(const Locale& locale, UErrorCode & status);
368 
375 
381  DateTimePatternGenerator& operator=(const DateTimePatternGenerator& other);
382 
383  Locale pLocale; // pattern locale
384  FormatParser *fp;
385  DateTimeMatcher* dtMatcher;
386  DistanceInfo *distanceInfo;
387  PatternMap *patternMap;
388  UnicodeString appendItemFormats[UDATPG_FIELD_COUNT];
389  UnicodeString appendItemNames[UDATPG_FIELD_COUNT];
390  UnicodeString dateTimeFormat;
391  UnicodeString decimal;
392  DateTimeMatcher *skipMatcher;
393  Hashtable *fAvailableFormatKeyHash;
394  UnicodeString hackPattern;
395  UnicodeString emptyString;
396  UChar fDefaultHourFormatChar;
397 
398  void initData(const Locale &locale, UErrorCode &status);
399  void addCanonicalItems();
400  void addICUPatterns(const Locale& locale, UErrorCode& status);
401  void hackTimes(const UnicodeString& hackPattern, UErrorCode& status);
402  void addCLDRData(const Locale& locale, UErrorCode& status);
403  UDateTimePatternConflict addPatternWithSkeleton(const UnicodeString& pattern, const UnicodeString * skeletonToUse, UBool override, UnicodeString& conflictingPattern, UErrorCode& status);
404  void initHashtable(UErrorCode& status);
405  void setDateTimeFromCalendar(const Locale& locale, UErrorCode& status);
406  void setDecimalSymbols(const Locale& locale, UErrorCode& status);
407  UDateTimePatternField getAppendFormatNumber(const char* field) const;
408  UDateTimePatternField getAppendNameNumber(const char* field) const;
409  void getAppendName(UDateTimePatternField field, UnicodeString& value);
410  int32_t getCanonicalIndex(const UnicodeString& field);
411  const UnicodeString* getBestRaw(DateTimeMatcher& source, int32_t includeMask, DistanceInfo* missingFields, const PtnSkeleton** specifiedSkeletonPtr = 0);
412  UnicodeString adjustFieldTypes(const UnicodeString& pattern, const PtnSkeleton* specifiedSkeleton, UBool fixFractionalSeconds);
413  UnicodeString getBestAppending(int32_t missingFields);
414  int32_t getTopBitNumber(int32_t foundMask);
415  void setAvailableFormat(const UnicodeString &key, UErrorCode& status);
416  UBool isAvailableFormatSet(const UnicodeString &key) const;
417  void copyHashtable(Hashtable *other, UErrorCode &status);
418  UBool isCanonicalItem(const UnicodeString& item) const;
419 } ;// end class DateTimePatternGenerator
420 
422 
423 #endif
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:475
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:183
C API: Wrapper for DateTimePatternGenerator (unicode/dtptngen.h).
C API: DateFormat.
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:187
#define U_EXPORT2
Definition: platform.h:338
UDateTimePatternConflict
Status return values from udatpg_addPattern().
Definition: udatpg.h:93
uint16_t UChar
Define UChar to be wchar_t if that is 16 bits wide; always assumed to be unsigned.
Definition: umachine.h:299
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API If the compiler doesn't support namespaces...
Definition: uversion.h:184
UDateTimePatternField
Field number constants for udatpg_getAppendItemFormats() and similar functions.
Definition: udatpg.h:52
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:212
void * UClassID
UClassID is used to identify classes without using RTTI, since RTTI is not yet supported by all C++ c...
Definition: utypes.h:339
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:593
Base class for 'pure' C++ implementations of uenum api.
Definition: strenum.h:55
C++ API: Abstract class for converting dates.
C++ API: Locale ID object.
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:181
virtual UClassID getDynamicClassID() const =0
ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
signed int int32_t
Define 64 bit limits.
Definition: pwin32.h:143
This class provides flexible generation of date format patterns, like "yy-MM-dd". ...
Definition: dtptngen.h:49
int8_t UBool
The ICU boolean type.
Definition: umachine.h:208