ICU 72.1 72.1
dtitvinf.h
Go to the documentation of this file.
1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3/*
4 *******************************************************************************
5 * Copyright (C) 2008-2016, International Business Machines Corporation and
6 * others. All Rights Reserved.
7 *******************************************************************************
8 *
9 * File DTITVINF.H
10 *
11 *******************************************************************************
12 */
13
14#ifndef __DTITVINF_H__
15#define __DTITVINF_H__
16
17#include "unicode/utypes.h"
18
19#if U_SHOW_CPLUSPLUS_API
20
26#if !UCONFIG_NO_FORMATTING
27
28#include "unicode/udat.h"
29#include "unicode/locid.h"
30#include "unicode/ucal.h"
31#include "unicode/dtptngen.h"
32
33U_NAMESPACE_BEGIN
34
155public:
170
171
179 DateIntervalInfo(const Locale& locale, UErrorCode& status);
180
181
187
193
200 virtual DateIntervalInfo* clone() const;
201
208
209
217 virtual bool operator==(const DateIntervalInfo& other) const;
218
226 bool operator!=(const DateIntervalInfo& other) const;
227
228
229
262 void setIntervalPattern(const UnicodeString& skeleton,
263 UCalendarDateFields lrgDiffCalUnit,
264 const UnicodeString& intervalPattern,
265 UErrorCode& status);
266
279 UnicodeString& result,
280 UErrorCode& status) const;
281
289
290
304 void setFallbackIntervalPattern(const UnicodeString& fallbackPattern,
305 UErrorCode& status);
306
307
315
316
322 virtual UClassID getDynamicClassID() const override;
323
329 static UClassID U_EXPORT2 getStaticClassID();
330
331
332private:
341 friend class DateIntervalFormat;
342
346 struct U_HIDDEN DateIntervalSink;
347
353 enum IntervalPatternIndex
354 {
355 kIPI_ERA,
356 kIPI_YEAR,
357 kIPI_MONTH,
358 kIPI_DATE,
359 kIPI_AM_PM,
360 kIPI_HOUR,
361 kIPI_MINUTE,
362 kIPI_SECOND,
363 kIPI_MILLISECOND,
364 kIPI_MAX_INDEX
365 };
366public:
367#ifndef U_HIDE_INTERNAL_API
372 enum {
373 kMaxIntervalPatternIndex = kIPI_MAX_INDEX
374 };
375#endif /* U_HIDE_INTERNAL_API */
376private:
377
378
384 void initializeData(const Locale& locale, UErrorCode& status);
385
386
387 /* Set Interval pattern.
388 *
389 * It sets interval pattern into the hash map.
390 *
391 * @param skeleton skeleton on which the interval pattern based
392 * @param lrgDiffCalUnit the largest different calendar unit.
393 * @param intervalPattern the interval pattern on the largest different
394 * calendar unit.
395 * @param status output param set to success/failure code on exit
396 */
397 void setIntervalPatternInternally(const UnicodeString& skeleton,
398 UCalendarDateFields lrgDiffCalUnit,
399 const UnicodeString& intervalPattern,
400 UErrorCode& status);
401
402
421 const UnicodeString* getBestSkeleton(const UnicodeString& skeleton,
422 int8_t& bestMatchDistanceInfo) const;
423
424
432 static void U_EXPORT2 parseSkeleton(const UnicodeString& skeleton,
433 int32_t* skeletonFieldWidth);
434
435
447 static UBool U_EXPORT2 stringNumeric(int32_t fieldWidth,
448 int32_t anotherFieldWidth,
449 char patternLetter);
450
451
465 static IntervalPatternIndex U_EXPORT2 calendarFieldToIntervalIndex(
467 UErrorCode& status);
468
469
475 void deleteHash(Hashtable* hTable);
476
477
484 Hashtable* initHash(UErrorCode& status);
485
486
487
495 void copyHash(const Hashtable* source, Hashtable* target, UErrorCode& status);
496
497
498 // data members
499 // fallback interval pattern
500 UnicodeString fFallbackIntervalPattern;
501 // default order
502 UBool fFirstDateInPtnIsLaterDate;
503
504 // HashMap<UnicodeString, UnicodeString[kIPI_MAX_INDEX]>
505 // HashMap( skeleton, pattern[largest_different_field] )
506 Hashtable* fIntervalPatterns;
507
508};// end class DateIntervalInfo
509
510
511inline bool
513 return !operator==(other);
514}
515
516
517U_NAMESPACE_END
518
519#endif
520
521#endif /* U_SHOW_CPLUSPLUS_API */
522
523#endif
524
DateIntervalFormat is a class for formatting and parsing date intervals in a language-independent man...
Definition: dtitvfmt.h:300
DateIntervalInfo is a public class for encapsulating localizable date time interval patterns.
Definition: dtitvinf.h:154
void setIntervalPattern(const UnicodeString &skeleton, UCalendarDateFields lrgDiffCalUnit, const UnicodeString &intervalPattern, UErrorCode &status)
Provides a way for client to build interval patterns.
UnicodeString & getFallbackIntervalPattern(UnicodeString &result) const
Get the fallback interval pattern.
virtual DateIntervalInfo * clone() const
Clone this object polymorphically.
DateIntervalInfo & operator=(const DateIntervalInfo &)
Assignment operator.
UBool getDefaultOrder() const
Get default order – whether the first date in pattern is later date or not.
virtual ~DateIntervalInfo()
Destructor.
void setFallbackIntervalPattern(const UnicodeString &fallbackPattern, UErrorCode &status)
Re-set the fallback interval pattern.
DateIntervalInfo(const DateIntervalInfo &)
Copy constructor.
UnicodeString & getIntervalPattern(const UnicodeString &skeleton, UCalendarDateFields field, UnicodeString &result, UErrorCode &status) const
Get the interval pattern given skeleton and the largest different calendar field.
DateIntervalInfo(const Locale &locale, UErrorCode &status)
Construct DateIntervalInfo for the given locale,.
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
virtual UClassID getDynamicClassID() const override
ICU "poor man's RTTI", returns a UClassID for the actual class.
virtual bool operator==(const DateIntervalInfo &other) const
Return true if another object is semantically equal to this one.
DateIntervalInfo(UErrorCode &status)
Default constructor.
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:195
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:223
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:296
C++ API: Date/Time Pattern Generator.
C++ API: Locale ID object.
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
bool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
Definition: stringpiece.h:335
#define U_HIDDEN
This is used to mark internal structs declared within external classes, to prevent the internal struc...
Definition: platform.h:862
C API: Calendar.
UCalendarDateFields
Possible fields in a UCalendar.
Definition: ucal.h:202
C API: DateFormat.
int8_t UBool
The ICU boolean type, a signed-byte integer.
Definition: umachine.h:269
#define U_FINAL
Defined to the C++11 "final" keyword if available.
Definition: umachine.h:141
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:96
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:415
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition: utypes.h:301