Index: icu46/source/i18n/dtptngen_impl.h |
=================================================================== |
--- icu46/source/i18n/dtptngen_impl.h (revision 0) |
+++ icu46/source/i18n/dtptngen_impl.h (revision 0) |
@@ -0,0 +1,259 @@ |
+/* |
+******************************************************************************* |
+* Copyright (C) 2007-2009, International Business Machines Corporation and |
+* others. All Rights Reserved. * |
+******************************************************************************* |
+* |
+* File DTPTNGEN.H |
+* |
+******************************************************************************* |
+*/ |
+ |
+#include "uvector.h" |
+ |
+#ifndef __DTPTNGEN_IMPL_H__ |
+#define __DTPTNGEN_IMPL_H__ |
+ |
+// TODO(claireho): Split off Builder class. |
+// TODO(claireho): If splitting off Builder class: As subclass or independent? |
+ |
+#define MAX_PATTERN_ENTRIES 52 |
+#define MAX_CLDR_FIELD_LEN 60 |
+#define MAX_DT_TOKEN 50 |
+#define MAX_RESOURCE_FIELD 12 |
+#define MAX_AVAILABLE_FORMATS 12 |
+#define NONE 0 |
+#define EXTRA_FIELD 0x10000 |
+#define MISSING_FIELD 0x1000 |
+#define MAX_STRING_ENUMERATION 200 |
+#define SINGLE_QUOTE ((UChar)0x0027) |
+#define FORWARDSLASH ((UChar)0x002F) |
+#define BACKSLASH ((UChar)0x005C) |
+#define SPACE ((UChar)0x0020) |
+#define QUOTATION_MARK ((UChar)0x0022) |
+#define ASTERISK ((UChar)0x002A) |
+#define PLUSSITN ((UChar)0x002B) |
+#define COMMA ((UChar)0x002C) |
+#define HYPHEN ((UChar)0x002D) |
+#define DOT ((UChar)0x002E) |
+#define COLON ((UChar)0x003A) |
+#define CAP_A ((UChar)0x0041) |
+#define CAP_C ((UChar)0x0043) |
+#define CAP_D ((UChar)0x0044) |
+#define CAP_E ((UChar)0x0045) |
+#define CAP_F ((UChar)0x0046) |
+#define CAP_G ((UChar)0x0047) |
+#define CAP_H ((UChar)0x0048) |
+#define CAP_K ((UChar)0x004B) |
+#define CAP_L ((UChar)0x004C) |
+#define CAP_M ((UChar)0x004D) |
+#define CAP_O ((UChar)0x004F) |
+#define CAP_Q ((UChar)0x0051) |
+#define CAP_S ((UChar)0x0053) |
+#define CAP_T ((UChar)0x0054) |
+#define CAP_V ((UChar)0x0056) |
+#define CAP_W ((UChar)0x0057) |
+#define CAP_Y ((UChar)0x0059) |
+#define CAP_Z ((UChar)0x005A) |
+#define LOWLINE ((UChar)0x005F) |
+#define LOW_A ((UChar)0x0061) |
+#define LOW_C ((UChar)0x0063) |
+#define LOW_D ((UChar)0x0064) |
+#define LOW_E ((UChar)0x0065) |
+#define LOW_F ((UChar)0x0066) |
+#define LOW_G ((UChar)0x0067) |
+#define LOW_H ((UChar)0x0068) |
+#define LOW_I ((UChar)0x0069) |
+#define LOW_J ((UChar)0x006A) |
+#define LOW_K ((UChar)0x006B) |
+#define LOW_L ((UChar)0x006C) |
+#define LOW_M ((UChar)0x006D) |
+#define LOW_N ((UChar)0x006E) |
+#define LOW_O ((UChar)0x006F) |
+#define LOW_P ((UChar)0x0070) |
+#define LOW_Q ((UChar)0x0071) |
+#define LOW_R ((UChar)0x0072) |
+#define LOW_S ((UChar)0x0073) |
+#define LOW_T ((UChar)0x0074) |
+#define LOW_U ((UChar)0x0075) |
+#define LOW_V ((UChar)0x0076) |
+#define LOW_W ((UChar)0x0077) |
+#define LOW_Y ((UChar)0x0079) |
+#define LOW_Z ((UChar)0x007A) |
+#define DT_SHORT -0x102 |
+#define DT_LONG -0x103 |
+#define DT_NUMERIC 0x100 |
+#define DT_NARROW -0x101 |
+#define DT_DELTA 0x10 |
+ |
+U_NAMESPACE_BEGIN |
+ |
+const int32_t UDATPG_FRACTIONAL_MASK = 1<<UDATPG_FRACTIONAL_SECOND_FIELD; |
+const int32_t UDATPG_SECOND_AND_FRACTIONAL_MASK = (1<<UDATPG_SECOND_FIELD) | (1<<UDATPG_FRACTIONAL_SECOND_FIELD); |
+ |
+typedef enum dtStrEnum { |
+ DT_BASESKELETON, |
+ DT_SKELETON, |
+ DT_PATTERN |
+}dtStrEnum; |
+ |
+typedef struct dtTypeElem { |
+ UChar patternChar; |
+ UDateTimePatternField field; |
+ int16_t type; |
+ int16_t minLen; |
+ int16_t weight; |
+}dtTypeElem; |
+ |
+class PtnSkeleton : public UMemory { |
+public: |
+ int32_t type[UDATPG_FIELD_COUNT]; |
+ UnicodeString original[UDATPG_FIELD_COUNT]; |
+ UnicodeString baseOriginal[UDATPG_FIELD_COUNT]; |
+ |
+ PtnSkeleton(); |
+ PtnSkeleton(const PtnSkeleton& other); |
+ UBool equals(const PtnSkeleton& other); |
+ UnicodeString getSkeleton(); |
+ UnicodeString getBaseSkeleton(); |
+ virtual ~PtnSkeleton(); |
+}; |
+ |
+ |
+class PtnElem : public UMemory { |
+public: |
+ UnicodeString basePattern; |
+ PtnSkeleton *skeleton; |
+ UnicodeString pattern; |
+ UBool skeletonWasSpecified; // if specified in availableFormats, not derived |
+ PtnElem *next; |
+ |
+ PtnElem(const UnicodeString &basePattern, const UnicodeString &pattern); |
+ virtual ~PtnElem(); |
+ |
+}; |
+ |
+class FormatParser : public UMemory { |
+public: |
+ UnicodeString items[MAX_DT_TOKEN]; |
+ int32_t itemNumber; |
+ |
+ FormatParser(); |
+ virtual ~FormatParser(); |
+ void set(const UnicodeString& patternString); |
+ UBool isQuoteLiteral(const UnicodeString& s) const; |
+ void getQuoteLiteral(UnicodeString& quote, int32_t *itemIndex); |
+ int32_t getCanonicalIndex(const UnicodeString& s) { return getCanonicalIndex(s, TRUE); }; |
+ int32_t getCanonicalIndex(const UnicodeString& s, UBool strict); |
+ UBool isPatternSeparator(UnicodeString& field); |
+ void setFilter(UErrorCode &status); |
+ |
+private: |
+ typedef enum TokenStatus { |
+ START, |
+ ADD_TOKEN, |
+ SYNTAX_ERROR, |
+ DONE |
+ } ToeknStatus; |
+ |
+ TokenStatus status; |
+ virtual TokenStatus setTokens(const UnicodeString& pattern, int32_t startPos, int32_t *len); |
+}; |
+ |
+class DistanceInfo : public UMemory { |
+public: |
+ int32_t missingFieldMask; |
+ int32_t extraFieldMask; |
+ |
+ DistanceInfo() {}; |
+ virtual ~DistanceInfo() {}; |
+ void clear() { missingFieldMask = extraFieldMask = 0; }; |
+ void setTo(DistanceInfo& other); |
+ void addMissing(int32_t field) { missingFieldMask |= (1<<field); }; |
+ void addExtra(int32_t field) { extraFieldMask |= (1<<field); }; |
+}; |
+ |
+class DateTimeMatcher: public UMemory { |
+public: |
+ PtnSkeleton skeleton; |
+ |
+ void getBasePattern(UnicodeString &basePattern); |
+ UnicodeString getPattern(); |
+ void set(const UnicodeString& pattern, FormatParser* fp); |
+ void set(const UnicodeString& pattern, FormatParser* fp, PtnSkeleton& skeleton); |
+ void copyFrom(const PtnSkeleton& skeleton); |
+ void copyFrom(); |
+ PtnSkeleton* getSkeletonPtr(); |
+ UBool equals(const DateTimeMatcher* other) const; |
+ int32_t getDistance(const DateTimeMatcher& other, int32_t includeMask, DistanceInfo& distanceInfo); |
+ DateTimeMatcher(); |
+ DateTimeMatcher(const DateTimeMatcher& other); |
+ virtual ~DateTimeMatcher() {}; |
+ int32_t getFieldMask(); |
+}; |
+ |
+class PatternMap : public UMemory { |
+public: |
+ PtnElem *boot[MAX_PATTERN_ENTRIES]; |
+ PatternMap(); |
+ virtual ~PatternMap(); |
+ void add(const UnicodeString& basePattern, const PtnSkeleton& skeleton, const UnicodeString& value, UBool skeletonWasSpecified, UErrorCode& status); |
+ const UnicodeString* getPatternFromBasePattern(UnicodeString& basePattern, UBool& skeletonWasSpecified); |
+ const UnicodeString* getPatternFromSkeleton(PtnSkeleton& skeleton, const PtnSkeleton** specifiedSkeletonPtr = 0); |
+ void copyFrom(const PatternMap& other, UErrorCode& status); |
+ PtnElem* getHeader(UChar baseChar); |
+ UBool equals(const PatternMap& other); |
+private: |
+ UBool isDupAllowed; |
+ PtnElem* getDuplicateElem(const UnicodeString &basePattern, const PtnSkeleton& skeleton, PtnElem *baseElem); |
+}; // end PatternMap |
+ |
+class PatternMapIterator : public UMemory { |
+public: |
+ PatternMapIterator(); |
+ virtual ~PatternMapIterator(); |
+ void set(PatternMap& patternMap); |
+ PtnSkeleton* getSkeleton(); |
+ UBool hasNext(); |
+ DateTimeMatcher& next(); |
+private: |
+ int32_t bootIndex; |
+ PtnElem *nodePtr; |
+ DateTimeMatcher *matcher; |
+ PatternMap *patternMap; |
+}; |
+ |
+class DTSkeletonEnumeration : public StringEnumeration { |
+public: |
+ DTSkeletonEnumeration(PatternMap &patternMap, dtStrEnum type, UErrorCode& status); |
+ virtual ~DTSkeletonEnumeration(); |
+ static UClassID U_EXPORT2 getStaticClassID(void); |
+ virtual UClassID getDynamicClassID(void) const; |
+ virtual const UnicodeString* snext(UErrorCode& status); |
+ virtual void reset(UErrorCode& status); |
+ virtual int32_t count(UErrorCode& status) const; |
+private: |
+ int32_t pos; |
+ UBool isCanonicalItem(const UnicodeString& item); |
+ UVector *fSkeletons; |
+}; |
+ |
+class DTRedundantEnumeration : public StringEnumeration { |
+public: |
+ DTRedundantEnumeration(); |
+ virtual ~DTRedundantEnumeration(); |
+ static UClassID U_EXPORT2 getStaticClassID(void); |
+ virtual UClassID getDynamicClassID(void) const; |
+ virtual const UnicodeString* snext(UErrorCode& status); |
+ virtual void reset(UErrorCode& status); |
+ virtual int32_t count(UErrorCode& status) const; |
+ void add(const UnicodeString &pattern, UErrorCode& status); |
+private: |
+ int32_t pos; |
+ UBool isCanonicalItem(const UnicodeString& item); |
+ UVector *fPatterns; |
+}; |
+ |
+U_NAMESPACE_END |
+ |
+#endif |
Property changes on: icu46/source/i18n/dtptngen_impl.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |