ICU 54.1 54.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
dtitvinf.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************
3 * Copyright (C) 2008-2014, International Business Machines Corporation and
4 * others. All Rights Reserved.
5 *******************************************************************************
6 *
7 * File DTITVINF.H
8 *
9 *******************************************************************************
10 */
11
12 #ifndef __DTITVINF_H__
13 #define __DTITVINF_H__
14
15 #include "unicode/utypes.h"
16
22 #if !UCONFIG_NO_FORMATTING
23
24 #include "unicode/udat.h"
25 #include "unicode/locid.h"
26 #include "unicode/ucal.h"
27 #include "unicode/dtptngen.h"
28
29 U_NAMESPACE_BEGIN
30
151 class U_I18N_API DateIntervalInfo U_FINAL : public UObject {
152 public:
153 #ifndef U_HIDE_INTERNAL_API
154
167 DateIntervalInfo(UErrorCode& status);
168 #endif /* U_HIDE_INTERNAL_API */
169
170
178 DateIntervalInfo(const Locale& locale, UErrorCode& status);
179
180
185 DateIntervalInfo(const DateIntervalInfo&);
186
191 DateIntervalInfo& operator=(const DateIntervalInfo&);
192
199 virtual DateIntervalInfo* clone(void) const;
200
206 virtual ~DateIntervalInfo();
207
208
216 virtual UBool operator==(const DateIntervalInfo& other) const;
217
225 UBool operator!=(const DateIntervalInfo& other) const;
226
227
228
261 void setIntervalPattern(const UnicodeString& skeleton,
262 UCalendarDateFields lrgDiffCalUnit,
263 const UnicodeString& intervalPattern,
264 UErrorCode& status);
265
276 UnicodeString& getIntervalPattern(const UnicodeString& skeleton,
277 UCalendarDateFields field,
278 UnicodeString& result,
279 UErrorCode& status) const;
280
287 UnicodeString& getFallbackIntervalPattern(UnicodeString& result) const;
288
289
303 void setFallbackIntervalPattern(const UnicodeString& fallbackPattern,
304 UErrorCode& status);
305
306
313 UBool getDefaultOrder() const;
314
315
321 virtual UClassID getDynamicClassID() const;
322
328 static UClassID U_EXPORT2 getStaticClassID();
329
330
331 private:
340 friend class DateIntervalFormat;
341
347 enum IntervalPatternIndex
348 {
349 kIPI_ERA,
350 kIPI_YEAR,
351 kIPI_MONTH,
352 kIPI_DATE,
353 kIPI_AM_PM,
354 kIPI_HOUR,
355 kIPI_MINUTE,
356 kIPI_MAX_INDEX
357 };
358 public:
359 #ifndef U_HIDE_INTERNAL_API
360
364 enum {
365 kMaxIntervalPatternIndex = kIPI_MAX_INDEX
366 };
367 #endif /* U_HIDE_INTERNAL_API */
368 private:
369
370
376 void initializeData(const Locale& locale, UErrorCode& status);
377
378
379 /* Set Interval pattern.
380 *
381 * It sets interval pattern into the hash map.
382 *
383 * @param skeleton skeleton on which the interval pattern based
384 * @param lrgDiffCalUnit the largest different calendar unit.
385 * @param intervalPattern the interval pattern on the largest different
386 * calendar unit.
387 * @param status output param set to success/failure code on exit
388 */
389 void setIntervalPatternInternally(const UnicodeString& skeleton,
390 UCalendarDateFields lrgDiffCalUnit,
391 const UnicodeString& intervalPattern,
392 UErrorCode& status);
393
394
413 const UnicodeString* getBestSkeleton(const UnicodeString& skeleton,
414 int8_t& bestMatchDistanceInfo) const;
415
416
424 static void U_EXPORT2 parseSkeleton(const UnicodeString& skeleton,
425 int32_t* skeletonFieldWidth);
426
427
439 static UBool U_EXPORT2 stringNumeric(int32_t fieldWidth,
440 int32_t anotherFieldWidth,
441 char patternLetter);
442
443
457 static IntervalPatternIndex U_EXPORT2 calendarFieldToIntervalIndex(
458 UCalendarDateFields field,
459 UErrorCode& status);
460
461
467 void deleteHash(Hashtable* hTable);
468
469
476 Hashtable* initHash(UErrorCode& status);
477
478
479
487 void copyHash(const Hashtable* source, Hashtable* target, UErrorCode& status);
488
489
490 // data members
491 // fallback interval pattern
492 UnicodeString fFallbackIntervalPattern;
493 // default order
494 UBool fFirstDateInPtnIsLaterDate;
495
496 // HashMap<UnicodeString, UnicodeString[kIPI_MAX_INDEX]>
497 // HashMap( skeleton, pattern[largest_different_field] )
498 Hashtable* fIntervalPatterns;
499
500 };// end class DateIntervalInfo
501
502
503 inline UBool
504 DateIntervalInfo::operator!=(const DateIntervalInfo& other) const {
505 return !operator==(other);
506 }
507
508
509 U_NAMESPACE_END
510
511 #endif
512
513 #endif
514