00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
#ifndef DTFMTSYM_H
00019
#define DTFMTSYM_H
00020
00021
#include "unicode/utypes.h"
00022
00023
#if !UCONFIG_NO_FORMATTING
00024
00025
#include "unicode/uobject.h"
00026
#include "unicode/locid.h"
00027
#include "unicode/resbund.h"
00028
00029
U_NAMESPACE_BEGIN
00030
00031
00032
class SimpleDateFormat;
00033
00071 class U_I18N_API DateFormatSymbols :
public UObject {
00072
public:
00086 DateFormatSymbols(
UErrorCode& status);
00087
00098 DateFormatSymbols(
const Locale& locale,
00099
UErrorCode& status);
00100
00117 DateFormatSymbols(
const char *type,
UErrorCode& status);
00118
00132 DateFormatSymbols(
const Locale& locale,
00133
const char *type,
00134
UErrorCode& status);
00135
00140 DateFormatSymbols(
const DateFormatSymbols&);
00141
00146 DateFormatSymbols& operator=(
const DateFormatSymbols&);
00147
00153 ~DateFormatSymbols();
00154
00162
UBool operator==(
const DateFormatSymbols& other)
const;
00163
00171 UBool operator!=(
const DateFormatSymbols& other)
const {
return !operator==(other); }
00172
00180
const UnicodeString* getEras(int32_t& count)
const;
00181
00188
void setEras(
const UnicodeString* eras, int32_t count);
00189
00196
const UnicodeString* getMonths(int32_t& count)
const;
00197
00205
void setMonths(
const UnicodeString* months, int32_t count);
00206
00214
const UnicodeString* getShortMonths(int32_t& count)
const;
00215
00222
void setShortMonths(
const UnicodeString* shortMonths, int32_t count);
00223
00230
const UnicodeString* getWeekdays(int32_t& count)
const;
00231
00238
void setWeekdays(
const UnicodeString* weekdays, int32_t count);
00239
00246
const UnicodeString* getShortWeekdays(int32_t& count)
const;
00247
00254
void setShortWeekdays(
const UnicodeString* shortWeekdays, int32_t count);
00255
00262
const UnicodeString* getAmPmStrings(int32_t& count)
const;
00263
00270
void setAmPmStrings(
const UnicodeString* ampms, int32_t count);
00271
00279
const UnicodeString** getZoneStrings(int32_t& rowCount, int32_t& columnCount)
const;
00280
00288
void setZoneStrings(
const UnicodeString*
const* strings, int32_t rowCount, int32_t columnCount);
00289
00295
static const UChar *getPatternUChars(
void);
00296
00303
UnicodeString& getLocalPatternChars(
UnicodeString& result)
const;
00304
00311
void setLocalPatternChars(
const UnicodeString& newLocalPatternChars);
00312
00318
Locale getLocale(ULocDataLocaleType type, UErrorCode& status)
const;
00319
00325
virtual UClassID getDynamicClassID() const;
00326
00332 static UClassID getStaticClassID();
00333
00334 private:
00335
00336 friend class
SimpleDateFormat;
00337 friend class DateFormatSymbolsSingleSetter;
00338
00342
UnicodeString* fEras;
00343 int32_t fErasCount;
00344
00348
UnicodeString* fMonths;
00349 int32_t fMonthsCount;
00350
00354
UnicodeString* fShortMonths;
00355 int32_t fShortMonthsCount;
00356
00360
UnicodeString* fWeekdays;
00361 int32_t fWeekdaysCount;
00362
00366
UnicodeString* fShortWeekdays;
00367 int32_t fShortWeekdaysCount;
00368
00372
UnicodeString* fAmPms;
00373 int32_t fAmPmsCount;
00374
00378
UnicodeString** fZoneStrings;
00379 int32_t fZoneStringsRowCount;
00380 int32_t fZoneStringsColCount;
00381
00385
UnicodeString fLocalPatternChars;
00386
00387 private:
00391
char validLocale[ULOC_FULLNAME_CAPACITY];
00392
char actualLocale[ULOC_FULLNAME_CAPACITY];
00393
00394
00395
00396 typedef enum LastResortSize {
00397 kMonthNum = 13,
00398 kMonthLen = 3,
00399
00400 kDayNum = 8,
00401 kDayLen = 2,
00402
00403 kAmPmNum = 2,
00404 kAmPmLen = 3,
00405
00406 kEraNum = 2,
00407 kEraLen = 3,
00408
00409 kZoneNum = 5,
00410 kZoneLen = 4
00411 } LastResortSize;
00412
00413 DateFormatSymbols();
00414
00415
void initField(
UnicodeString **field, int32_t& length,
const ResourceBundle &data, UErrorCode &status);
00416
void initField(
UnicodeString **field, int32_t& length,
const UChar *data, LastResortSize numStr, LastResortSize strLen, UErrorCode &status);
00417
00427
static ResourceBundle
00428 getData(
ResourceBundle &rb,
const char *tag,
const char *type, UErrorCode& status);
00429
00430
00440
void initializeData(
const Locale&,
const char *type, UErrorCode& status, UBool useLastResortData = FALSE);
00441
00450
static void assignArray(
UnicodeString*& dstArray,
00451 int32_t& dstCount,
00452
const UnicodeString* srcArray,
00453 int32_t srcCount);
00454
00465
static UBool arrayCompare(
const UnicodeString* array1,
00466
const UnicodeString* array2,
00467 int32_t count);
00468
00474
void createZoneStrings(
const UnicodeString *
const * otherStrings);
00475
00486 int32_t getZoneIndex(
const UnicodeString& ID)
const;
00487
00488
00489 int32_t _getZoneIndex(
const UnicodeString&
id)
const;
00490
00494
void dispose(
void);
00495
00500
void copyData(
const DateFormatSymbols& other);
00501
00505
void disposeZoneStrings(
void);
00506 };
00507
00508
U_NAMESPACE_END
00509
00510
#endif
00511
00512
#endif // _DTFMTSYM
00513