1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************* 3fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius* Copyright (C) 1997-2014, International Business Machines Corporation and * 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* others. All Rights Reserved. * 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************* 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* File DTFMTSYM.CPP 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Modification History: 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Date Name Description 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 02/19/97 aliu Converted from java. 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 07/21/98 stephen Added getZoneIndex 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Changed weekdays/short weekdays to be one-based 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 06/14/99 stephen Removed SimpleDateFormat::fgTimeZoneDataSuffix 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 11/16/99 weiv Added 'Y' and 'e' to fgPatternChars 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 03/27/00 weiv Keeping resource bundle around! 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 06/30/05 emmons Added eraNames, narrow month/day, standalone context 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 10/12/05 emmons Added setters for eraNames, month/day by width/context 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************* 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/ustring.h" 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/dtfmtsym.h" 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/smpdtfmt.h" 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/msgfmt.h" 29103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#include "unicode/tznames.h" 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "cpputils.h" 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "ucln_in.h" 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "umutex.h" 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "cmemory.h" 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "cstring.h" 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "locbased.h" 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "gregoimp.h" 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "hash.h" 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "uresimp.h" 3950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "ureslocs.h" 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ***************************************************************************** 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// class DateFormatSymbols 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ***************************************************************************** 4450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * These are static arrays we use only in the case where we have no 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * resource data. 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 50fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#define PATTERN_CHARS_LEN 35 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Unlocalized date-time pattern characters. For example: 'y', 'd', etc. All 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * locales use the same these unlocalized pattern characters. 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gPatternChars[] = { 57fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius // GyMdkHmsSEDFwWahKzYeugAZvcLQqVUOXxr 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 0x47, 0x79, 0x4D, 0x64, 0x6B, 0x48, 0x6D, 0x73, 0x53, 0x45, 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 0x44, 0x46, 0x77, 0x57, 0x61, 0x68, 0x4B, 0x7A, 0x59, 0x65, 608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 0x75, 0x67, 0x41, 0x5A, 0x76, 0x63, 0x4c, 0x51, 0x71, 0x56, 61fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 0x55, 0x4F, 0x58, 0x78, 0x72, 0 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* length of an array */ 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0])) 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// Strings of last resort. These are only used if we have no resource 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// files. They aren't designed for actual use, just for backup. 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// These are the month names and abbreviations of last resort. 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortMonthNames[13][3] = 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0031, 0x0000}, /* "01" */ 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0032, 0x0000}, /* "02" */ 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0033, 0x0000}, /* "03" */ 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0034, 0x0000}, /* "04" */ 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0035, 0x0000}, /* "05" */ 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0036, 0x0000}, /* "06" */ 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0037, 0x0000}, /* "07" */ 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0038, 0x0000}, /* "08" */ 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0039, 0x0000}, /* "09" */ 83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0031, 0x0030, 0x0000}, /* "10" */ 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0031, 0x0031, 0x0000}, /* "11" */ 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0031, 0x0032, 0x0000}, /* "12" */ 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0031, 0x0033, 0x0000} /* "13" */ 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// These are the weekday names and abbreviations of last resort. 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortDayNames[8][2] = 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0000}, /* "0" */ 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0031, 0x0000}, /* "1" */ 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0032, 0x0000}, /* "2" */ 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0033, 0x0000}, /* "3" */ 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0034, 0x0000}, /* "4" */ 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0035, 0x0000}, /* "5" */ 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0036, 0x0000}, /* "6" */ 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0037, 0x0000} /* "7" */ 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// These are the quarter names and abbreviations of last resort. 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortQuarters[4][2] = 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0031, 0x0000}, /* "1" */ 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0032, 0x0000}, /* "2" */ 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0033, 0x0000}, /* "3" */ 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0034, 0x0000}, /* "4" */ 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// These are the am/pm and BC/AD markers of last resort. 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortAmPmMarkers[2][3] = 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0041, 0x004D, 0x0000}, /* "AM" */ 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0050, 0x004D, 0x0000} /* "PM" */ 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortEras[2][3] = 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0042, 0x0043, 0x0000}, /* "BC" */ 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0041, 0x0044, 0x0000} /* "AD" */ 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* Sizes for the last resort string arrays */ 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum LastResortSize { 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kMonthNum = 13, 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kMonthLen = 3, 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kDayNum = 8, 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kDayLen = 2, 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kAmPmNum = 2, 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kAmPmLen = 3, 134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kQuarterNum = 4, 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kQuarterLen = 2, 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kEraNum = 2, 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kEraLen = 3, 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kZoneNum = 5, 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kZoneLen = 4, 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kGmtHourNum = 4, 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kGmtHourLen = 10 146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} LastResortSize; 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_BEGIN 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUOBJECT_DEFINE_RTTI_IMPLEMENTATION(DateFormatSymbols) 151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define kSUPPLEMENTAL "supplementalData" 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * These are the tags we expect to see in normal resource bundle files associated 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with a locale and calendar 157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gErasTag[]="eras"; 159103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusstatic const char gCyclicNameSetsTag[]="cyclicNameSets"; 160103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusstatic const char gNameSetYearsTag[]="years"; 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gMonthNamesTag[]="monthNames"; 162103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusstatic const char gMonthPatternsTag[]="monthPatterns"; 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gDayNamesTag[]="dayNames"; 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gNamesWideTag[]="wide"; 165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gNamesAbbrTag[]="abbreviated"; 1668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusstatic const char gNamesShortTag[]="short"; 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gNamesNarrowTag[]="narrow"; 168103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusstatic const char gNamesAllTag[]="all"; 169103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusstatic const char gNamesLeapTag[]="leap"; 170103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusstatic const char gNamesFormatTag[]="format"; 171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gNamesStandaloneTag[]="stand-alone"; 172103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusstatic const char gNamesNumericTag[]="numeric"; 173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gAmPmMarkersTag[]="AmPmMarkers"; 174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gQuartersTag[]="quarters"; 175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 17654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius// static const char gZoneStringsTag[]="zoneStrings"; 177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 17854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius// static const char gLocalPatternCharsTag[]="localPatternChars"; 179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 180103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusstatic const char gContextTransformsTag[]="contextTransforms"; 181103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 18254dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic UMutex LOCK = U_MUTEX_INITIALIZER; 183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Jitterbug 2974: MSVC has a bug whereby new X[0] behaves badly. 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Work around this. 187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic inline UnicodeString* newUnicodeStringArray(size_t count) { 189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return new UnicodeString[count ? count : 1]; 190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::DateFormatSymbols(const Locale& locale, 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status) 196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru : UObject() 197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initializeData(locale, NULL, status); 199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::DateFormatSymbols(UErrorCode& status) 202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru : UObject() 203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initializeData(Locale::getDefault(), NULL, status, TRUE); 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::DateFormatSymbols(const Locale& locale, 209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *type, 210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status) 211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru : UObject() 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initializeData(locale, type, status); 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::DateFormatSymbols(const char *type, UErrorCode& status) 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru : UObject() 218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initializeData(Locale::getDefault(), type, status, TRUE); 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::DateFormatSymbols(const DateFormatSymbols& other) 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru : UObject(other) 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru copyData(other); 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::assignArray(UnicodeString*& dstArray, 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t& dstCount, 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString* srcArray, 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t srcCount) 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // assignArray() is only called by copyData(), which in turn implements the 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // copy constructor and the assignment operator. 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // All strings in a DateFormatSymbols object are created in one of the following 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // three ways that all allow to safely use UnicodeString::fastCopyFrom(): 238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // - readonly-aliases from resource bundles 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // - readonly-aliases or allocated strings from constants 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // - safely cloned strings (with owned buffers) from setXYZ() functions 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Note that this is true for as long as DateFormatSymbols can be constructed 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // only from a locale bundle or set via the cloning API, 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // *and* for as long as all the strings are in *private* fields, preventing 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // a subclass from creating these strings in an "unsafe" way (with respect to fastCopyFrom()). 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dstCount = srcCount; 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dstArray = newUnicodeStringArray(srcCount); 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(dstArray != NULL) { 249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i; 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i=0; i<srcCount; ++i) { 251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dstArray[i].fastCopyFrom(srcArray[i]); 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Create a copy, in fZoneStrings, of the given zone strings array. The 258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * member variables fZoneStringsRowCount and fZoneStringsColCount should 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * be set already by the caller. 260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::createZoneStrings(const UnicodeString *const * otherStrings) 263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t row, col; 265c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru UBool failed = FALSE; 266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStrings = (UnicodeString **)uprv_malloc(fZoneStringsRowCount * sizeof(UnicodeString *)); 268c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru if (fZoneStrings != NULL) { 269c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru for (row=0; row<fZoneStringsRowCount; ++row) 270c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru { 271c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru fZoneStrings[row] = newUnicodeStringArray(fZoneStringsColCount); 272c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru if (fZoneStrings[row] == NULL) { 273c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru failed = TRUE; 274c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru break; 275c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } 276c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru for (col=0; col<fZoneStringsColCount; ++col) { 277c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru // fastCopyFrom() - see assignArray comments 278c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru fZoneStrings[row][col].fastCopyFrom(otherStrings[row][col]); 279c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } 280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 282c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru // If memory allocation failed, roll back and delete fZoneStrings 283c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru if (failed) { 284c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru for (int i = row; i >= 0; i--) { 285c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru delete[] fZoneStrings[i]; 286c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } 287c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru uprv_free(fZoneStrings); 288c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru fZoneStrings = NULL; 289c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } 290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Copy all of the other's data to this. 294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::copyData(const DateFormatSymbols& other) { 297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fEras, fErasCount, other.fEras, other.fErasCount); 298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fEraNames, fEraNamesCount, other.fEraNames, other.fEraNamesCount); 299b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru assignArray(fNarrowEras, fNarrowErasCount, other.fNarrowEras, other.fNarrowErasCount); 300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fMonths, fMonthsCount, other.fMonths, other.fMonthsCount); 301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fShortMonths, fShortMonthsCount, other.fShortMonths, other.fShortMonthsCount); 302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fNarrowMonths, fNarrowMonthsCount, other.fNarrowMonths, other.fNarrowMonthsCount); 303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneMonths, fStandaloneMonthsCount, other.fStandaloneMonths, other.fStandaloneMonthsCount); 304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneShortMonths, fStandaloneShortMonthsCount, other.fStandaloneShortMonths, other.fStandaloneShortMonthsCount); 305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, other.fStandaloneNarrowMonths, other.fStandaloneNarrowMonthsCount); 306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fWeekdays, fWeekdaysCount, other.fWeekdays, other.fWeekdaysCount); 307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fShortWeekdays, fShortWeekdaysCount, other.fShortWeekdays, other.fShortWeekdaysCount); 3088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius assignArray(fShorterWeekdays, fShorterWeekdaysCount, other.fShorterWeekdays, other.fShorterWeekdaysCount); 309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fNarrowWeekdays, fNarrowWeekdaysCount, other.fNarrowWeekdays, other.fNarrowWeekdaysCount); 310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneWeekdays, fStandaloneWeekdaysCount, other.fStandaloneWeekdays, other.fStandaloneWeekdaysCount); 311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneShortWeekdays, fStandaloneShortWeekdaysCount, other.fStandaloneShortWeekdays, other.fStandaloneShortWeekdaysCount); 3128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius assignArray(fStandaloneShorterWeekdays, fStandaloneShorterWeekdaysCount, other.fStandaloneShorterWeekdays, other.fStandaloneShorterWeekdaysCount); 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneNarrowWeekdays, fStandaloneNarrowWeekdaysCount, other.fStandaloneNarrowWeekdays, other.fStandaloneNarrowWeekdaysCount); 314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fAmPms, fAmPmsCount, other.fAmPms, other.fAmPmsCount); 315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fQuarters, fQuartersCount, other.fQuarters, other.fQuartersCount); 316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fShortQuarters, fShortQuartersCount, other.fShortQuarters, other.fShortQuartersCount); 317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneQuarters, fStandaloneQuartersCount, other.fStandaloneQuarters, other.fStandaloneQuartersCount); 318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneShortQuarters, fStandaloneShortQuartersCount, other.fStandaloneShortQuarters, other.fStandaloneShortQuartersCount); 319103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (other.fLeapMonthPatterns != NULL) { 320103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius assignArray(fLeapMonthPatterns, fLeapMonthPatternsCount, other.fLeapMonthPatterns, other.fLeapMonthPatternsCount); 321103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } else { 322103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLeapMonthPatterns = NULL; 323103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLeapMonthPatternsCount = 0; 324103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 325103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (other.fShortYearNames != NULL) { 326103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius assignArray(fShortYearNames, fShortYearNamesCount, other.fShortYearNames, other.fShortYearNamesCount); 327103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } else { 328103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fShortYearNames = NULL; 329103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fShortYearNamesCount = 0; 330103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (other.fZoneStrings != NULL) { 333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsColCount = other.fZoneStringsColCount; 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsRowCount = other.fZoneStringsRowCount; 335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru createZoneStrings((const UnicodeString**)other.fZoneStrings); 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStrings = NULL; 339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsColCount = 0; 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsRowCount = 0; 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZSFLocale = other.fZSFLocale; 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Other zone strings data is created on demand 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocaleZoneStrings = NULL; 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // fastCopyFrom() - see assignArray comments 347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocalPatternChars.fastCopyFrom(other.fLocalPatternChars); 348103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 349103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius uprv_memcpy(fCapitalization, other.fCapitalization, sizeof(fCapitalization)); 350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Assignment operator. 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols& DateFormatSymbols::operator=(const DateFormatSymbols& other) 356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dispose(); 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru copyData(other); 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return *this; 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::~DateFormatSymbols() 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dispose(); 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatSymbols::dispose() 369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 3708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fEras) delete[] fEras; 3718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fEraNames) delete[] fEraNames; 3728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fNarrowEras) delete[] fNarrowEras; 3738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fMonths) delete[] fMonths; 3748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fShortMonths) delete[] fShortMonths; 3758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fNarrowMonths) delete[] fNarrowMonths; 3768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fStandaloneMonths) delete[] fStandaloneMonths; 3778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fStandaloneShortMonths) delete[] fStandaloneShortMonths; 3788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fStandaloneNarrowMonths) delete[] fStandaloneNarrowMonths; 3798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fWeekdays) delete[] fWeekdays; 3808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fShortWeekdays) delete[] fShortWeekdays; 3818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fShorterWeekdays) delete[] fShorterWeekdays; 3828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fNarrowWeekdays) delete[] fNarrowWeekdays; 3838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fStandaloneWeekdays) delete[] fStandaloneWeekdays; 3848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fStandaloneShortWeekdays) delete[] fStandaloneShortWeekdays; 3858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fStandaloneShorterWeekdays) delete[] fStandaloneShorterWeekdays; 3868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fStandaloneNarrowWeekdays) delete[] fStandaloneNarrowWeekdays; 3878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fAmPms) delete[] fAmPms; 3888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fQuarters) delete[] fQuarters; 3898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fShortQuarters) delete[] fShortQuarters; 3908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fStandaloneQuarters) delete[] fStandaloneQuarters; 3918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fStandaloneShortQuarters) delete[] fStandaloneShortQuarters; 3928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fLeapMonthPatterns) delete[] fLeapMonthPatterns; 3938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fShortYearNames) delete[] fShortYearNames; 394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru disposeZoneStrings(); 396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatSymbols::disposeZoneStrings() 399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStrings) { 401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t row = 0; row < fZoneStringsRowCount; ++row) { 402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fZoneStrings[row]; 403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_free(fZoneStrings); 405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fLocaleZoneStrings) { 407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t row = 0; row < fZoneStringsRowCount; ++row) { 408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fLocaleZoneStrings[row]; 409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_free(fLocaleZoneStrings); 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStrings = NULL; 414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocaleZoneStrings = NULL; 415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsRowCount = 0; 416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsColCount = 0; 417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUBool 420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::arrayCompare(const UnicodeString* array1, 421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString* array2, 422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t count) 423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (array1 == array2) return TRUE; 425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (count>0) 426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru --count; 428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (array1[count] != array2[count]) return FALSE; 429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return TRUE; 431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUBool 434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::operator==(const DateFormatSymbols& other) const 435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // First do cheap comparisons 437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (this == &other) { 438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return TRUE; 439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fErasCount == other.fErasCount && 441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEraNamesCount == other.fEraNamesCount && 442b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru fNarrowErasCount == other.fNarrowErasCount && 443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonthsCount == other.fMonthsCount && 444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonthsCount == other.fShortMonthsCount && 445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowMonthsCount == other.fNarrowMonthsCount && 446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneMonthsCount == other.fStandaloneMonthsCount && 447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortMonthsCount == other.fStandaloneShortMonthsCount && 448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowMonthsCount == other.fStandaloneNarrowMonthsCount && 449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdaysCount == other.fWeekdaysCount && 450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdaysCount == other.fShortWeekdaysCount && 4518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fShorterWeekdaysCount == other.fShorterWeekdaysCount && 452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdaysCount == other.fNarrowWeekdaysCount && 453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdaysCount == other.fStandaloneWeekdaysCount && 454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdaysCount == other.fStandaloneShortWeekdaysCount && 4558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fStandaloneShorterWeekdaysCount == other.fStandaloneShorterWeekdaysCount && 456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdaysCount == other.fStandaloneNarrowWeekdaysCount && 457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fAmPmsCount == other.fAmPmsCount && 458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fQuartersCount == other.fQuartersCount && 459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortQuartersCount == other.fShortQuartersCount && 460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneQuartersCount == other.fStandaloneQuartersCount && 461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortQuartersCount == other.fStandaloneShortQuartersCount && 462103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLeapMonthPatternsCount == other.fLeapMonthPatternsCount && 463103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fShortYearNamesCount == other.fShortYearNamesCount && 464103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius (uprv_memcmp(fCapitalization, other.fCapitalization, sizeof(fCapitalization))==0)) 465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Now compare the arrays themselves 467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (arrayCompare(fEras, other.fEras, fErasCount) && 468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fEraNames, other.fEraNames, fEraNamesCount) && 469b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru arrayCompare(fNarrowEras, other.fNarrowEras, fNarrowErasCount) && 470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fMonths, other.fMonths, fMonthsCount) && 471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fShortMonths, other.fShortMonths, fShortMonthsCount) && 472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fNarrowMonths, other.fNarrowMonths, fNarrowMonthsCount) && 473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneMonths, other.fStandaloneMonths, fStandaloneMonthsCount) && 474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneShortMonths, other.fStandaloneShortMonths, fStandaloneShortMonthsCount) && 475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneNarrowMonths, other.fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount) && 476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fWeekdays, other.fWeekdays, fWeekdaysCount) && 477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fShortWeekdays, other.fShortWeekdays, fShortWeekdaysCount) && 4788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius arrayCompare(fShorterWeekdays, other.fShorterWeekdays, fShorterWeekdaysCount) && 479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fNarrowWeekdays, other.fNarrowWeekdays, fNarrowWeekdaysCount) && 480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneWeekdays, other.fStandaloneWeekdays, fStandaloneWeekdaysCount) && 481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneShortWeekdays, other.fStandaloneShortWeekdays, fStandaloneShortWeekdaysCount) && 4828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius arrayCompare(fStandaloneShorterWeekdays, other.fStandaloneShorterWeekdays, fStandaloneShorterWeekdaysCount) && 483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneNarrowWeekdays, other.fStandaloneNarrowWeekdays, fStandaloneNarrowWeekdaysCount) && 484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fAmPms, other.fAmPms, fAmPmsCount) && 485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fQuarters, other.fQuarters, fQuartersCount) && 486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fShortQuarters, other.fShortQuarters, fShortQuartersCount) && 487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneQuarters, other.fStandaloneQuarters, fStandaloneQuartersCount) && 488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneShortQuarters, other.fStandaloneShortQuarters, fStandaloneShortQuartersCount) && 489103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius arrayCompare(fLeapMonthPatterns, other.fLeapMonthPatterns, fLeapMonthPatternsCount) && 490103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius arrayCompare(fShortYearNames, other.fShortYearNames, fShortYearNamesCount)) 491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Compare the contents of fZoneStrings 493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStrings == NULL && other.fZoneStrings == NULL) { 494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZSFLocale == other.fZSFLocale) { 495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return TRUE; 496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else if (fZoneStrings != NULL && other.fZoneStrings != NULL) { 498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStringsRowCount == other.fZoneStringsRowCount 499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru && fZoneStringsColCount == other.fZoneStringsColCount) { 500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool cmpres = TRUE; 501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i = 0; (i < fZoneStringsRowCount) && cmpres; i++) { 502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cmpres = arrayCompare(fZoneStrings[i], other.fZoneStrings[i], fZoneStringsColCount); 503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return cmpres; 505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return FALSE; 508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return FALSE; 511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getEras(int32_t &count) const 517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fErasCount; 519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fEras; 520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getEraNames(int32_t &count) const 524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fEraNamesCount; 526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fEraNames; 527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 530b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruDateFormatSymbols::getNarrowEras(int32_t &count) const 531b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru{ 532b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru count = fNarrowErasCount; 533b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru return fNarrowEras; 534b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru} 535b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 536b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruconst UnicodeString* 537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getMonths(int32_t &count) const 538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fMonthsCount; 540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fMonths; 541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getShortMonths(int32_t &count) const 545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fShortMonthsCount; 547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fShortMonths; 548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getMonths(int32_t &count, DtContextType context, DtWidthType width ) const 552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString *returnValue = NULL; 554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (context) { 556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case FORMAT : 557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch(width) { 558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fMonthsCount; 560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fMonths; 561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 5638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius case SHORT : // no month data for this, defaults to ABBREVIATED 564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fShortMonthsCount; 565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fShortMonths; 566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fNarrowMonthsCount; 569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fNarrowMonths; 570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case STANDALONE : 576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch(width) { 577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneMonthsCount; 579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneMonths; 580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 5828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius case SHORT : // no month data for this, defaults to ABBREVIATED 583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneShortMonthsCount; 584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneShortMonths; 585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneNarrowMonthsCount; 588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneNarrowMonths; 589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_CONTEXT_COUNT : 595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return returnValue; 598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getWeekdays(int32_t &count) const 602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fWeekdaysCount; 604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fWeekdays; 605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getShortWeekdays(int32_t &count) const 609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fShortWeekdaysCount; 611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fShortWeekdays; 612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getWeekdays(int32_t &count, DtContextType context, DtWidthType width) const 616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString *returnValue = NULL; 618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (context) { 619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case FORMAT : 620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch(width) { 621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fWeekdaysCount; 623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fWeekdays; 624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fShortWeekdaysCount; 627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fShortWeekdays; 628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 6298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius case SHORT : 6308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius count = fShorterWeekdaysCount; 6318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius returnValue = fShorterWeekdays; 6328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius break; 633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fNarrowWeekdaysCount; 635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fNarrowWeekdays; 636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case STANDALONE : 642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch(width) { 643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneWeekdaysCount; 645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneWeekdays; 646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneShortWeekdaysCount; 649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneShortWeekdays; 650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 6518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius case SHORT : 6528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius count = fStandaloneShorterWeekdaysCount; 6538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius returnValue = fStandaloneShorterWeekdays; 6548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius break; 655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneNarrowWeekdaysCount; 657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneNarrowWeekdays; 658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_CONTEXT_COUNT : 664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return returnValue; 667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getQuarters(int32_t &count, DtContextType context, DtWidthType width ) const 671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString *returnValue = NULL; 673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (context) { 675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case FORMAT : 676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch(width) { 677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fQuartersCount; 679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fQuarters; 680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 6828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius case SHORT : // no quarter data for this, defaults to ABBREVIATED 683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fShortQuartersCount; 684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fShortQuarters; 685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = 0; 688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = NULL; 689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case STANDALONE : 695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch(width) { 696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneQuartersCount; 698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneQuarters; 699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 7018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius case SHORT : // no quarter data for this, defaults to ABBREVIATED 702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneShortQuartersCount; 703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneShortQuarters; 704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = 0; 707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = NULL; 708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 709b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_CONTEXT_COUNT : 714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return returnValue; 717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getAmPmStrings(int32_t &count) const 721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fAmPmsCount; 723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fAmPms; 724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 726103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusconst UnicodeString* 727103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusDateFormatSymbols::getLeapMonthPatterns(int32_t &count) const 728103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius{ 729103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius count = fLeapMonthPatternsCount; 730103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius return fLeapMonthPatterns; 731103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} 732103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setEras(const UnicodeString* erasArray, int32_t count) 737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fEras) 740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fEras; 741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEras = newUnicodeStringArray(count); 745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(erasArray,fEras, count); 746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fErasCount = count; 747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 750b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setEraNames(const UnicodeString* eraNamesArray, int32_t count) 751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fEraNames) 754b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fEraNames; 755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEraNames = newUnicodeStringArray(count); 759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(eraNamesArray,fEraNames, count); 760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEraNamesCount = count; 761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 762b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 763b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 764b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruDateFormatSymbols::setNarrowEras(const UnicodeString* narrowErasArray, int32_t count) 765b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru{ 766b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // delete the old list if we own it 767b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if (fNarrowEras) 768b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru delete[] fNarrowEras; 769b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 770b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 771b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // than adopting the list passed in) 772b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru fNarrowEras = newUnicodeStringArray(count); 773b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru uprv_arrayCopy(narrowErasArray,fNarrowEras, count); 774b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru fNarrowErasCount = count; 775b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru} 776b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 777b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruvoid 778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setMonths(const UnicodeString* monthsArray, int32_t count) 779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fMonths) 782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fMonths; 783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonths = newUnicodeStringArray(count); 787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fMonths,count); 788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonthsCount = count; 789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 792b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setShortMonths(const UnicodeString* shortMonthsArray, int32_t count) 793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortMonths) 796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fShortMonths; 797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonths = newUnicodeStringArray(count); 801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(shortMonthsArray,fShortMonths, count); 802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonthsCount = count; 803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setMonths(const UnicodeString* monthsArray, int32_t count, DtContextType context, DtWidthType width) 807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (context) { 813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case FORMAT : 814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (width) { 815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fMonths) 817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fMonths; 818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonths = newUnicodeStringArray(count); 819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fMonths,count); 820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonthsCount = count; 821b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortMonths) 824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fShortMonths; 825b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonths = newUnicodeStringArray(count); 826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fShortMonths,count); 827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonthsCount = count; 828b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 830b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fNarrowMonths) 831b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fNarrowMonths; 832b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowMonths = newUnicodeStringArray(count); 833b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fNarrowMonths,count); 834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowMonthsCount = count; 835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 8368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius default : 837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 838b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 840b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case STANDALONE : 841b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (width) { 842b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneMonths) 844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneMonths; 845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneMonths = newUnicodeStringArray(count); 846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fStandaloneMonths,count); 847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneMonthsCount = count; 848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneShortMonths) 851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneShortMonths; 852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortMonths = newUnicodeStringArray(count); 853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fStandaloneShortMonths,count); 854b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortMonthsCount = count; 855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneNarrowMonths) 858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneNarrowMonths; 859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowMonths = newUnicodeStringArray(count); 860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fStandaloneNarrowMonths,count); 861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowMonthsCount = count; 862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 8638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius default : 864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_CONTEXT_COUNT : 868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 871b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatSymbols::setWeekdays(const UnicodeString* weekdaysArray, int32_t count) 873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fWeekdays) 876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fWeekdays; 877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdays = newUnicodeStringArray(count); 881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray,fWeekdays,count); 882b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdaysCount = count; 883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setShortWeekdays(const UnicodeString* shortWeekdaysArray, int32_t count) 887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 888b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortWeekdays) 890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fShortWeekdays; 891b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 892b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 893b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 894b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdays = newUnicodeStringArray(count); 895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(shortWeekdaysArray, fShortWeekdays, count); 896b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdaysCount = count; 897b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 898b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 899b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 900b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setWeekdays(const UnicodeString* weekdaysArray, int32_t count, DtContextType context, DtWidthType width) 901b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 902b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 904b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 905b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 906b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (context) { 907b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case FORMAT : 908b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (width) { 909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 910b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fWeekdays) 911b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fWeekdays; 912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdays = newUnicodeStringArray(count); 913b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray, fWeekdays, count); 914b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdaysCount = count; 915b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 916b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 917b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortWeekdays) 918b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fShortWeekdays; 919b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdays = newUnicodeStringArray(count); 920b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray, fShortWeekdays, count); 921b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdaysCount = count; 922b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 9238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius case SHORT : 9248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fShorterWeekdays) 9258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius delete[] fShorterWeekdays; 9268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fShorterWeekdays = newUnicodeStringArray(count); 9278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius uprv_arrayCopy(weekdaysArray, fShorterWeekdays, count); 9288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fShorterWeekdaysCount = count; 9298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius break; 930b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 931b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fNarrowWeekdays) 932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fNarrowWeekdays; 933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdays = newUnicodeStringArray(count); 934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray, fNarrowWeekdays, count); 935b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdaysCount = count; 936b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 937b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 938b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 939b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 940b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case STANDALONE : 942b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (width) { 943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneWeekdays) 945b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneWeekdays; 946b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdays = newUnicodeStringArray(count); 947b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray, fStandaloneWeekdays, count); 948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdaysCount = count; 949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 950b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 951b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneShortWeekdays) 952b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneShortWeekdays; 953b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdays = newUnicodeStringArray(count); 954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray, fStandaloneShortWeekdays, count); 955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdaysCount = count; 956b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 9578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius case SHORT : 9588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fStandaloneShorterWeekdays) 9598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius delete[] fStandaloneShorterWeekdays; 9608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fStandaloneShorterWeekdays = newUnicodeStringArray(count); 9618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius uprv_arrayCopy(weekdaysArray, fStandaloneShorterWeekdays, count); 9628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fStandaloneShorterWeekdaysCount = count; 9638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius break; 964b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 965b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneNarrowWeekdays) 966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneNarrowWeekdays; 967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdays = newUnicodeStringArray(count); 968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray, fStandaloneNarrowWeekdays, count); 969b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdaysCount = count; 970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 971b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 973b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_CONTEXT_COUNT : 976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setQuarters(const UnicodeString* quartersArray, int32_t count, DtContextType context, DtWidthType width) 982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (context) { 988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case FORMAT : 989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (width) { 990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fQuarters) 992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fQuarters; 993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fQuarters = newUnicodeStringArray(count); 994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( quartersArray,fQuarters,count); 995b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fQuartersCount = count; 996b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortQuarters) 999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fShortQuarters; 1000b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortQuarters = newUnicodeStringArray(count); 1001b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( quartersArray,fShortQuarters,count); 1002b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortQuartersCount = count; 1003b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1004b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 1005b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 1006b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fNarrowQuarters) 1007b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fNarrowQuarters; 1008b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowQuarters = newUnicodeStringArray(count); 1009b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( quartersArray,fNarrowQuarters,count); 1010b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowQuartersCount = count; 1011b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1012b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 10138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius default : 1014b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1015b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1016b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1017b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case STANDALONE : 1018b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (width) { 1019b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 1020b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneQuarters) 1021b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneQuarters; 1022b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneQuarters = newUnicodeStringArray(count); 1023b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( quartersArray,fStandaloneQuarters,count); 1024b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneQuartersCount = count; 1025b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1026b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 1027b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneShortQuarters) 1028b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneShortQuarters; 1029b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortQuarters = newUnicodeStringArray(count); 1030b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( quartersArray,fStandaloneShortQuarters,count); 1031b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortQuartersCount = count; 1032b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 1034b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 1035b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneNarrowQuarters) 1036b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneNarrowQuarters; 1037b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowQuarters = newUnicodeStringArray(count); 1038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( quartersArray,fStandaloneNarrowQuarters,count); 1039b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowQuartersCount = count; 1040b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1041b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 10428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius default : 1043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1044b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1045b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1046b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_CONTEXT_COUNT : 1047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1050b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1051b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1052b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setAmPmStrings(const UnicodeString* amPmsArray, int32_t count) 1053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1054b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 1055b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fAmPms) delete[] fAmPms; 1056b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1057b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 1058b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 1059b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fAmPms = newUnicodeStringArray(count); 1060b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(amPmsArray,fAmPms,count); 1061b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fAmPmsCount = count; 1062b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1063b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1064b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString** 1065b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getZoneStrings(int32_t& rowCount, int32_t& columnCount) const 1066b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1067b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString **result = NULL; 1068b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1069b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru umtx_lock(&LOCK); 1070b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStrings == NULL) { 1071b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fLocaleZoneStrings == NULL) { 1072b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormatSymbols*)this)->initZoneStringsArray(); 1073b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1074b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru result = (const UnicodeString**)fLocaleZoneStrings; 1075b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1076b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru result = (const UnicodeString**)fZoneStrings; 1077b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1078b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru rowCount = fZoneStringsRowCount; 1079b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru columnCount = fZoneStringsColCount; 1080b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru umtx_unlock(&LOCK); 1081b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1082b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result; 1083b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1084b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1085b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho// For now, we include all zones 1086b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#define ZONE_SET UCAL_ZONE_TYPE_ANY 1087b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1088b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho// This code must be called within a synchronized block 1089b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1090b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::initZoneStringsArray(void) { 1091b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (fZoneStrings != NULL || fLocaleZoneStrings != NULL) { 1092b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho return; 1093b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 1094b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1095b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UErrorCode status = U_ZERO_ERROR; 1096b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1097b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho StringEnumeration *tzids = NULL; 1098b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString ** zarray = NULL; 1099b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho TimeZoneNames *tzNames = NULL; 1100b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho int32_t rows = 0; 1101b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1102b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho do { // dummy do-while 1103b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1104b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho tzids = TimeZone::createTimeZoneIDEnumeration(ZONE_SET, NULL, NULL, status); 1105b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho rows = tzids->count(status); 1106b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (U_FAILURE(status)) { 1107b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho break; 1108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1109b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1110b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // Allocate array 1111b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho int32_t size = rows * sizeof(UnicodeString*); 1112b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho zarray = (UnicodeString**)uprv_malloc(size); 1113b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (zarray == NULL) { 1114b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho status = U_MEMORY_ALLOCATION_ERROR; 1115b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho break; 1116b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 1117b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho uprv_memset(zarray, 0, size); 1118b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1119b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho tzNames = TimeZoneNames::createInstance(fZSFLocale, status); 1120b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1121b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho const UnicodeString *tzid; 1122b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho int32_t i = 0; 1123b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UDate now = Calendar::getNow(); 1124b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString tzDispName; 1125b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1126b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho while ((tzid = tzids->snext(status))) { 1127b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (U_FAILURE(status)) { 1128b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho break; 1129b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 1130b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1131b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho zarray[i] = new UnicodeString[5]; 1132b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (zarray[i] == NULL) { 1133b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho status = U_MEMORY_ALLOCATION_ERROR; 1134b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho break; 1135b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 1136b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1137b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho zarray[i][0].setTo(*tzid); 1138b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho zarray[i][1].setTo(tzNames->getDisplayName(*tzid, UTZNM_LONG_STANDARD, now, tzDispName)); 1139b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho zarray[i][2].setTo(tzNames->getDisplayName(*tzid, UTZNM_SHORT_STANDARD, now, tzDispName)); 1140b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho zarray[i][3].setTo(tzNames->getDisplayName(*tzid, UTZNM_LONG_DAYLIGHT, now, tzDispName)); 1141b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho zarray[i][4].setTo(tzNames->getDisplayName(*tzid, UTZNM_SHORT_DAYLIGHT, now, tzDispName)); 1142b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho i++; 1143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1144b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1145b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } while (FALSE); 1146b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1147b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (U_FAILURE(status)) { 1148b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (zarray) { 1149b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho for (int32_t i = 0; i < rows; i++) { 1150b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (zarray[i]) { 1151b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete[] zarray[i]; 1152b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 1153b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 1154b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho uprv_free(zarray); 1155b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 1156b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 1157b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1158b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (tzNames) { 1159b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete tzNames; 1160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1161b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (tzids) { 1162b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete tzids; 1163b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 1164b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1165b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho fLocaleZoneStrings = zarray; 1166b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho fZoneStringsRowCount = rows; 1167b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho fZoneStringsColCount = 5; 1168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setZoneStrings(const UnicodeString* const *strings, int32_t rowCount, int32_t columnCount) 1172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // since deleting a 2-d array is a pain in the butt, we offload that task to 1174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // a separate function 1175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru disposeZoneStrings(); 1176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 1177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 1178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsRowCount = rowCount; 1179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsColCount = columnCount; 1180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru createZoneStrings((const UnicodeString**)strings); 1181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 1184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UChar * U_EXPORT2 1186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getPatternUChars(void) 1187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return gPatternChars; 1189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 119154dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusUDateFormatField U_EXPORT2 119254dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusDateFormatSymbols::getPatternCharIndex(UChar c) { 119354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const UChar *p = u_strchr(gPatternChars, c); 119454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (p == NULL) { 119554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius return UDAT_FIELD_COUNT; 119654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else { 119754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius return static_cast<UDateFormatField>(p - gPatternChars); 119854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 119954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} 120054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 1201fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusstatic const uint64_t kNumericFieldsAlways = 1202fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_YEAR_FIELD) | // y 1203fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_DATE_FIELD) | // d 1204fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_HOUR_OF_DAY1_FIELD) | // k 1205fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_HOUR_OF_DAY0_FIELD) | // H 1206fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_MINUTE_FIELD) | // m 1207fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_SECOND_FIELD) | // s 1208fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_FRACTIONAL_SECOND_FIELD) | // S 1209fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_DAY_OF_YEAR_FIELD) | // D 1210fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_DAY_OF_WEEK_IN_MONTH_FIELD) | // F 1211fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_WEEK_OF_YEAR_FIELD) | // w 1212fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_WEEK_OF_MONTH_FIELD) | // W 1213fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_HOUR1_FIELD) | // h 1214fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_HOUR0_FIELD) | // K 1215fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_YEAR_WOY_FIELD) | // Y 1216fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_EXTENDED_YEAR_FIELD) | // u 1217fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_JULIAN_DAY_FIELD) | // g 1218fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_MILLISECONDS_IN_DAY_FIELD) | // A 1219fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_RELATED_YEAR_FIELD); // r 1220fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius 1221fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusstatic const uint64_t kNumericFieldsForCount12 = 1222fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_MONTH_FIELD) | // M or MM 1223fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_DOW_LOCAL_FIELD) | // e or ee 1224fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_STANDALONE_DAY_FIELD) | // c or cc 1225fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_STANDALONE_MONTH_FIELD) | // L or LL 1226fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_QUARTER_FIELD) | // Q or QQ 1227fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius ((uint64_t)1 << UDAT_STANDALONE_QUARTER_FIELD); // q or qq 122854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 122954dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusUBool U_EXPORT2 123054dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusDateFormatSymbols::isNumericField(UDateFormatField f, int32_t count) { 1231fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius if (f == UDAT_FIELD_COUNT) { 1232fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return FALSE; 1233fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius } 1234fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius uint64_t flag = ((uint64_t)1 << f); 1235fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius return ((kNumericFieldsAlways & flag) != 0 || ((kNumericFieldsForCount12 & flag) != 0 && count < 3)); 123654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} 123754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 123854dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusUBool U_EXPORT2 123954dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusDateFormatSymbols::isNumericPatternChar(UChar c, int32_t count) { 124054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius return isNumericField(getPatternCharIndex(c), count); 124154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} 124254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 1243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 1244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUnicodeString& 1246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getLocalPatternChars(UnicodeString& result) const 1247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // fastCopyFrom() - see assignArray comments 1249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result.fastCopyFrom(fLocalPatternChars); 1250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 1253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setLocalPatternChars(const UnicodeString& newLocalPatternChars) 1256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocalPatternChars = newLocalPatternChars; 1258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 1261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic void 1263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruinitField(UnicodeString **field, int32_t& length, const UResourceBundle *data, UErrorCode &status) { 1264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) { 1265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t strLen = 0; 1266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru length = ures_getSize(data); 1267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *field = newUnicodeStringArray(length); 1268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (*field) { 1269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(int32_t i = 0; i<length; i++) { 1270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *resStr = ures_getStringByIndex(data, i, &strLen, &status); 1271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru (*(field)+i)->setTo(TRUE, resStr, strLen); 1273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 1276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru length = 0; 1277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic void 1283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruinitField(UnicodeString **field, int32_t& length, const UChar *data, LastResortSize numStr, LastResortSize strLen, UErrorCode &status) { 1284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) { 1285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru length = numStr; 1286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *field = newUnicodeStringArray((size_t)numStr); 1287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (*field) { 1288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(int32_t i = 0; i<length; i++) { 1289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // readonly aliases - all "data" strings are constant 1290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // -1 as length for variable-length strings (gLastResortDayNames[0] is empty) 1291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru (*(field)+i)->setTo(TRUE, data+(i*((int32_t)strLen)), -1); 1292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 1295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru length = 0; 1296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1301103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusstatic void 1302103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusinitLeapMonthPattern(UnicodeString *field, int32_t index, const UResourceBundle *data, UErrorCode &status) { 1303103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius field[index].remove(); 1304103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(status)) { 1305103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t strLen = 0; 1306103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const UChar *resStr = ures_getStringByKey(data, gNamesLeapTag, &strLen, &status); 1307103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(status)) { 1308103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius field[index].setTo(TRUE, resStr, strLen); 1309103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1310103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1311103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius status = U_ZERO_ERROR; 1312103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} 1313103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 1314103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliustypedef struct { 1315103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char * usageTypeName; 1316103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DateFormatSymbols::ECapitalizationContextUsageType usageTypeEnumValue; 1317103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} ContextUsageTypeNameToEnumValue; 1318103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 1319103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusstatic const ContextUsageTypeNameToEnumValue contextUsageTypeMap[] = { 1320103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // Entries must be sorted by usageTypeName; entry with NULL name terminates list. 1321103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "day-format-except-narrow", DateFormatSymbols::kCapContextUsageDayFormat }, 1322103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "day-narrow", DateFormatSymbols::kCapContextUsageDayNarrow }, 1323103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "day-standalone-except-narrow", DateFormatSymbols::kCapContextUsageDayStandalone }, 1324103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "era-abbr", DateFormatSymbols::kCapContextUsageEraAbbrev }, 1325103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "era-name", DateFormatSymbols::kCapContextUsageEraWide }, 1326103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "era-narrow", DateFormatSymbols::kCapContextUsageEraNarrow }, 1327103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "metazone-long", DateFormatSymbols::kCapContextUsageMetazoneLong }, 1328103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "metazone-short", DateFormatSymbols::kCapContextUsageMetazoneShort }, 1329103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "month-format-except-narrow", DateFormatSymbols::kCapContextUsageMonthFormat }, 1330103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "month-narrow", DateFormatSymbols::kCapContextUsageMonthNarrow }, 1331103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "month-standalone-except-narrow", DateFormatSymbols::kCapContextUsageMonthStandalone }, 1332103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zone-long", DateFormatSymbols::kCapContextUsageZoneLong }, 1333103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zone-short", DateFormatSymbols::kCapContextUsageZoneShort }, 1334103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { NULL, (DateFormatSymbols::ECapitalizationContextUsageType)0 }, 1335103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius}; 1336103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 1337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::initializeData(const Locale& locale, const char *type, UErrorCode& status, UBool useLastResortData) 1339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i; 1341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t len = 0; 1342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *resStr; 1343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* In case something goes wrong, initialize all of the data to NULL. */ 1344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEras = NULL; 1345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fErasCount = 0; 1346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEraNames = NULL; 1347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEraNamesCount = 0; 1348b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru fNarrowEras = NULL; 1349b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru fNarrowErasCount = 0; 1350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonths = NULL; 1351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonthsCount=0; 1352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonths = NULL; 1353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonthsCount=0; 1354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowMonths = NULL; 1355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowMonthsCount=0; 1356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneMonths = NULL; 1357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneMonthsCount=0; 1358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortMonths = NULL; 1359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortMonthsCount=0; 1360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowMonths = NULL; 1361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowMonthsCount=0; 1362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdays = NULL; 1363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdaysCount=0; 1364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdays = NULL; 1365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdaysCount=0; 13668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fShorterWeekdays = NULL; 13678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fShorterWeekdaysCount=0; 1368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdays = NULL; 1369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdaysCount=0; 1370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdays = NULL; 1371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdaysCount=0; 1372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdays = NULL; 1373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdaysCount=0; 13748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fStandaloneShorterWeekdays = NULL; 13758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fStandaloneShorterWeekdaysCount=0; 1376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdays = NULL; 1377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdaysCount=0; 1378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fAmPms = NULL; 1379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fAmPmsCount=0; 1380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fQuarters = NULL; 1381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fQuartersCount = 0; 1382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortQuarters = NULL; 1383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortQuartersCount = 0; 1384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneQuarters = NULL; 1385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneQuartersCount = 0; 1386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortQuarters = NULL; 1387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortQuartersCount = 0; 1388103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLeapMonthPatterns = NULL; 1389103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLeapMonthPatternsCount = 0; 1390103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fShortYearNames = NULL; 1391103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fShortYearNamesCount = 0; 1392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsRowCount = 0; 1393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsColCount = 0; 1394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStrings = NULL; 1395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocaleZoneStrings = NULL; 1396103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius uprv_memset(fCapitalization, 0, sizeof(fCapitalization)); 1397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // We need to preserve the requested locale for 1399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // lazy ZoneStringFormat instantiation. ZoneStringFormat 1400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // is region sensitive, thus, bundle locale bundle's locale 1401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // is not sufficient. 1402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZSFLocale = locale; 1403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) return; 1405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Retrieve the string arrays we need from the resource bundle file. 1408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * We cast away const here, but that's okay; we won't delete any of 1409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * these. 1410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CalendarData calData(locale, type, status); 1412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // load the first data item 1414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *erasMain = calData.getByKey(gErasTag, status); 1415b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UResourceBundle *eras = ures_getByKeyWithFallback(erasMain, gNamesAbbrTag, NULL, &status); 1416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode oldStatus = status; 1417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *eraNames = ures_getByKeyWithFallback(erasMain, gNamesWideTag, NULL, &status); 1418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { // Workaround because eras/wide was omitted from CLDR 1.3 1419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = oldStatus; 1420b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru eraNames = ures_getByKeyWithFallback(erasMain, gNamesAbbrTag, NULL, &status); 1421b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 1422103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // current ICU4J falls back to abbreviated if narrow eras are missing, so we will too 1423b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru oldStatus = status; 1424b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UResourceBundle *narrowEras = ures_getByKeyWithFallback(erasMain, gNamesNarrowTag, NULL, &status); 1425b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { 1426b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru status = oldStatus; 1427b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru narrowEras = ures_getByKeyWithFallback(erasMain, gNamesAbbrTag, NULL, &status); 1428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1430103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UErrorCode tempStatus = U_ZERO_ERROR; 1431103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UResourceBundle *monthPatterns = calData.getByKey(gMonthPatternsTag, tempStatus); 1432103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(tempStatus) && monthPatterns != NULL) { 1433103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLeapMonthPatterns = newUnicodeStringArray(kMonthPatternsCount); 1434103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (fLeapMonthPatterns) { 1435103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatWide, calData.getByKey2(gMonthPatternsTag, gNamesWideTag, tempStatus), tempStatus); 1436103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatAbbrev, calData.getByKey2(gMonthPatternsTag, gNamesAbbrTag, tempStatus), tempStatus); 1437103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternFormatNarrow, calData.getByKey2(gMonthPatternsTag, gNamesNarrowTag, tempStatus), tempStatus); 1438103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandaloneWide, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesWideTag, tempStatus), tempStatus); 1439103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandaloneAbbrev, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesAbbrTag, tempStatus), tempStatus); 1440103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternStandaloneNarrow, calData.getByKey3(gMonthPatternsTag, gNamesStandaloneTag, gNamesNarrowTag, tempStatus), tempStatus); 1441103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius initLeapMonthPattern(fLeapMonthPatterns, kLeapMonthPatternNumeric, calData.getByKey3(gMonthPatternsTag, gNamesNumericTag, gNamesAllTag, tempStatus), tempStatus); 1442103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(tempStatus)) { 1443103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLeapMonthPatternsCount = kMonthPatternsCount; 1444103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } else { 1445103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius delete[] fLeapMonthPatterns; 1446103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius fLeapMonthPatterns = NULL; 1447103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1448103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1449103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1450103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 1451103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius tempStatus = U_ZERO_ERROR; 1452103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UResourceBundle *cyclicNameSets= calData.getByKey(gCyclicNameSetsTag, tempStatus); 1453103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(tempStatus) && cyclicNameSets != NULL) { 1454103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UResourceBundle *nameSetYears = ures_getByKeyWithFallback(cyclicNameSets, gNameSetYearsTag, NULL, &tempStatus); 1455103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(tempStatus)) { 1456103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UResourceBundle *nameSetYearsFmt = ures_getByKeyWithFallback(nameSetYears, gNamesFormatTag, NULL, &tempStatus); 1457103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(tempStatus)) { 1458103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UResourceBundle *nameSetYearsFmtAbbrev = ures_getByKeyWithFallback(nameSetYearsFmt, gNamesAbbrTag, NULL, &tempStatus); 1459103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(tempStatus)) { 1460103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius initField(&fShortYearNames, fShortYearNamesCount, nameSetYearsFmtAbbrev, tempStatus); 1461103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ures_close(nameSetYearsFmtAbbrev); 1462103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1463103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ures_close(nameSetYearsFmt); 1464103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1465103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ures_close(nameSetYears); 1466103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1467103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1468103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 1469103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius tempStatus = U_ZERO_ERROR; 1470103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UResourceBundle *localeBundle = ures_open(NULL, locale.getName(), &tempStatus); 1471103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(tempStatus)) { 1472103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UResourceBundle *contextTransforms = ures_getByKeyWithFallback(localeBundle, gContextTransformsTag, NULL, &tempStatus); 1473103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(tempStatus)) { 1474103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UResourceBundle *contextTransformUsage; 1475103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius while ( (contextTransformUsage = ures_getNextResource(contextTransforms, NULL, &tempStatus)) != NULL ) { 1476103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const int32_t * intVector = ures_getIntVector(contextTransformUsage, &len, &status); 1477103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(tempStatus) && intVector != NULL && len >= 2) { 14788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char* usageType = ures_getKey(contextTransformUsage); 14798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (usageType != NULL) { 14808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const ContextUsageTypeNameToEnumValue * typeMapPtr = contextUsageTypeMap; 14818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius int32_t compResult = 0; 14828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // linear search; list is short and we cannot be sure that bsearch is available 14838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius while ( typeMapPtr->usageTypeName != NULL && (compResult = uprv_strcmp(usageType, typeMapPtr->usageTypeName)) > 0 ) { 14848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius ++typeMapPtr; 14858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 14868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (typeMapPtr->usageTypeName != NULL && compResult == 0) { 14878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fCapitalization[typeMapPtr->usageTypeEnumValue][0] = intVector[0]; 14888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fCapitalization[typeMapPtr->usageTypeEnumValue][1] = intVector[1]; 14898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 14908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 1491103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1492103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius tempStatus = U_ZERO_ERROR; 1493103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ures_close(contextTransformUsage); 1494103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1495103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ures_close(contextTransforms); 1496103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1497103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ures_close(localeBundle); 1498103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 1499103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 1500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *weekdaysData = NULL; // Data closed by calData 15018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UResourceBundle *abbrWeekdaysData = NULL; // Data closed by calData 15028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UResourceBundle *shorterWeekdaysData = NULL; // Data closed by calData 1503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *narrowWeekdaysData = NULL; // Data closed by calData 1504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *standaloneWeekdaysData = NULL; // Data closed by calData 15058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UResourceBundle *standaloneAbbrWeekdaysData = NULL; // Data closed by calData 15068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius UResourceBundle *standaloneShorterWeekdaysData = NULL; // Data closed by calData 1507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *standaloneNarrowWeekdaysData = NULL; // Data closed by calData 1508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru U_LOCALE_BASED(locBased, *this); 1510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 1511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 1512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (useLastResortData) 1513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 1514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Handle the case in which there is no resource data present. 1515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // We don't have to generate usable patterns in this situation; 1516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we just need to produce something that will be semi-intelligible 1517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // in most locales. 1518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_USING_FALLBACK_WARNING; 1520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fEras, fErasCount, (const UChar *)gLastResortEras, kEraNum, kEraLen, status); 1522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fEraNames, fEraNamesCount, (const UChar *)gLastResortEras, kEraNum, kEraLen, status); 1523b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru initField(&fNarrowEras, fNarrowErasCount, (const UChar *)gLastResortEras, kEraNum, kEraLen, status); 1524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fMonths, fMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status); 1525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fShortMonths, fShortMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status); 1526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fNarrowMonths, fNarrowMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status); 1527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneMonths, fStandaloneMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status); 1528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortMonths, fStandaloneShortMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status); 1529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status); 1530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fWeekdays, fWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 1531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fShortWeekdays, fShortWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 15328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius initField(&fShorterWeekdays, fShorterWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 1533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fNarrowWeekdays, fNarrowWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 1534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneWeekdays, fStandaloneWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 1535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortWeekdays, fStandaloneShortWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 15368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius initField(&fStandaloneShorterWeekdays, fStandaloneShorterWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 1537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneNarrowWeekdays, fStandaloneNarrowWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 1538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fAmPms, fAmPmsCount, (const UChar *)gLastResortAmPmMarkers, kAmPmNum, kAmPmLen, status); 1539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fQuarters, fQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status); 1540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fShortQuarters, fShortQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status); 1541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneQuarters, fStandaloneQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status); 1542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortQuarters, fStandaloneShortQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status); 1543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocalPatternChars.setTo(TRUE, gPatternChars, PATTERN_CHARS_LEN); 1544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // if we make it to here, the resource data is cool, and we can get everything out 1549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // of it that we need except for the time-zone and localized-pattern data, which 1550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // are stored in a separate file 1551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru locBased.setLocaleIDs(ures_getLocaleByType(eras, ULOC_VALID_LOCALE, &status), 1552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ures_getLocaleByType(eras, ULOC_ACTUAL_LOCALE, &status)); 1553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fEras, fErasCount, eras, status); 1555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fEraNames, fEraNamesCount, eraNames, status); 1556b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru initField(&fNarrowEras, fNarrowErasCount, narrowEras, status); 1557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fMonths, fMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesWideTag, status), status); 1559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fShortMonths, fShortMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesAbbrTag, status), status); 1560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fNarrowMonths, fNarrowMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesNarrowTag, status), status); 1562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(status == U_MISSING_RESOURCE_ERROR) { 1563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fNarrowMonths, fNarrowMonthsCount, calData.getByKey3(gMonthNamesTag, gNamesStandaloneTag, gNamesNarrowTag, status), status); 1565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { /* If format/narrow not available, use format/abbreviated */ 1567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fNarrowMonths, fNarrowMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesAbbrTag, status), status); 1569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneMonths, fStandaloneMonthsCount, calData.getByKey3(gMonthNamesTag, gNamesStandaloneTag, gNamesWideTag, status), status); 1572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { /* If standalone/wide not available, use format/wide */ 1573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneMonths, fStandaloneMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesWideTag, status), status); 1575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortMonths, fStandaloneShortMonthsCount, calData.getByKey3(gMonthNamesTag, gNamesStandaloneTag, gNamesAbbrTag, status), status); 1577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { /* If standalone/abbreviated not available, use format/abbreviated */ 1578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortMonths, fStandaloneShortMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesAbbrTag, status), status); 1580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, calData.getByKey3(gMonthNamesTag, gNamesStandaloneTag, gNamesNarrowTag, status), status); 1582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { /* if standalone/narrow not availabe, try format/narrow */ 1583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesNarrowTag, status), status); 1585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { /* if still not there, use format/abbreviated */ 1586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesAbbrTag, status), status); 1588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fAmPms, fAmPmsCount, calData.getByKey(gAmPmMarkersTag, status), status); 1591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fQuarters, fQuartersCount, calData.getByKey2(gQuartersTag, gNamesWideTag, status), status); 1593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fShortQuarters, fShortQuartersCount, calData.getByKey2(gQuartersTag, gNamesAbbrTag, status), status); 1594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneQuarters, fStandaloneQuartersCount, calData.getByKey3(gQuartersTag, gNamesStandaloneTag, gNamesWideTag, status), status); 1596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(status == U_MISSING_RESOURCE_ERROR) { 1597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneQuarters, fStandaloneQuartersCount, calData.getByKey2(gQuartersTag, gNamesWideTag, status), status); 1599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortQuarters, fStandaloneShortQuartersCount, calData.getByKey3(gQuartersTag, gNamesStandaloneTag, gNamesAbbrTag, status), status); 1602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(status == U_MISSING_RESOURCE_ERROR) { 1603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortQuarters, fStandaloneShortQuartersCount, calData.getByKey2(gQuartersTag, gNamesAbbrTag, status), status); 1605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ICU 3.8 or later version no longer uses localized date-time pattern characters by default (ticket#5597) 1608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 1609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // fastCopyFrom()/setTo() - see assignArray comments 1610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByKey(fResourceBundle, gLocalPatternCharsTag, &len, &status); 1611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocalPatternChars.setTo(TRUE, resStr, len); 1612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // If the locale data does not include new pattern chars, use the defaults 1613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // TODO: Consider making this an error, since this may add conflicting characters. 1614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (len < PATTERN_CHARS_LEN) { 1615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocalPatternChars.append(UnicodeString(TRUE, &gPatternChars[len], PATTERN_CHARS_LEN-len)); 1616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocalPatternChars.setTo(TRUE, gPatternChars, PATTERN_CHARS_LEN); 1619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 16208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Format wide weekdays -> fWeekdays 1621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // {sfb} fixed to handle 1-based weekdays 1622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru weekdaysData = calData.getByKey2(gDayNamesTag, gNamesWideTag, status); 1623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdaysCount = ures_getSize(weekdaysData); 1624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdays = new UnicodeString[fWeekdaysCount+1]; 1625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* pin the blame on system. If we cannot get a chunk of memory .. the system is dying!*/ 1626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fWeekdays == NULL) { 1627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // leave fWeekdays[0] empty 1631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i = 0; i<fWeekdaysCount; i++) { 1632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByIndex(weekdaysData, i, &len, &status); 1633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdays[i+1].setTo(TRUE, resStr, len); 1635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdaysCount++; 1637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 16388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Format abbreviated weekdays -> fShortWeekdays 16398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius abbrWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesAbbrTag, status); 16408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fShortWeekdaysCount = ures_getSize(abbrWeekdaysData); 1641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdays = new UnicodeString[fShortWeekdaysCount+1]; 1642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* test for NULL */ 1643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortWeekdays == 0) { 1644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // leave fShortWeekdays[0] empty 1648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i = 0; i<fShortWeekdaysCount; i++) { 16498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius resStr = ures_getStringByIndex(abbrWeekdaysData, i, &len, &status); 1650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdays[i+1].setTo(TRUE, resStr, len); 1652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdaysCount++; 1654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 16558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Format short weekdays -> fShorterWeekdays (fall back to abbreviated) 16568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius shorterWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesShortTag, status); 16578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( status == U_MISSING_RESOURCE_ERROR ) { 16588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius status = U_ZERO_ERROR; 16598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius shorterWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesAbbrTag, status); 16608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 16618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fShorterWeekdaysCount = ures_getSize(shorterWeekdaysData); 16628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fShorterWeekdays = new UnicodeString[fShorterWeekdaysCount+1]; 16638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /* test for NULL */ 16648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fShorterWeekdays == 0) { 16658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius status = U_MEMORY_ALLOCATION_ERROR; 16668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius goto cleanup; 16678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 16688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // leave fShorterWeekdays[0] empty 16698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for(i = 0; i<fShorterWeekdaysCount; i++) { 16708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius resStr = ures_getStringByIndex(shorterWeekdaysData, i, &len, &status); 16718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // setTo() - see assignArray comments 16728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fShorterWeekdays[i+1].setTo(TRUE, resStr, len); 16738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 16748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fShorterWeekdaysCount++; 16758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 16768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Format narrow weekdays -> fNarrowWeekdays 1677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru narrowWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesNarrowTag, status); 1678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(status == U_MISSING_RESOURCE_ERROR) { 1679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru narrowWeekdaysData = calData.getByKey3(gDayNamesTag, gNamesStandaloneTag, gNamesNarrowTag, status); 1681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { 1683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru narrowWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesAbbrTag, status); 1685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdaysCount = ures_getSize(narrowWeekdaysData); 1687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdays = new UnicodeString[fNarrowWeekdaysCount+1]; 1688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* test for NULL */ 1689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fNarrowWeekdays == 0) { 1690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // leave fNarrowWeekdays[0] empty 1694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i = 0; i<fNarrowWeekdaysCount; i++) { 1695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByIndex(narrowWeekdaysData, i, &len, &status); 1696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdays[i+1].setTo(TRUE, resStr, len); 1698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdaysCount++; 1700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 17018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Stand-alone wide weekdays -> fStandaloneWeekdays 1702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru standaloneWeekdaysData = calData.getByKey3(gDayNamesTag, gNamesStandaloneTag, gNamesWideTag, status); 1703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { 1704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru standaloneWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesWideTag, status); 1706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdaysCount = ures_getSize(standaloneWeekdaysData); 1708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdays = new UnicodeString[fStandaloneWeekdaysCount+1]; 1709b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* test for NULL */ 1710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneWeekdays == 0) { 1711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // leave fStandaloneWeekdays[0] empty 1715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i = 0; i<fStandaloneWeekdaysCount; i++) { 1716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByIndex(standaloneWeekdaysData, i, &len, &status); 1717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdays[i+1].setTo(TRUE, resStr, len); 1719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdaysCount++; 1721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 17228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Stand-alone abbreviated weekdays -> fStandaloneShortWeekdays 17238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius standaloneAbbrWeekdaysData = calData.getByKey3(gDayNamesTag, gNamesStandaloneTag, gNamesAbbrTag, status); 1724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { 1725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 17268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius standaloneAbbrWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesAbbrTag, status); 1727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 17288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fStandaloneShortWeekdaysCount = ures_getSize(standaloneAbbrWeekdaysData); 1729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdays = new UnicodeString[fStandaloneShortWeekdaysCount+1]; 1730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* test for NULL */ 1731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneShortWeekdays == 0) { 1732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // leave fStandaloneShortWeekdays[0] empty 1736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i = 0; i<fStandaloneShortWeekdaysCount; i++) { 17378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius resStr = ures_getStringByIndex(standaloneAbbrWeekdaysData, i, &len, &status); 1738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdays[i+1].setTo(TRUE, resStr, len); 1740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdaysCount++; 1742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 17438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Stand-alone short weekdays -> fStandaloneShorterWeekdays (fall back to format abbreviated) 17448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius standaloneShorterWeekdaysData = calData.getByKey3(gDayNamesTag, gNamesStandaloneTag, gNamesShortTag, status); 17458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if ( status == U_MISSING_RESOURCE_ERROR ) { 17468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius status = U_ZERO_ERROR; 17478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius standaloneShorterWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesAbbrTag, status); 17488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 17498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fStandaloneShorterWeekdaysCount = ures_getSize(standaloneShorterWeekdaysData); 17508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fStandaloneShorterWeekdays = new UnicodeString[fStandaloneShorterWeekdaysCount+1]; 17518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius /* test for NULL */ 17528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (fStandaloneShorterWeekdays == 0) { 17538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius status = U_MEMORY_ALLOCATION_ERROR; 17548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius goto cleanup; 17558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 17568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // leave fStandaloneShorterWeekdays[0] empty 17578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius for(i = 0; i<fStandaloneShorterWeekdaysCount; i++) { 17588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius resStr = ures_getStringByIndex(standaloneShorterWeekdaysData, i, &len, &status); 17598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // setTo() - see assignArray comments 17608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fStandaloneShorterWeekdays[i+1].setTo(TRUE, resStr, len); 17618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius } 17628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius fStandaloneShorterWeekdaysCount++; 17638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 17648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Stand-alone narrow weekdays -> fStandaloneNarrowWeekdays 1765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru standaloneNarrowWeekdaysData = calData.getByKey3(gDayNamesTag, gNamesStandaloneTag, gNamesNarrowTag, status); 1766b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { 1767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru standaloneNarrowWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesNarrowTag, status); 1769b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { 1770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru standaloneNarrowWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesAbbrTag, status); 1772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdaysCount = ures_getSize(standaloneNarrowWeekdaysData); 1775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdays = new UnicodeString[fStandaloneNarrowWeekdaysCount+1]; 1776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* test for NULL */ 1777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneNarrowWeekdays == 0) { 1778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // leave fStandaloneNarrowWeekdays[0] empty 1782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i = 0; i<fStandaloneNarrowWeekdaysCount; i++) { 1783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByIndex(standaloneNarrowWeekdaysData, i, &len, &status); 1784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdays[i+1].setTo(TRUE, resStr, len); 1786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdaysCount++; 1788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querucleanup: 1790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ures_close(eras); 1791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ures_close(eraNames); 1792b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru ures_close(narrowEras); 1793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLocale 1796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getLocale(ULocDataLocaleType type, UErrorCode& status) const { 1797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru U_LOCALE_BASED(locBased, *this); 1798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return locBased.getLocale(type, status); 1799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_END 1802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */ 1804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//eof 1806