1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************* 350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* Copyright (C) 1997-2009, 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" 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "cpputils.h" 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "ucln_in.h" 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "umutex.h" 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "cmemory.h" 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "cstring.h" 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "locbased.h" 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "gregoimp.h" 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "hash.h" 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "uresimp.h" 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "zstrfmt.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 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define PATTERN_CHARS_LEN 30 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[] = { 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // GyMdkHmsSEDFwWahKzYeugAZvcLQqV 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, 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 0x75, 0x67, 0x41, 0x5A, 0x76, 0x63, 0x4c, 0x51, 0x71, 0x56, 0 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* length of an array */ 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0])) 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// Strings of last resort. These are only used if we have no resource 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// files. They aren't designed for actual use, just for backup. 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// These are the month names and abbreviations of last resort. 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortMonthNames[13][3] = 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0031, 0x0000}, /* "01" */ 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0032, 0x0000}, /* "02" */ 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0033, 0x0000}, /* "03" */ 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0034, 0x0000}, /* "04" */ 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0035, 0x0000}, /* "05" */ 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0036, 0x0000}, /* "06" */ 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0037, 0x0000}, /* "07" */ 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0038, 0x0000}, /* "08" */ 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0039, 0x0000}, /* "09" */ 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0031, 0x0030, 0x0000}, /* "10" */ 83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0031, 0x0031, 0x0000}, /* "11" */ 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0031, 0x0032, 0x0000}, /* "12" */ 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0031, 0x0033, 0x0000} /* "13" */ 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// These are the weekday names and abbreviations of last resort. 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortDayNames[8][2] = 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0030, 0x0000}, /* "0" */ 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0031, 0x0000}, /* "1" */ 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0032, 0x0000}, /* "2" */ 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0033, 0x0000}, /* "3" */ 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0034, 0x0000}, /* "4" */ 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0035, 0x0000}, /* "5" */ 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0036, 0x0000}, /* "6" */ 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0037, 0x0000} /* "7" */ 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// These are the quarter names and abbreviations of last resort. 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortQuarters[4][2] = 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0031, 0x0000}, /* "1" */ 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0032, 0x0000}, /* "2" */ 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0033, 0x0000}, /* "3" */ 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0034, 0x0000}, /* "4" */ 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// These are the am/pm and BC/AD markers of last resort. 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortAmPmMarkers[2][3] = 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0041, 0x004D, 0x0000}, /* "AM" */ 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0050, 0x004D, 0x0000} /* "PM" */ 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortEras[2][3] = 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0042, 0x0043, 0x0000}, /* "BC" */ 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0041, 0x0044, 0x0000} /* "AD" */ 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// These are the zone strings of last resort. 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortZoneStrings[7][4] = 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0047, 0x004D, 0x0054, 0x0000}, /* "GMT" */ 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0047, 0x004D, 0x0054, 0x0000}, /* "GMT" */ 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0047, 0x004D, 0x0054, 0x0000}, /* "GMT" */ 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0047, 0x004D, 0x0054, 0x0000}, /* "GMT" */ 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0047, 0x004D, 0x0054, 0x0000}, /* "GMT" */ 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0047, 0x004D, 0x0054, 0x0000}, /* "GMT" */ 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0047, 0x004D, 0x0054, 0x0000} /* "GMT" */ 134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortGmtFormat[] = 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x0047, 0x004D, 0x0054, 0x007B, 0x0030, 0x007D, 0x0000}; /* GMT{0} */ 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const UChar gLastResortGmtHourFormats[4][10] = 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x002D, 0x0048, 0x0048, 0x003A, 0x006D, 0x006D, 0x003A, 0x0073, 0x0073, 0x0000}, /* -HH:mm:ss */ 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x002D, 0x0048, 0x0048, 0x003A, 0x006D, 0x006D, 0x0000, 0x0000, 0x0000, 0x0000}, /* -HH:mm */ 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x002B, 0x0048, 0x0048, 0x003A, 0x006D, 0x006D, 0x003A, 0x0073, 0x0073, 0x0000}, /* +HH:mm:ss */ 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru {0x002B, 0x0048, 0x0048, 0x003A, 0x006D, 0x006D, 0x0000, 0x0000, 0x0000, 0x0000} /* +HH:mm */ 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* Sizes for the last resort string arrays */ 148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum LastResortSize { 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kMonthNum = 13, 150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kMonthLen = 3, 151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kDayNum = 8, 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kDayLen = 2, 154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kAmPmNum = 2, 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kAmPmLen = 3, 157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kQuarterNum = 4, 159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kQuarterLen = 2, 160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kEraNum = 2, 162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kEraLen = 3, 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kZoneNum = 5, 165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kZoneLen = 4, 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kGmtHourNum = 4, 168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru kGmtHourLen = 10 169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} LastResortSize; 170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_BEGIN 172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUOBJECT_DEFINE_RTTI_IMPLEMENTATION(DateFormatSymbols) 174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define kSUPPLEMENTAL "supplementalData" 176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * These are the tags we expect to see in normal resource bundle files associated 179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with a locale and calendar 180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gErasTag[]="eras"; 182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gMonthNamesTag[]="monthNames"; 183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gDayNamesTag[]="dayNames"; 184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gNamesWideTag[]="wide"; 185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gNamesAbbrTag[]="abbreviated"; 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gNamesNarrowTag[]="narrow"; 187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gNamesStandaloneTag[]="stand-alone"; 188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gAmPmMarkersTag[]="AmPmMarkers"; 189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gQuartersTag[]="quarters"; 190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gZoneStringsTag[]="zoneStrings"; 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gGmtFormatTag[]="gmtFormat"; 193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gHourFormatTag[]="hourFormat"; 194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char gLocalPatternCharsTag[]="localPatternChars"; 196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic UMTX LOCK; 198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Jitterbug 2974: MSVC has a bug whereby new X[0] behaves badly. 201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Work around this. 202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic inline UnicodeString* newUnicodeStringArray(size_t count) { 204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return new UnicodeString[count ? count : 1]; 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::DateFormatSymbols(const Locale& locale, 210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status) 211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru : UObject() 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initializeData(locale, NULL, status); 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::DateFormatSymbols(UErrorCode& status) 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru : UObject() 218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initializeData(Locale::getDefault(), NULL, status, TRUE); 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::DateFormatSymbols(const Locale& locale, 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *type, 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status) 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru : UObject() 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initializeData(locale, type, status); 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::DateFormatSymbols(const char *type, UErrorCode& status) 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru : UObject() 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initializeData(Locale::getDefault(), type, status, TRUE); 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::DateFormatSymbols(const DateFormatSymbols& other) 238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru : UObject(other) 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru copyData(other); 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::assignArray(UnicodeString*& dstArray, 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t& dstCount, 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString* srcArray, 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t srcCount) 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // assignArray() is only called by copyData(), which in turn implements the 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // copy constructor and the assignment operator. 251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // All strings in a DateFormatSymbols object are created in one of the following 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // three ways that all allow to safely use UnicodeString::fastCopyFrom(): 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // - readonly-aliases from resource bundles 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // - readonly-aliases or allocated strings from constants 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // - safely cloned strings (with owned buffers) from setXYZ() functions 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Note that this is true for as long as DateFormatSymbols can be constructed 258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // only from a locale bundle or set via the cloning API, 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // *and* for as long as all the strings are in *private* fields, preventing 260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // a subclass from creating these strings in an "unsafe" way (with respect to fastCopyFrom()). 261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dstCount = srcCount; 262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dstArray = newUnicodeStringArray(srcCount); 263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(dstArray != NULL) { 264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i; 265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i=0; i<srcCount; ++i) { 266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dstArray[i].fastCopyFrom(srcArray[i]); 267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Create a copy, in fZoneStrings, of the given zone strings array. The 273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * member variables fZoneStringsRowCount and fZoneStringsColCount should 274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * be set already by the caller. 275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::createZoneStrings(const UnicodeString *const * otherStrings) 278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t row, col; 280c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru UBool failed = FALSE; 281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStrings = (UnicodeString **)uprv_malloc(fZoneStringsRowCount * sizeof(UnicodeString *)); 283c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru if (fZoneStrings != NULL) { 284c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru for (row=0; row<fZoneStringsRowCount; ++row) 285c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru { 286c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru fZoneStrings[row] = newUnicodeStringArray(fZoneStringsColCount); 287c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru if (fZoneStrings[row] == NULL) { 288c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru failed = TRUE; 289c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru break; 290c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } 291c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru for (col=0; col<fZoneStringsColCount; ++col) { 292c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru // fastCopyFrom() - see assignArray comments 293c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru fZoneStrings[row][col].fastCopyFrom(otherStrings[row][col]); 294c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } 295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 297c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru // If memory allocation failed, roll back and delete fZoneStrings 298c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru if (failed) { 299c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru for (int i = row; i >= 0; i--) { 300c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru delete[] fZoneStrings[i]; 301c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } 302c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru uprv_free(fZoneStrings); 303c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru fZoneStrings = NULL; 304c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } 305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Copy all of the other's data to this. 309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::copyData(const DateFormatSymbols& other) { 312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fEras, fErasCount, other.fEras, other.fErasCount); 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fEraNames, fEraNamesCount, other.fEraNames, other.fEraNamesCount); 314b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru assignArray(fNarrowEras, fNarrowErasCount, other.fNarrowEras, other.fNarrowErasCount); 315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fMonths, fMonthsCount, other.fMonths, other.fMonthsCount); 316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fShortMonths, fShortMonthsCount, other.fShortMonths, other.fShortMonthsCount); 317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fNarrowMonths, fNarrowMonthsCount, other.fNarrowMonths, other.fNarrowMonthsCount); 318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneMonths, fStandaloneMonthsCount, other.fStandaloneMonths, other.fStandaloneMonthsCount); 319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneShortMonths, fStandaloneShortMonthsCount, other.fStandaloneShortMonths, other.fStandaloneShortMonthsCount); 320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, other.fStandaloneNarrowMonths, other.fStandaloneNarrowMonthsCount); 321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fWeekdays, fWeekdaysCount, other.fWeekdays, other.fWeekdaysCount); 322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fShortWeekdays, fShortWeekdaysCount, other.fShortWeekdays, other.fShortWeekdaysCount); 323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fNarrowWeekdays, fNarrowWeekdaysCount, other.fNarrowWeekdays, other.fNarrowWeekdaysCount); 324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneWeekdays, fStandaloneWeekdaysCount, other.fStandaloneWeekdays, other.fStandaloneWeekdaysCount); 325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneShortWeekdays, fStandaloneShortWeekdaysCount, other.fStandaloneShortWeekdays, other.fStandaloneShortWeekdaysCount); 326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneNarrowWeekdays, fStandaloneNarrowWeekdaysCount, other.fStandaloneNarrowWeekdays, other.fStandaloneNarrowWeekdaysCount); 327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fAmPms, fAmPmsCount, other.fAmPms, other.fAmPmsCount); 328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fQuarters, fQuartersCount, other.fQuarters, other.fQuartersCount); 329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fShortQuarters, fShortQuartersCount, other.fShortQuarters, other.fShortQuartersCount); 330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneQuarters, fStandaloneQuartersCount, other.fStandaloneQuarters, other.fStandaloneQuartersCount); 331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fStandaloneShortQuarters, fStandaloneShortQuartersCount, other.fStandaloneShortQuarters, other.fStandaloneShortQuartersCount); 332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fGmtFormat = other.fGmtFormat; 333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assignArray(fGmtHourFormats, fGmtHourFormatsCount, other.fGmtHourFormats, other.fGmtHourFormatsCount); 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (other.fZoneStrings != NULL) { 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsColCount = other.fZoneStringsColCount; 337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsRowCount = other.fZoneStringsRowCount; 338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru createZoneStrings((const UnicodeString**)other.fZoneStrings); 339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStrings = NULL; 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsColCount = 0; 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsRowCount = 0; 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZSFLocale = other.fZSFLocale; 346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Other zone strings data is created on demand 347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringFormat = NULL; 348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocaleZoneStrings = NULL; 349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZSFCachePtr = NULL; 350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZSFLocal = NULL; 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // fastCopyFrom() - see assignArray comments 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocalPatternChars.fastCopyFrom(other.fLocalPatternChars); 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Assignment operator. 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols& DateFormatSymbols::operator=(const DateFormatSymbols& other) 360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dispose(); 362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru copyData(other); 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return *this; 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::~DateFormatSymbols() 368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dispose(); 370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatSymbols::dispose() 373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fEras) delete[] fEras; 375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fEraNames) delete[] fEraNames; 376b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if (fNarrowEras) delete[] fNarrowEras; 377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fMonths) delete[] fMonths; 378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortMonths) delete[] fShortMonths; 379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fNarrowMonths) delete[] fNarrowMonths; 380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneMonths) delete[] fStandaloneMonths; 381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneShortMonths) delete[] fStandaloneShortMonths; 382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneNarrowMonths) delete[] fStandaloneNarrowMonths; 383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fWeekdays) delete[] fWeekdays; 384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortWeekdays) delete[] fShortWeekdays; 385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fNarrowWeekdays) delete[] fNarrowWeekdays; 386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneWeekdays) delete[] fStandaloneWeekdays; 387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneShortWeekdays) delete[] fStandaloneShortWeekdays; 388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneNarrowWeekdays) delete[] fStandaloneNarrowWeekdays; 389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fAmPms) delete[] fAmPms; 390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fQuarters) delete[] fQuarters; 391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortQuarters) delete[] fShortQuarters; 392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneQuarters) delete[] fStandaloneQuarters; 393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneShortQuarters) delete[] fStandaloneShortQuarters; 394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fGmtHourFormats) delete[] fGmtHourFormats; 395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru disposeZoneStrings(); 397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatSymbols::disposeZoneStrings() 400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStrings) { 402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t row = 0; row < fZoneStringsRowCount; ++row) { 403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fZoneStrings[row]; 404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_free(fZoneStrings); 406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fLocaleZoneStrings) { 408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t row = 0; row < fZoneStringsRowCount; ++row) { 409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fLocaleZoneStrings[row]; 410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_free(fLocaleZoneStrings); 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZSFLocal) { 414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fZSFLocal; 415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZSFCachePtr) { 417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fZSFCachePtr; 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStrings = NULL; 421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocaleZoneStrings = NULL; 422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsRowCount = 0; 423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsColCount = 0; 424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringFormat = NULL; 426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZSFLocal = NULL; 427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZSFCachePtr = NULL; 428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUBool 431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::arrayCompare(const UnicodeString* array1, 432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString* array2, 433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t count) 434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (array1 == array2) return TRUE; 436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (count>0) 437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru --count; 439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (array1[count] != array2[count]) return FALSE; 440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return TRUE; 442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUBool 445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::operator==(const DateFormatSymbols& other) const 446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // First do cheap comparisons 448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (this == &other) { 449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return TRUE; 450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fErasCount == other.fErasCount && 452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEraNamesCount == other.fEraNamesCount && 453b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru fNarrowErasCount == other.fNarrowErasCount && 454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonthsCount == other.fMonthsCount && 455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonthsCount == other.fShortMonthsCount && 456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowMonthsCount == other.fNarrowMonthsCount && 457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneMonthsCount == other.fStandaloneMonthsCount && 458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortMonthsCount == other.fStandaloneShortMonthsCount && 459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowMonthsCount == other.fStandaloneNarrowMonthsCount && 460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdaysCount == other.fWeekdaysCount && 461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdaysCount == other.fShortWeekdaysCount && 462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdaysCount == other.fNarrowWeekdaysCount && 463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdaysCount == other.fStandaloneWeekdaysCount && 464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdaysCount == other.fStandaloneShortWeekdaysCount && 465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdaysCount == other.fStandaloneNarrowWeekdaysCount && 466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fAmPmsCount == other.fAmPmsCount && 467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fQuartersCount == other.fQuartersCount && 468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortQuartersCount == other.fShortQuartersCount && 469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneQuartersCount == other.fStandaloneQuartersCount && 470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortQuartersCount == other.fStandaloneShortQuartersCount && 471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fGmtHourFormatsCount == other.fGmtHourFormatsCount && 472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fGmtFormat == other.fGmtFormat) 473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Now compare the arrays themselves 475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (arrayCompare(fEras, other.fEras, fErasCount) && 476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fEraNames, other.fEraNames, fEraNamesCount) && 477b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru arrayCompare(fNarrowEras, other.fNarrowEras, fNarrowErasCount) && 478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fMonths, other.fMonths, fMonthsCount) && 479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fShortMonths, other.fShortMonths, fShortMonthsCount) && 480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fNarrowMonths, other.fNarrowMonths, fNarrowMonthsCount) && 481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneMonths, other.fStandaloneMonths, fStandaloneMonthsCount) && 482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneShortMonths, other.fStandaloneShortMonths, fStandaloneShortMonthsCount) && 483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneNarrowMonths, other.fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount) && 484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fWeekdays, other.fWeekdays, fWeekdaysCount) && 485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fShortWeekdays, other.fShortWeekdays, fShortWeekdaysCount) && 486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fNarrowWeekdays, other.fNarrowWeekdays, fNarrowWeekdaysCount) && 487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneWeekdays, other.fStandaloneWeekdays, fStandaloneWeekdaysCount) && 488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneShortWeekdays, other.fStandaloneShortWeekdays, fStandaloneShortWeekdaysCount) && 489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneNarrowWeekdays, other.fStandaloneNarrowWeekdays, fStandaloneNarrowWeekdaysCount) && 490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fAmPms, other.fAmPms, fAmPmsCount) && 491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fQuarters, other.fQuarters, fQuartersCount) && 492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fShortQuarters, other.fShortQuarters, fShortQuartersCount) && 493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneQuarters, other.fStandaloneQuarters, fStandaloneQuartersCount) && 494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fStandaloneShortQuarters, other.fStandaloneShortQuarters, fStandaloneShortQuartersCount) && 495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru arrayCompare(fGmtHourFormats, other.fGmtHourFormats, fGmtHourFormatsCount)) 496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Compare the contents of fZoneStrings 498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStrings == NULL && other.fZoneStrings == NULL) { 499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZSFLocale == other.fZSFLocale) { 500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return TRUE; 501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else if (fZoneStrings != NULL && other.fZoneStrings != NULL) { 503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStringsRowCount == other.fZoneStringsRowCount 504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru && fZoneStringsColCount == other.fZoneStringsColCount) { 505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool cmpres = TRUE; 506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i = 0; (i < fZoneStringsRowCount) && cmpres; i++) { 507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cmpres = arrayCompare(fZoneStrings[i], other.fZoneStrings[i], fZoneStringsColCount); 508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return cmpres; 510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return FALSE; 513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return FALSE; 516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getEras(int32_t &count) const 522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fErasCount; 524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fEras; 525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getEraNames(int32_t &count) const 529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fEraNamesCount; 531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fEraNames; 532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 535b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruDateFormatSymbols::getNarrowEras(int32_t &count) const 536b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru{ 537b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru count = fNarrowErasCount; 538b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru return fNarrowEras; 539b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru} 540b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 541b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruconst UnicodeString* 542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getMonths(int32_t &count) const 543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fMonthsCount; 545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fMonths; 546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getShortMonths(int32_t &count) const 550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fShortMonthsCount; 552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fShortMonths; 553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getMonths(int32_t &count, DtContextType context, DtWidthType width ) const 557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString *returnValue = NULL; 559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (context) { 561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case FORMAT : 562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch(width) { 563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fMonthsCount; 565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fMonths; 566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fShortMonthsCount; 569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fShortMonths; 570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fNarrowMonthsCount; 573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fNarrowMonths; 574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case STANDALONE : 580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch(width) { 581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneMonthsCount; 583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneMonths; 584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneShortMonthsCount; 587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneShortMonths; 588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneNarrowMonthsCount; 591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneNarrowMonths; 592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_CONTEXT_COUNT : 598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return returnValue; 601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getWeekdays(int32_t &count) const 605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fWeekdaysCount; 607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fWeekdays; 608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getShortWeekdays(int32_t &count) const 612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fShortWeekdaysCount; 614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fShortWeekdays; 615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getWeekdays(int32_t &count, DtContextType context, DtWidthType width) const 619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString *returnValue = NULL; 621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (context) { 622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case FORMAT : 623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch(width) { 624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fWeekdaysCount; 626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fWeekdays; 627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fShortWeekdaysCount; 630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fShortWeekdays; 631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fNarrowWeekdaysCount; 634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fNarrowWeekdays; 635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case STANDALONE : 641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch(width) { 642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneWeekdaysCount; 644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneWeekdays; 645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneShortWeekdaysCount; 648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneShortWeekdays; 649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneNarrowWeekdaysCount; 652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneNarrowWeekdays; 653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_CONTEXT_COUNT : 659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return returnValue; 662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getQuarters(int32_t &count, DtContextType context, DtWidthType width ) const 666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString *returnValue = NULL; 668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (context) { 670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case FORMAT : 671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch(width) { 672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fQuartersCount; 674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fQuarters; 675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fShortQuartersCount; 678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fShortQuarters; 679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = 0; 682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = NULL; 683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case STANDALONE : 689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch(width) { 690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneQuartersCount; 692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneQuarters; 693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fStandaloneShortQuartersCount; 696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = fStandaloneShortQuarters; 697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = 0; 700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru returnValue = NULL; 701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_CONTEXT_COUNT : 707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 709b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return returnValue; 710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString* 713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getAmPmStrings(int32_t &count) const 714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru count = fAmPmsCount; 716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fAmPms; 717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setEras(const UnicodeString* erasArray, int32_t count) 723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fEras) 726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fEras; 727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEras = newUnicodeStringArray(count); 731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(erasArray,fEras, count); 732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fErasCount = count; 733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setEraNames(const UnicodeString* eraNamesArray, int32_t count) 737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fEraNames) 740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fEraNames; 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 fEraNames = newUnicodeStringArray(count); 745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(eraNamesArray,fEraNames, count); 746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEraNamesCount = count; 747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 750b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruDateFormatSymbols::setNarrowEras(const UnicodeString* narrowErasArray, int32_t count) 751b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru{ 752b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // delete the old list if we own it 753b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if (fNarrowEras) 754b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru delete[] fNarrowEras; 755b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 756b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 757b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // than adopting the list passed in) 758b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru fNarrowEras = newUnicodeStringArray(count); 759b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru uprv_arrayCopy(narrowErasArray,fNarrowEras, count); 760b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru fNarrowErasCount = count; 761b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru} 762b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 763b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruvoid 764b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setMonths(const UnicodeString* monthsArray, int32_t count) 765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 766b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fMonths) 768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fMonths; 769b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonths = newUnicodeStringArray(count); 773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fMonths,count); 774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonthsCount = count; 775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setShortMonths(const UnicodeString* shortMonthsArray, int32_t count) 779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortMonths) 782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fShortMonths; 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 fShortMonths = newUnicodeStringArray(count); 787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(shortMonthsArray,fShortMonths, count); 788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonthsCount = count; 789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 792b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setMonths(const UnicodeString* monthsArray, int32_t count, DtContextType context, DtWidthType width) 793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (context) { 799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case FORMAT : 800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (width) { 801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fMonths) 803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fMonths; 804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonths = newUnicodeStringArray(count); 805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fMonths,count); 806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonthsCount = count; 807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortMonths) 810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fShortMonths; 811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonths = newUnicodeStringArray(count); 812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fShortMonths,count); 813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonthsCount = count; 814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fNarrowMonths) 817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fNarrowMonths; 818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowMonths = newUnicodeStringArray(count); 819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fNarrowMonths,count); 820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowMonthsCount = count; 821b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 825b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case STANDALONE : 827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (width) { 828b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneMonths) 830b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneMonths; 831b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneMonths = newUnicodeStringArray(count); 832b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fStandaloneMonths,count); 833b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneMonthsCount = count; 834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 836b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneShortMonths) 837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneShortMonths; 838b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortMonths = newUnicodeStringArray(count); 839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fStandaloneShortMonths,count); 840b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortMonthsCount = count; 841b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 842b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneNarrowMonths) 844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneNarrowMonths; 845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowMonths = newUnicodeStringArray(count); 846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( monthsArray,fStandaloneNarrowMonths,count); 847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowMonthsCount = count; 848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_CONTEXT_COUNT : 854b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatSymbols::setWeekdays(const UnicodeString* weekdaysArray, int32_t count) 859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fWeekdays) 862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fWeekdays; 863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdays = newUnicodeStringArray(count); 867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray,fWeekdays,count); 868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdaysCount = count; 869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 871b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setShortWeekdays(const UnicodeString* shortWeekdaysArray, int32_t count) 873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortWeekdays) 876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fShortWeekdays; 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 fShortWeekdays = newUnicodeStringArray(count); 881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(shortWeekdaysArray, fShortWeekdays, count); 882b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdaysCount = count; 883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setWeekdays(const UnicodeString* weekdaysArray, int32_t count, DtContextType context, DtWidthType width) 887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 888b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 891b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 892b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (context) { 893b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case FORMAT : 894b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (width) { 895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 896b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fWeekdays) 897b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fWeekdays; 898b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdays = newUnicodeStringArray(count); 899b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray, fWeekdays, count); 900b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdaysCount = count; 901b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 902b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortWeekdays) 904b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fShortWeekdays; 905b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdays = newUnicodeStringArray(count); 906b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray, fShortWeekdays, count); 907b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdaysCount = count; 908b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 910b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fNarrowWeekdays) 911b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fNarrowWeekdays; 912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdays = newUnicodeStringArray(count); 913b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray, fNarrowWeekdays, count); 914b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdaysCount = count; 915b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 916b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 917b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 918b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 919b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 920b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case STANDALONE : 921b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (width) { 922b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 923b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneWeekdays) 924b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneWeekdays; 925b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdays = newUnicodeStringArray(count); 926b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray, fStandaloneWeekdays, count); 927b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdaysCount = count; 928b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 930b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneShortWeekdays) 931b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneShortWeekdays; 932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdays = newUnicodeStringArray(count); 933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray, fStandaloneShortWeekdays, count); 934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdaysCount = count; 935b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 936b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 937b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneNarrowWeekdays) 938b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneNarrowWeekdays; 939b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdays = newUnicodeStringArray(count); 940b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(weekdaysArray, fStandaloneNarrowWeekdays, count); 941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdaysCount = count; 942b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 945b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 946b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 947b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_CONTEXT_COUNT : 948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 950b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 951b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 952b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 953b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setQuarters(const UnicodeString* quartersArray, int32_t count, DtContextType context, DtWidthType width) 954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 956b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 957b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 958b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (context) { 960b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case FORMAT : 961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (width) { 962b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 963b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fQuarters) 964b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fQuarters; 965b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fQuarters = newUnicodeStringArray(count); 966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( quartersArray,fQuarters,count); 967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fQuartersCount = count; 968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 969b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortQuarters) 971b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fShortQuarters; 972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortQuarters = newUnicodeStringArray(count); 973b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( quartersArray,fShortQuarters,count); 974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortQuartersCount = count; 975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fNarrowQuarters) 979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fNarrowQuarters; 980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowQuarters = newUnicodeStringArray(count); 981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( quartersArray,fNarrowQuarters,count); 982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowQuartersCount = count; 983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case STANDALONE : 990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (width) { 991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case WIDE : 992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneQuarters) 993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneQuarters; 994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneQuarters = newUnicodeStringArray(count); 995b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( quartersArray,fStandaloneQuarters,count); 996b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneQuartersCount = count; 997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case ABBREVIATED : 999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneShortQuarters) 1000b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneShortQuarters; 1001b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortQuarters = newUnicodeStringArray(count); 1002b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( quartersArray,fStandaloneShortQuarters,count); 1003b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortQuartersCount = count; 1004b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1005b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case NARROW : 1006b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 1007b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneNarrowQuarters) 1008b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete[] fStandaloneNarrowQuarters; 1009b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowQuarters = newUnicodeStringArray(count); 1010b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy( quartersArray,fStandaloneNarrowQuarters,count); 1011b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowQuartersCount = count; 1012b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1013b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1014b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_WIDTH_COUNT : 1015b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1016b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1017b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1018b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru case DT_CONTEXT_COUNT : 1019b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru break; 1020b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1021b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1022b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1023b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1024b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setAmPmStrings(const UnicodeString* amPmsArray, int32_t count) 1025b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1026b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete the old list if we own it 1027b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fAmPms) delete[] fAmPms; 1028b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1029b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 1030b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 1031b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fAmPms = newUnicodeStringArray(count); 1032b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru uprv_arrayCopy(amPmsArray,fAmPms,count); 1033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fAmPmsCount = count; 1034b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1035b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1036b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 1037b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst ZoneStringFormat* 1038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getZoneStringFormat(void) const { 1039b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru umtx_lock(&LOCK); 1040b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStringFormat == NULL) { 1041b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormatSymbols*)this)->initZoneStringFormat(); 1042b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru umtx_unlock(&LOCK); 1044b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fZoneStringFormat; 1045b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1046b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::initZoneStringFormat(void) { 1049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStringFormat == NULL) { 1050b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1051b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStrings) { 1052b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Create an istance of ZoneStringFormat by the custom zone strings array 1053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZSFLocal = new ZoneStringFormat(fZoneStrings, fZoneStringsRowCount, 1054b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsColCount, status); 1055b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) { 1056b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fZSFLocal; 1057b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1058b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringFormat = (const ZoneStringFormat*)fZSFLocal; 1059b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1060b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1061b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZSFCachePtr = ZoneStringFormat::getZoneStringFormat(fZSFLocale, status); 1062b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) { 1063b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fZSFCachePtr; 1064b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1065b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringFormat = fZSFCachePtr->get(); 1066b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1067b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1068b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1069b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1070b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1071b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UnicodeString** 1072b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getZoneStrings(int32_t& rowCount, int32_t& columnCount) const 1073b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1074b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString **result = NULL; 1075b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1076b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru umtx_lock(&LOCK); 1077b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStrings == NULL) { 1078b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fLocaleZoneStrings == NULL) { 1079b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormatSymbols*)this)->initZoneStringsArray(); 1080b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1081b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru result = (const UnicodeString**)fLocaleZoneStrings; 1082b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1083b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru result = (const UnicodeString**)fZoneStrings; 1084b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1085b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru rowCount = fZoneStringsRowCount; 1086b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru columnCount = fZoneStringsColCount; 1087b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru umtx_unlock(&LOCK); 1088b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1089b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result; 1090b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1091b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1092b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1093b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::initZoneStringsArray(void) { 1094b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStrings == NULL && fLocaleZoneStrings == NULL) { 1095b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStringFormat == NULL) { 1096b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initZoneStringFormat(); 1097b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1098b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fZoneStringFormat) { 1099b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocaleZoneStrings = fZoneStringFormat->createZoneStringsArray(uprv_getUTCtime() /* use current time */, 1101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsRowCount, fZoneStringsColCount, status); 1102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setZoneStrings(const UnicodeString* const *strings, int32_t rowCount, int32_t columnCount) 1108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // since deleting a 2-d array is a pain in the butt, we offload that task to 1110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // a separate function 1111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru disposeZoneStrings(); 1112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we always own the new list, which we create here (we duplicate rather 1113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // than adopting the list passed in) 1114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsRowCount = rowCount; 1115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsColCount = columnCount; 1116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru createZoneStrings((const UnicodeString**)strings); 1117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 1120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruconst UChar * U_EXPORT2 1122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getPatternUChars(void) 1123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return gPatternChars; 1125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 1128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUnicodeString& 1130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getLocalPatternChars(UnicodeString& result) const 1131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // fastCopyFrom() - see assignArray comments 1133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result.fastCopyFrom(fLocalPatternChars); 1134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 1137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::setLocalPatternChars(const UnicodeString& newLocalPatternChars) 1140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocalPatternChars = newLocalPatternChars; 1142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//------------------------------------------------------ 1145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic void 1147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruinitField(UnicodeString **field, int32_t& length, const UResourceBundle *data, UErrorCode &status) { 1148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) { 1149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t strLen = 0; 1150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru length = ures_getSize(data); 1151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *field = newUnicodeStringArray(length); 1152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (*field) { 1153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(int32_t i = 0; i<length; i++) { 1154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *resStr = ures_getStringByIndex(data, i, &strLen, &status); 1155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru (*(field)+i)->setTo(TRUE, resStr, strLen); 1157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 1160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru length = 0; 1161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic void 1167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruinitField(UnicodeString **field, int32_t& length, const UChar *data, LastResortSize numStr, LastResortSize strLen, UErrorCode &status) { 1168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) { 1169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru length = numStr; 1170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *field = newUnicodeStringArray((size_t)numStr); 1171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (*field) { 1172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(int32_t i = 0; i<length; i++) { 1173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // readonly aliases - all "data" strings are constant 1174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // -1 as length for variable-length strings (gLastResortDayNames[0] is empty) 1175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru (*(field)+i)->setTo(TRUE, data+(i*((int32_t)strLen)), -1); 1176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 1179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru length = 0; 1180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::initializeData(const Locale& locale, const char *type, UErrorCode& status, UBool useLastResortData) 1187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i; 1189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t len = 0; 1190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *resStr; 1191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* In case something goes wrong, initialize all of the data to NULL. */ 1192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEras = NULL; 1193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fErasCount = 0; 1194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEraNames = NULL; 1195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fEraNamesCount = 0; 1196b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru fNarrowEras = NULL; 1197b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru fNarrowErasCount = 0; 1198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonths = NULL; 1199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fMonthsCount=0; 1200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonths = NULL; 1201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortMonthsCount=0; 1202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowMonths = NULL; 1203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowMonthsCount=0; 1204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneMonths = NULL; 1205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneMonthsCount=0; 1206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortMonths = NULL; 1207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortMonthsCount=0; 1208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowMonths = NULL; 1209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowMonthsCount=0; 1210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdays = NULL; 1211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdaysCount=0; 1212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdays = NULL; 1213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdaysCount=0; 1214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdays = NULL; 1215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdaysCount=0; 1216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdays = NULL; 1217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdaysCount=0; 1218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdays = NULL; 1219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdaysCount=0; 1220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdays = NULL; 1221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdaysCount=0; 1222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fAmPms = NULL; 1223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fAmPmsCount=0; 1224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fQuarters = NULL; 1225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fQuartersCount = 0; 1226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortQuarters = NULL; 1227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortQuartersCount = 0; 1228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneQuarters = NULL; 1229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneQuartersCount = 0; 1230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortQuarters = NULL; 1231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortQuartersCount = 0; 1232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fGmtHourFormats = NULL; 1233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fGmtHourFormatsCount = 0; 1234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsRowCount = 0; 1235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringsColCount = 0; 1236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStrings = NULL; 1237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocaleZoneStrings = NULL; 1238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZoneStringFormat = NULL; 1240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZSFLocal = NULL; 1241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZSFCachePtr = NULL; 1242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // We need to preserve the requested locale for 1244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // lazy ZoneStringFormat instantiation. ZoneStringFormat 1245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // is region sensitive, thus, bundle locale bundle's locale 1246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // is not sufficient. 1247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fZSFLocale = locale; 1248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) return; 1250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Retrieve the string arrays we need from the resource bundle file. 1253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * We cast away const here, but that's okay; we won't delete any of 1254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * these. 1255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru CalendarData calData(locale, type, status); 1257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Use the localeBundle for getting zone GMT formatting patterns 1260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 126150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UResourceBundle *zoneBundle = ures_open(U_ICUDATA_ZONE, locale.getName(), &status); 126250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UResourceBundle *zoneStringsArray = ures_getByKeyWithFallback(zoneBundle, gZoneStringsTag, NULL, &status); 1263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // load the first data item 1265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *erasMain = calData.getByKey(gErasTag, status); 1266b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UResourceBundle *eras = ures_getByKeyWithFallback(erasMain, gNamesAbbrTag, NULL, &status); 1267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode oldStatus = status; 1268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *eraNames = ures_getByKeyWithFallback(erasMain, gNamesWideTag, NULL, &status); 1269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { // Workaround because eras/wide was omitted from CLDR 1.3 1270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = oldStatus; 1271b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru eraNames = ures_getByKeyWithFallback(erasMain, gNamesAbbrTag, NULL, &status); 1272b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } 1273b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // current ICU4J falls back to abbreviated if narrow eras are missing, so we will too 1274b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru oldStatus = status; 1275b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UResourceBundle *narrowEras = ures_getByKeyWithFallback(erasMain, gNamesNarrowTag, NULL, &status); 1276b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { 1277b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru status = oldStatus; 1278b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru narrowEras = ures_getByKeyWithFallback(erasMain, gNamesAbbrTag, NULL, &status); 1279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *lsweekdaysData = NULL; // Data closed by calData 1282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *weekdaysData = NULL; // Data closed by calData 1283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *narrowWeekdaysData = NULL; // Data closed by calData 1284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *standaloneWeekdaysData = NULL; // Data closed by calData 1285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *standaloneShortWeekdaysData = NULL; // Data closed by calData 1286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UResourceBundle *standaloneNarrowWeekdaysData = NULL; // Data closed by calData 1287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru U_LOCALE_BASED(locBased, *this); 1289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 1290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 1291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (useLastResortData) 1292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 1293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Handle the case in which there is no resource data present. 1294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // We don't have to generate usable patterns in this situation; 1295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // we just need to produce something that will be semi-intelligible 1296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // in most locales. 1297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_USING_FALLBACK_WARNING; 1299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fEras, fErasCount, (const UChar *)gLastResortEras, kEraNum, kEraLen, status); 1301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fEraNames, fEraNamesCount, (const UChar *)gLastResortEras, kEraNum, kEraLen, status); 1302b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru initField(&fNarrowEras, fNarrowErasCount, (const UChar *)gLastResortEras, kEraNum, kEraLen, status); 1303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fMonths, fMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status); 1304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fShortMonths, fShortMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status); 1305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fNarrowMonths, fNarrowMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status); 1306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneMonths, fStandaloneMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status); 1307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortMonths, fStandaloneShortMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status); 1308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, (const UChar *)gLastResortMonthNames, kMonthNum, kMonthLen, status); 1309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fWeekdays, fWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 1310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fShortWeekdays, fShortWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 1311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fNarrowWeekdays, fNarrowWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 1312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneWeekdays, fStandaloneWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 1313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortWeekdays, fStandaloneShortWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 1314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneNarrowWeekdays, fStandaloneNarrowWeekdaysCount, (const UChar *)gLastResortDayNames, kDayNum, kDayLen, status); 1315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fAmPms, fAmPmsCount, (const UChar *)gLastResortAmPmMarkers, kAmPmNum, kAmPmLen, status); 1316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fQuarters, fQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status); 1317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fShortQuarters, fShortQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status); 1318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneQuarters, fStandaloneQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status); 1319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortQuarters, fStandaloneShortQuartersCount, (const UChar *)gLastResortQuarters, kQuarterNum, kQuarterLen, status); 1320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fGmtHourFormats, fGmtHourFormatsCount, (const UChar *)gLastResortGmtHourFormats, kGmtHourNum, kGmtHourLen, status); 1321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fGmtFormat.setTo(TRUE, gLastResortGmtFormat, -1); 1322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocalPatternChars.setTo(TRUE, gPatternChars, PATTERN_CHARS_LEN); 1323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // if we make it to here, the resource data is cool, and we can get everything out 1328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // of it that we need except for the time-zone and localized-pattern data, which 1329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // are stored in a separate file 1330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru locBased.setLocaleIDs(ures_getLocaleByType(eras, ULOC_VALID_LOCALE, &status), 1331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ures_getLocaleByType(eras, ULOC_ACTUAL_LOCALE, &status)); 1332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fEras, fErasCount, eras, status); 1334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fEraNames, fEraNamesCount, eraNames, status); 1335b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru initField(&fNarrowEras, fNarrowErasCount, narrowEras, status); 1336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fMonths, fMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesWideTag, status), status); 1338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fShortMonths, fShortMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesAbbrTag, status), status); 1339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fNarrowMonths, fNarrowMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesNarrowTag, status), status); 1341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(status == U_MISSING_RESOURCE_ERROR) { 1342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fNarrowMonths, fNarrowMonthsCount, calData.getByKey3(gMonthNamesTag, gNamesStandaloneTag, gNamesNarrowTag, status), status); 1344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { /* If format/narrow not available, use format/abbreviated */ 1346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fNarrowMonths, fNarrowMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesAbbrTag, status), status); 1348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneMonths, fStandaloneMonthsCount, calData.getByKey3(gMonthNamesTag, gNamesStandaloneTag, gNamesWideTag, status), status); 1351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { /* If standalone/wide not available, use format/wide */ 1352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneMonths, fStandaloneMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesWideTag, status), status); 1354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortMonths, fStandaloneShortMonthsCount, calData.getByKey3(gMonthNamesTag, gNamesStandaloneTag, gNamesAbbrTag, status), status); 1356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { /* If standalone/abbreviated not available, use format/abbreviated */ 1357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortMonths, fStandaloneShortMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesAbbrTag, status), status); 1359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, calData.getByKey3(gMonthNamesTag, gNamesStandaloneTag, gNamesNarrowTag, status), status); 1361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { /* if standalone/narrow not availabe, try format/narrow */ 1362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesNarrowTag, status), status); 1364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { /* if still not there, use format/abbreviated */ 1365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneNarrowMonths, fStandaloneNarrowMonthsCount, calData.getByKey2(gMonthNamesTag, gNamesAbbrTag, status), status); 1367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fAmPms, fAmPmsCount, calData.getByKey(gAmPmMarkersTag, status), status); 1370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fQuarters, fQuartersCount, calData.getByKey2(gQuartersTag, gNamesWideTag, status), status); 1372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fShortQuarters, fShortQuartersCount, calData.getByKey2(gQuartersTag, gNamesAbbrTag, status), status); 1373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneQuarters, fStandaloneQuartersCount, calData.getByKey3(gQuartersTag, gNamesStandaloneTag, gNamesWideTag, status), status); 1375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(status == U_MISSING_RESOURCE_ERROR) { 1376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneQuarters, fStandaloneQuartersCount, calData.getByKey2(gQuartersTag, gNamesWideTag, status), status); 1378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortQuarters, fStandaloneShortQuartersCount, calData.getByKey3(gQuartersTag, gNamesStandaloneTag, gNamesAbbrTag, status), status); 1381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(status == U_MISSING_RESOURCE_ERROR) { 1382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru initField(&fStandaloneShortQuarters, fStandaloneShortQuartersCount, calData.getByKey2(gQuartersTag, gNamesAbbrTag, status), status); 1384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // GMT format patterns 1387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByKeyWithFallback(zoneStringsArray, gGmtFormatTag, &len, &status); 1388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (len > 0) { 1389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fGmtFormat.setTo(TRUE, resStr, len); 1390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByKeyWithFallback(zoneStringsArray, gHourFormatTag, &len, &status); 1393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (len > 0) { 1394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar *sep = u_strchr(resStr, (UChar)0x003B /* ';' */); 1395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (sep != NULL) { 1396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fGmtHourFormats = newUnicodeStringArray(GMT_HOUR_COUNT); 1397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fGmtHourFormats == NULL) { 1398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fGmtHourFormatsCount = GMT_HOUR_COUNT; 1401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fGmtHourFormats[GMT_NEGATIVE_HM].setTo(TRUE, sep + 1, -1); 140250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho fGmtHourFormats[GMT_POSITIVE_HM].setTo(FALSE, resStr, (int32_t)(sep - resStr)); 1403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // CLDR 1.5 does not have GMT offset pattern including second field. 1405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // For now, append "ss" to the end. 1406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fGmtHourFormats[GMT_NEGATIVE_HM].indexOf((UChar)0x003A /* ':' */) != -1) { 1407c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru fGmtHourFormats[GMT_NEGATIVE_HMS] = fGmtHourFormats[GMT_NEGATIVE_HM] + UNICODE_STRING_SIMPLE(":ss"); 1408c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } else if (fGmtHourFormats[GMT_NEGATIVE_HM].indexOf((UChar)0x002E /* '.' */) != -1) { 1409c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru fGmtHourFormats[GMT_NEGATIVE_HMS] = fGmtHourFormats[GMT_NEGATIVE_HM] + UNICODE_STRING_SIMPLE(".ss"); 1410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1411c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru fGmtHourFormats[GMT_NEGATIVE_HMS] = fGmtHourFormats[GMT_NEGATIVE_HM] + UNICODE_STRING_SIMPLE("ss"); 1412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fGmtHourFormats[GMT_POSITIVE_HM].indexOf((UChar)0x003A /* ':' */) != -1) { 1414c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru fGmtHourFormats[GMT_POSITIVE_HMS] = fGmtHourFormats[GMT_POSITIVE_HM] + UNICODE_STRING_SIMPLE(":ss"); 1415c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru } else if (fGmtHourFormats[GMT_POSITIVE_HM].indexOf((UChar)0x002E /* '.' */) != -1) { 1416c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru fGmtHourFormats[GMT_POSITIVE_HMS] = fGmtHourFormats[GMT_POSITIVE_HM] + UNICODE_STRING_SIMPLE(".ss"); 1417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1418c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru fGmtHourFormats[GMT_POSITIVE_HMS] = fGmtHourFormats[GMT_POSITIVE_HM] + UNICODE_STRING_SIMPLE("ss"); 1419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ICU 3.8 or later version no longer uses localized date-time pattern characters by default (ticket#5597) 1425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 1426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // fastCopyFrom()/setTo() - see assignArray comments 1427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByKey(fResourceBundle, gLocalPatternCharsTag, &len, &status); 1428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocalPatternChars.setTo(TRUE, resStr, len); 1429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // If the locale data does not include new pattern chars, use the defaults 1430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // TODO: Consider making this an error, since this may add conflicting characters. 1431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (len < PATTERN_CHARS_LEN) { 1432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocalPatternChars.append(UnicodeString(TRUE, &gPatternChars[len], PATTERN_CHARS_LEN-len)); 1433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fLocalPatternChars.setTo(TRUE, gPatternChars, PATTERN_CHARS_LEN); 1436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // {sfb} fixed to handle 1-based weekdays 1438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru weekdaysData = calData.getByKey2(gDayNamesTag, gNamesWideTag, status); 1439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdaysCount = ures_getSize(weekdaysData); 1440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdays = new UnicodeString[fWeekdaysCount+1]; 1441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* pin the blame on system. If we cannot get a chunk of memory .. the system is dying!*/ 1442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fWeekdays == NULL) { 1443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // leave fWeekdays[0] empty 1447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i = 0; i<fWeekdaysCount; i++) { 1448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByIndex(weekdaysData, i, &len, &status); 1449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdays[i+1].setTo(TRUE, resStr, len); 1451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fWeekdaysCount++; 1453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru lsweekdaysData = calData.getByKey2(gDayNamesTag, gNamesAbbrTag, status); 1455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdaysCount = ures_getSize(lsweekdaysData); 1456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdays = new UnicodeString[fShortWeekdaysCount+1]; 1457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* test for NULL */ 1458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fShortWeekdays == 0) { 1459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // leave fShortWeekdays[0] empty 1463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i = 0; i<fShortWeekdaysCount; i++) { 1464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByIndex(lsweekdaysData, i, &len, &status); 1465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdays[i+1].setTo(TRUE, resStr, len); 1467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fShortWeekdaysCount++; 1469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru narrowWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesNarrowTag, status); 1471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(status == U_MISSING_RESOURCE_ERROR) { 1472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru narrowWeekdaysData = calData.getByKey3(gDayNamesTag, gNamesStandaloneTag, gNamesNarrowTag, status); 1474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { 1476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru narrowWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesAbbrTag, status); 1478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdaysCount = ures_getSize(narrowWeekdaysData); 1480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdays = new UnicodeString[fNarrowWeekdaysCount+1]; 1481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* test for NULL */ 1482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fNarrowWeekdays == 0) { 1483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // leave fNarrowWeekdays[0] empty 1487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i = 0; i<fNarrowWeekdaysCount; i++) { 1488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByIndex(narrowWeekdaysData, i, &len, &status); 1489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdays[i+1].setTo(TRUE, resStr, len); 1491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fNarrowWeekdaysCount++; 1493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru standaloneWeekdaysData = calData.getByKey3(gDayNamesTag, gNamesStandaloneTag, gNamesWideTag, status); 1495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { 1496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru standaloneWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesWideTag, status); 1498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdaysCount = ures_getSize(standaloneWeekdaysData); 1500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdays = new UnicodeString[fStandaloneWeekdaysCount+1]; 1501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* test for NULL */ 1502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneWeekdays == 0) { 1503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // leave fStandaloneWeekdays[0] empty 1507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i = 0; i<fStandaloneWeekdaysCount; i++) { 1508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByIndex(standaloneWeekdaysData, i, &len, &status); 1509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdays[i+1].setTo(TRUE, resStr, len); 1511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneWeekdaysCount++; 1513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru standaloneShortWeekdaysData = calData.getByKey3(gDayNamesTag, gNamesStandaloneTag, gNamesAbbrTag, status); 1515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { 1516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru standaloneShortWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesAbbrTag, status); 1518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdaysCount = ures_getSize(standaloneShortWeekdaysData); 1520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdays = new UnicodeString[fStandaloneShortWeekdaysCount+1]; 1521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* test for NULL */ 1522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneShortWeekdays == 0) { 1523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // leave fStandaloneShortWeekdays[0] empty 1527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i = 0; i<fStandaloneShortWeekdaysCount; i++) { 1528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByIndex(standaloneShortWeekdaysData, i, &len, &status); 1529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdays[i+1].setTo(TRUE, resStr, len); 1531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneShortWeekdaysCount++; 1533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru standaloneNarrowWeekdaysData = calData.getByKey3(gDayNamesTag, gNamesStandaloneTag, gNamesNarrowTag, status); 1535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { 1536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru standaloneNarrowWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesNarrowTag, status); 1538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( status == U_MISSING_RESOURCE_ERROR ) { 1539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru standaloneNarrowWeekdaysData = calData.getByKey2(gDayNamesTag, gNamesAbbrTag, status); 1541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdaysCount = ures_getSize(standaloneNarrowWeekdaysData); 1544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdays = new UnicodeString[fStandaloneNarrowWeekdaysCount+1]; 1545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* test for NULL */ 1546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fStandaloneNarrowWeekdays == 0) { 1547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_MEMORY_ALLOCATION_ERROR; 1548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto cleanup; 1549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // leave fStandaloneNarrowWeekdays[0] empty 1551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for(i = 0; i<fStandaloneNarrowWeekdaysCount; i++) { 1552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru resStr = ures_getStringByIndex(standaloneNarrowWeekdaysData, i, &len, &status); 1553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // setTo() - see assignArray comments 1554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdays[i+1].setTo(TRUE, resStr, len); 1555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fStandaloneNarrowWeekdaysCount++; 1557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querucleanup: 1559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ures_close(eras); 1560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ures_close(eraNames); 1561b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru ures_close(narrowEras); 1562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ures_close(zoneStringsArray); 156350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ures_close(zoneBundle); 1564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruLocale 1567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatSymbols::getLocale(ULocDataLocaleType type, UErrorCode& status) const { 1568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru U_LOCALE_BASED(locBased, *this); 1569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return locBased.getLocale(type, status); 1570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_END 1573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */ 1575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//eof 1577