16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 2007-2013, International Business Machines Corporation and 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* others. All Rights Reserved. * 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* File DTPTNGEN.H 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "uvector.h" 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef __DTPTNGEN_IMPL_H__ 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define __DTPTNGEN_IMPL_H__ 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// TODO(claireho): Split off Builder class. 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// TODO(claireho): If splitting off Builder class: As subclass or independent? 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define MAX_PATTERN_ENTRIES 52 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define MAX_CLDR_FIELD_LEN 60 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define MAX_DT_TOKEN 50 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define MAX_RESOURCE_FIELD 12 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define MAX_AVAILABLE_FORMATS 12 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define NONE 0 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define EXTRA_FIELD 0x10000 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define MISSING_FIELD 0x1000 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define MAX_STRING_ENUMERATION 200 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define SINGLE_QUOTE ((UChar)0x0027) 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define FORWARDSLASH ((UChar)0x002F) 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define BACKSLASH ((UChar)0x005C) 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define SPACE ((UChar)0x0020) 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define QUOTATION_MARK ((UChar)0x0022) 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define ASTERISK ((UChar)0x002A) 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define PLUSSITN ((UChar)0x002B) 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define COMMA ((UChar)0x002C) 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define HYPHEN ((UChar)0x002D) 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define DOT ((UChar)0x002E) 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define COLON ((UChar)0x003A) 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_A ((UChar)0x0041) 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_C ((UChar)0x0043) 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_D ((UChar)0x0044) 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_E ((UChar)0x0045) 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_F ((UChar)0x0046) 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_G ((UChar)0x0047) 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_H ((UChar)0x0048) 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_J ((UChar)0x004A) 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_K ((UChar)0x004B) 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_L ((UChar)0x004C) 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_M ((UChar)0x004D) 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_O ((UChar)0x004F) 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_Q ((UChar)0x0051) 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_S ((UChar)0x0053) 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_T ((UChar)0x0054) 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_U ((UChar)0x0055) 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_V ((UChar)0x0056) 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_W ((UChar)0x0057) 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_X ((UChar)0x0058) 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_Y ((UChar)0x0059) 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAP_Z ((UChar)0x005A) 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOWLINE ((UChar)0x005F) 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_A ((UChar)0x0061) 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_C ((UChar)0x0063) 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_D ((UChar)0x0064) 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_E ((UChar)0x0065) 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_F ((UChar)0x0066) 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_G ((UChar)0x0067) 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_H ((UChar)0x0068) 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_I ((UChar)0x0069) 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_J ((UChar)0x006A) 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_K ((UChar)0x006B) 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_L ((UChar)0x006C) 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_M ((UChar)0x006D) 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_N ((UChar)0x006E) 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_O ((UChar)0x006F) 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_P ((UChar)0x0070) 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_Q ((UChar)0x0071) 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_R ((UChar)0x0072) 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_S ((UChar)0x0073) 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_T ((UChar)0x0074) 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_U ((UChar)0x0075) 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_V ((UChar)0x0076) 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_W ((UChar)0x0077) 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_X ((UChar)0x0078) 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_Y ((UChar)0x0079) 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LOW_Z ((UChar)0x007A) 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define DT_SHORT -0x102 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define DT_LONG -0x103 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define DT_NUMERIC 0x100 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define DT_NARROW -0x101 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define DT_DELTA 0x10 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst int32_t UDATPG_FRACTIONAL_MASK = 1<<UDATPG_FRACTIONAL_SECOND_FIELD; 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst int32_t UDATPG_SECOND_AND_FRACTIONAL_MASK = (1<<UDATPG_SECOND_FIELD) | (1<<UDATPG_FRACTIONAL_SECOND_FIELD); 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef enum dtStrEnum { 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DT_BASESKELETON, 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DT_SKELETON, 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DT_PATTERN 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}dtStrEnum; 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgtypedef struct dtTypeElem { 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UChar patternChar; 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UDateTimePatternField field; 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int16_t type; 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int16_t minLen; 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int16_t weight; 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}dtTypeElem; 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass PtnSkeleton : public UMemory { 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t type[UDATPG_FIELD_COUNT]; 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString original[UDATPG_FIELD_COUNT]; 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString baseOriginal[UDATPG_FIELD_COUNT]; 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PtnSkeleton(); 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PtnSkeleton(const PtnSkeleton& other); 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool equals(const PtnSkeleton& other); 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString getSkeleton(); 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString getBaseSkeleton(); 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual ~PtnSkeleton(); 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass PtnElem : public UMemory { 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString basePattern; 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PtnSkeleton *skeleton; 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString pattern; 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool skeletonWasSpecified; // if specified in availableFormats, not derived 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PtnElem *next; 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PtnElem(const UnicodeString &basePattern, const UnicodeString &pattern); 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual ~PtnElem(); 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass FormatParser : public UMemory { 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString items[MAX_DT_TOKEN]; 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t itemNumber; 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org FormatParser(); 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual ~FormatParser(); 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void set(const UnicodeString& patternString); 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool isQuoteLiteral(const UnicodeString& s) const; 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void getQuoteLiteral(UnicodeString& quote, int32_t *itemIndex); 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t getCanonicalIndex(const UnicodeString& s) { return getCanonicalIndex(s, TRUE); } 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t getCanonicalIndex(const UnicodeString& s, UBool strict); 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool isPatternSeparator(UnicodeString& field); 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void setFilter(UErrorCode &status); 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate: 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org typedef enum TokenStatus { 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org START, 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ADD_TOKEN, 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org SYNTAX_ERROR, 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DONE 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } ToeknStatus; 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org TokenStatus status; 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual TokenStatus setTokens(const UnicodeString& pattern, int32_t startPos, int32_t *len); 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass DistanceInfo : public UMemory { 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t missingFieldMask; 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t extraFieldMask; 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DistanceInfo() {} 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual ~DistanceInfo(); 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void clear() { missingFieldMask = extraFieldMask = 0; } 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void setTo(DistanceInfo& other); 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void addMissing(int32_t field) { missingFieldMask |= (1<<field); } 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void addExtra(int32_t field) { extraFieldMask |= (1<<field); } 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass DateTimeMatcher: public UMemory { 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PtnSkeleton skeleton; 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void getBasePattern(UnicodeString &basePattern); 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString getPattern(); 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void set(const UnicodeString& pattern, FormatParser* fp); 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void set(const UnicodeString& pattern, FormatParser* fp, PtnSkeleton& skeleton); 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void copyFrom(const PtnSkeleton& skeleton); 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void copyFrom(); 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PtnSkeleton* getSkeletonPtr(); 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool equals(const DateTimeMatcher* other) const; 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t getDistance(const DateTimeMatcher& other, int32_t includeMask, DistanceInfo& distanceInfo); 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateTimeMatcher(); 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateTimeMatcher(const DateTimeMatcher& other); 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual ~DateTimeMatcher(); 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t getFieldMask(); 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass PatternMap : public UMemory { 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PtnElem *boot[MAX_PATTERN_ENTRIES]; 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PatternMap(); 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual ~PatternMap(); 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void add(const UnicodeString& basePattern, const PtnSkeleton& skeleton, const UnicodeString& value, UBool skeletonWasSpecified, UErrorCode& status); 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UnicodeString* getPatternFromBasePattern(UnicodeString& basePattern, UBool& skeletonWasSpecified); 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const UnicodeString* getPatternFromSkeleton(PtnSkeleton& skeleton, const PtnSkeleton** specifiedSkeletonPtr = 0); 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void copyFrom(const PatternMap& other, UErrorCode& status); 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PtnElem* getHeader(UChar baseChar); 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool equals(const PatternMap& other); 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate: 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool isDupAllowed; 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PtnElem* getDuplicateElem(const UnicodeString &basePattern, const PtnSkeleton& skeleton, PtnElem *baseElem); 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; // end PatternMap 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass PatternMapIterator : public UMemory { 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PatternMapIterator(); 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual ~PatternMapIterator(); 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void set(PatternMap& patternMap); 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PtnSkeleton* getSkeleton(); 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool hasNext(); 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateTimeMatcher& next(); 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate: 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t bootIndex; 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PtnElem *nodePtr; 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DateTimeMatcher *matcher; 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org PatternMap *patternMap; 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass DTSkeletonEnumeration : public StringEnumeration { 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DTSkeletonEnumeration(PatternMap &patternMap, dtStrEnum type, UErrorCode& status); 2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual ~DTSkeletonEnumeration(); 2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UClassID U_EXPORT2 getStaticClassID(void); 2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual UClassID getDynamicClassID(void) const; 2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual const UnicodeString* snext(UErrorCode& status); 2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual void reset(UErrorCode& status); 2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t count(UErrorCode& status) const; 2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate: 2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t pos; 2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool isCanonicalItem(const UnicodeString& item); 2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UVector *fSkeletons; 2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass DTRedundantEnumeration : public StringEnumeration { 2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DTRedundantEnumeration(); 2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual ~DTRedundantEnumeration(); 2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UClassID U_EXPORT2 getStaticClassID(void); 2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual UClassID getDynamicClassID(void) const; 2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual const UnicodeString* snext(UErrorCode& status); 2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual void reset(UErrorCode& status); 2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t count(UErrorCode& status) const; 2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void add(const UnicodeString &pattern, UErrorCode& status); 2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate: 2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t pos; 2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool isCanonicalItem(const UnicodeString& item); 2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UVector *fPatterns; 2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END 2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 264