ICU 57.1  57.1
dtitvinf.h
Go to the documentation of this file.
1 /*
2  *******************************************************************************
3  * Copyright (C) 2008-2016, 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 
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 
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 
342  friend struct DateIntervalSink;
343 
349  enum IntervalPatternIndex
350  {
351  kIPI_ERA,
352  kIPI_YEAR,
353  kIPI_MONTH,
354  kIPI_DATE,
355  kIPI_AM_PM,
356  kIPI_HOUR,
357  kIPI_MINUTE,
358  kIPI_SECOND,
359  kIPI_MAX_INDEX
360  };
361 public:
362 #ifndef U_HIDE_INTERNAL_API
363 
367  enum {
368  kMaxIntervalPatternIndex = kIPI_MAX_INDEX
369  };
370 #endif /* U_HIDE_INTERNAL_API */
371 private:
372 
373 
379  void initializeData(const Locale& locale, UErrorCode& status);
380 
381 
382  /* Set Interval pattern.
383  *
384  * It sets interval pattern into the hash map.
385  *
386  * @param skeleton skeleton on which the interval pattern based
387  * @param lrgDiffCalUnit the largest different calendar unit.
388  * @param intervalPattern the interval pattern on the largest different
389  * calendar unit.
390  * @param status output param set to success/failure code on exit
391  */
392  void setIntervalPatternInternally(const UnicodeString& skeleton,
393  UCalendarDateFields lrgDiffCalUnit,
394  const UnicodeString& intervalPattern,
395  UErrorCode& status);
396 
397 
416  const UnicodeString* getBestSkeleton(const UnicodeString& skeleton,
417  int8_t& bestMatchDistanceInfo) const;
418 
419 
427  static void U_EXPORT2 parseSkeleton(const UnicodeString& skeleton,
428  int32_t* skeletonFieldWidth);
429 
430 
442  static UBool U_EXPORT2 stringNumeric(int32_t fieldWidth,
443  int32_t anotherFieldWidth,
444  char patternLetter);
445 
446 
460  static IntervalPatternIndex U_EXPORT2 calendarFieldToIntervalIndex(
461  UCalendarDateFields field,
462  UErrorCode& status);
463 
464 
470  void deleteHash(Hashtable* hTable);
471 
472 
479  Hashtable* initHash(UErrorCode& status);
480 
481 
482 
490  void copyHash(const Hashtable* source, Hashtable* target, UErrorCode& status);
491 
492 
493  // data members
494  // fallback interval pattern
495  UnicodeString fFallbackIntervalPattern;
496  // default order
497  UBool fFirstDateInPtnIsLaterDate;
498 
499  // HashMap<UnicodeString, UnicodeString[kIPI_MAX_INDEX]>
500  // HashMap( skeleton, pattern[largest_different_field] )
501  Hashtable* fIntervalPatterns;
502 
503 };// end class DateIntervalInfo
504 
505 
506 inline UBool
508  return !operator==(other);
509 }
510 
511 
513 
514 #endif
515 
516 #endif
517 
UCalendarDateFields
Possible fields in a UCalendar.
Definition: ucal.h:183
DateIntervalFormat is a class for formatting and parsing date intervals in a language-independent man...
Definition: dtitvfmt.h:220
C API: Calendar.
C++ API: Date/Time Pattern Generator.
DateIntervalInfo is a public class for encapsulating localizable date time interval patterns...
Definition: dtitvinf.h:151
virtual UClassID getDynamicClassID() const
ICU4C "poor man&#39;s RTTI", returns a UClassID for the actual ICU class.
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
void * UClassID
UClassID is used to identify classes without using the compiler&#39;s RTTI.
Definition: uobject.h:91
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:358
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129
UBool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
Definition: stringpiece.h:218
C API: DateFormat.
UBool operator!=(const DateIntervalInfo &other) const
Return true if another object is semantically unequal to this one.
Definition: dtitvinf.h:507
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:476
C++ API: Locale ID object.
Basic definitions for ICU, for both C and C++ APIs.
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:293
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:221
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:185