ICU 75.1 75.1
Loading...
Searching...
No Matches
reldatefmt.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) 2014-2016, International Business Machines Corporation and
6* others.
7* All Rights Reserved.
8*****************************************************************************
9*
10* File RELDATEFMT.H
11*****************************************************************************
12*/
13
14#ifndef __RELDATEFMT_H
15#define __RELDATEFMT_H
16
17#include "unicode/utypes.h"
18
19#if U_SHOW_CPLUSPLUS_API
20
21#include "unicode/uobject.h"
23#include "unicode/ureldatefmt.h"
24#include "unicode/locid.h"
26
32#if !UCONFIG_NO_FORMATTING
33
91
198
250
251U_NAMESPACE_BEGIN
252
253class BreakIterator;
254class RelativeDateTimeCacheData;
255class SharedNumberFormat;
256class SharedPluralRules;
257class SharedBreakIterator;
258class NumberFormat;
259class UnicodeString;
260class FormattedRelativeDateTime;
261class FormattedRelativeDateTimeData;
262
273 public:
279
285
290 virtual ~FormattedRelativeDateTime() override;
291
294
297
303
306
309
312
315
316 private:
318 UErrorCode fErrorCode;
320 : fData(results), fErrorCode(U_ZERO_ERROR) {}
321 explicit FormattedRelativeDateTime(UErrorCode errorCode)
322 : fData(nullptr), fErrorCode(errorCode) {}
323 friend class RelativeDateTimeFormatter;
324};
325
395public:
396
402
408
420 const Locale& locale, NumberFormat *nfToAdopt, UErrorCode& status);
421
438 const Locale& locale,
443
449
456
462
483 double quantity,
484 UDateDirection direction,
486 UnicodeString& appendTo,
487 UErrorCode& status) const;
488
507 double quantity,
508 UDateDirection direction,
510 UErrorCode& status) const;
511
529 UDateDirection direction,
531 UnicodeString& appendTo,
532 UErrorCode& status) const;
533
550 UDateDirection direction,
552 UErrorCode& status) const;
553
575 double offset,
577 UnicodeString& appendTo,
578 UErrorCode& status) const;
579
599 double offset,
601 UErrorCode& status) const;
602
624 double offset,
626 UnicodeString& appendTo,
627 UErrorCode& status) const;
628
648 double offset,
650 UErrorCode& status) const;
651
667 UnicodeString& appendTo,
668 UErrorCode& status) const;
669
676
683
690
691private:
692 const RelativeDateTimeCacheData* fCache;
693 const SharedNumberFormat *fNumberFormat;
694 const SharedPluralRules *fPluralRules;
696 UDisplayContext fContext;
697#if !UCONFIG_NO_BREAK_ITERATION
698 const SharedBreakIterator *fOptBreakIterator;
699#else
700 std::nullptr_t fOptBreakIterator = nullptr;
701#endif // !UCONFIG_NO_BREAK_ITERATION
702 Locale fLocale;
703 void init(
707#else
708 std::nullptr_t,
709#endif // !UCONFIG_NO_BREAK_ITERATION
711 UnicodeString& adjustForContext(UnicodeString &) const;
712 UBool checkNoAdjustForContext(UErrorCode& status) const;
713
714 template<typename F, typename... Args>
715 UnicodeString& doFormat(
716 F callback,
717 UnicodeString& appendTo,
719 Args... args) const;
720
721 template<typename F, typename... Args>
722 FormattedRelativeDateTime doFormatToValue(
723 F callback,
725 Args... args) const;
726
727 void formatImpl(
728 double quantity,
729 UDateDirection direction,
732 UErrorCode& status) const;
733 void formatAbsoluteImpl(
734 UDateDirection direction,
737 UErrorCode& status) const;
738 void formatNumericImpl(
739 double offset,
742 UErrorCode& status) const;
743 void formatRelativeImpl(
744 double offset,
747 UErrorCode& status) const;
748};
749
751
752#endif /* !UCONFIG_NO_FORMATTING */
753
754#endif /* U_SHOW_CPLUSPLUS_API */
755
756#endif /* __RELDATEFMT_H */
Base class for objects to which Unicode characters and strings can be appended.
Definition appendable.h:54
The BreakIterator class implements methods for finding the location of boundaries in text.
Definition brkiter.h:106
Represents a span of a string containing a given field.
An immutable class containing the result of a relative datetime formatting operation.
Definition reldatefmt.h:272
FormattedRelativeDateTime(FormattedRelativeDateTime &&src) noexcept
Move constructor: Leaves the source FormattedRelativeDateTime in an undefined state.
FormattedRelativeDateTime & operator=(const FormattedRelativeDateTime &)=delete
Copying not supported; use move assignment instead.
FormattedRelativeDateTime & operator=(FormattedRelativeDateTime &&src) noexcept
Move assignment: Leaves the source FormattedRelativeDateTime in an undefined state.
FormattedRelativeDateTime()
Default constructor; makes an empty FormattedRelativeDateTime.
Definition reldatefmt.h:278
UnicodeString toString(UErrorCode &status) const override
Returns the formatted string as a self-contained UnicodeString.
UBool nextPosition(ConstrainedFieldPosition &cfpos, UErrorCode &status) const override
Iterates over field positions in the FormattedValue.
virtual ~FormattedRelativeDateTime() override
Destruct an instance of FormattedRelativeDateTime.
UnicodeString toTempString(UErrorCode &status) const override
Returns the formatted string as a read-only alias to memory owned by the FormattedValue.
FormattedRelativeDateTime(const FormattedRelativeDateTime &)=delete
Copying not supported; use move constructor instead.
Appendable & appendTo(Appendable &appendable, UErrorCode &status) const override
Appends the formatted string to an Appendable.
An abstract formatted value: a string with associated field attributes.
"Smart pointer" base class; do not use directly: use LocalPointer etc.
A Locale object represents a specific geographical, political, or cultural region.
Definition locid.h:195
Formats simple relative dates.
Definition reldatefmt.h:394
virtual ~RelativeDateTimeFormatter()
Destructor.
FormattedRelativeDateTime formatNumericToValue(double offset, URelativeDateTimeUnit unit, UErrorCode &status) const
Format a combination of URelativeDateTimeUnit and numeric offset using a numeric style,...
UnicodeString & formatNumeric(double offset, URelativeDateTimeUnit unit, UnicodeString &appendTo, UErrorCode &status) const
Format a combination of URelativeDateTimeUnit and numeric offset using a numeric style,...
UDateRelativeDateTimeFormatterStyle getFormatStyle() const
Returns the format style.
UnicodeString & format(double offset, URelativeDateTimeUnit unit, UnicodeString &appendTo, UErrorCode &status) const
Format a combination of URelativeDateTimeUnit and numeric offset using a text style if possible,...
FormattedRelativeDateTime formatToValue(double quantity, UDateDirection direction, UDateRelativeUnit unit, UErrorCode &status) const
Formats a relative date with a quantity such as "in 5 days" or "3 months ago".
RelativeDateTimeFormatter(UErrorCode &status)
Create RelativeDateTimeFormatter with default locale.
RelativeDateTimeFormatter(const Locale &locale, NumberFormat *nfToAdopt, UDateRelativeDateTimeFormatterStyle style, UDisplayContext capitalizationContext, UErrorCode &status)
Create RelativeDateTimeFormatter with given locale, NumberFormat, and capitalization context.
UnicodeString & combineDateAndTime(const UnicodeString &relativeDateString, const UnicodeString &timeString, UnicodeString &appendTo, UErrorCode &status) const
Combines a relative date string and a time string in this object's locale.
RelativeDateTimeFormatter(const Locale &locale, NumberFormat *nfToAdopt, UErrorCode &status)
Create RelativeDateTimeFormatter with given locale and NumberFormat.
UnicodeString & format(UDateDirection direction, UDateAbsoluteUnit unit, UnicodeString &appendTo, UErrorCode &status) const
Formats a relative date without a quantity.
RelativeDateTimeFormatter(const RelativeDateTimeFormatter &other)
Copy constructor.
FormattedRelativeDateTime formatToValue(double offset, URelativeDateTimeUnit unit, UErrorCode &status) const
Format a combination of URelativeDateTimeUnit and numeric offset using a text style if possible,...
UDisplayContext getCapitalizationContext() const
Returns the capitalization context.
RelativeDateTimeFormatter & operator=(const RelativeDateTimeFormatter &other)
Assignment operator.
RelativeDateTimeFormatter(const Locale &locale, UErrorCode &status)
Create RelativeDateTimeFormatter with given locale.
const NumberFormat & getNumberFormat() const
Returns the NumberFormat this object is using.
UnicodeString & format(double quantity, UDateDirection direction, UDateRelativeUnit unit, UnicodeString &appendTo, UErrorCode &status) const
Formats a relative date with a quantity such as "in 5 days" or "3 months ago".
FormattedRelativeDateTime formatToValue(UDateDirection direction, UDateAbsoluteUnit unit, UErrorCode &status) const
Formats a relative date without a quantity.
UMemory is the common ICU base class.
Definition uobject.h:115
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: Abstract operations for localized strings.
C++ API: Locale ID object.
UDateAbsoluteUnit
Represents an absolute unit.
Definition reldatefmt.h:96
@ UDAT_ABSOLUTE_DAY
Day.
Definition reldatefmt.h:146
@ UDAT_ABSOLUTE_FRIDAY
Friday.
Definition reldatefmt.h:134
@ UDAT_ABSOLUTE_YEAR
Year.
Definition reldatefmt.h:164
@ UDAT_ABSOLUTE_WEDNESDAY
Wednesday.
Definition reldatefmt.h:122
@ UDAT_ABSOLUTE_HOUR
Hour.
Definition reldatefmt.h:182
@ UDAT_ABSOLUTE_WEEK
Week.
Definition reldatefmt.h:152
@ UDAT_ABSOLUTE_NOW
Now.
Definition reldatefmt.h:170
@ UDAT_ABSOLUTE_MINUTE
Minute.
Definition reldatefmt.h:188
@ UDAT_ABSOLUTE_THURSDAY
Thursday.
Definition reldatefmt.h:128
@ UDAT_ABSOLUTE_TUESDAY
Tuesday.
Definition reldatefmt.h:116
@ UDAT_ABSOLUTE_MONTH
Month.
Definition reldatefmt.h:158
@ UDAT_ABSOLUTE_SUNDAY
Sunday.
Definition reldatefmt.h:104
@ UDAT_ABSOLUTE_UNIT_COUNT
One more than the highest normal UDateAbsoluteUnit value.
Definition reldatefmt.h:195
@ UDAT_ABSOLUTE_MONDAY
Monday.
Definition reldatefmt.h:110
@ UDAT_ABSOLUTE_SATURDAY
Saturday.
Definition reldatefmt.h:140
@ UDAT_ABSOLUTE_QUARTER
Quarter.
Definition reldatefmt.h:176
UDateRelativeUnit
Represents the unit for formatting a relative date.
Definition reldatefmt.h:39
@ UDAT_RELATIVE_DAYS
Days.
Definition reldatefmt.h:63
@ UDAT_RELATIVE_UNIT_COUNT
One more than the highest normal UDateRelativeUnit value.
Definition reldatefmt.h:88
@ UDAT_RELATIVE_HOURS
Hours.
Definition reldatefmt.h:57
@ UDAT_RELATIVE_MONTHS
Months.
Definition reldatefmt.h:75
@ UDAT_RELATIVE_WEEKS
Weeks.
Definition reldatefmt.h:69
@ UDAT_RELATIVE_YEARS
Years.
Definition reldatefmt.h:81
@ UDAT_RELATIVE_MINUTES
Minutes.
Definition reldatefmt.h:51
@ UDAT_RELATIVE_SECONDS
Seconds.
Definition reldatefmt.h:45
UDateDirection
Represents a direction for an absolute unit e.g "Next Tuesday" or "Last Tuesday".
Definition reldatefmt.h:204
@ UDAT_DIRECTION_PLAIN
Plain, which means the absence of a qualifier.
Definition reldatefmt.h:240
@ UDAT_DIRECTION_THIS
This.
Definition reldatefmt.h:222
@ UDAT_DIRECTION_LAST_2
Two before.
Definition reldatefmt.h:210
@ UDAT_DIRECTION_LAST
Last.
Definition reldatefmt.h:216
@ UDAT_DIRECTION_NEXT
Next.
Definition reldatefmt.h:228
@ UDAT_DIRECTION_NEXT_2
Two after.
Definition reldatefmt.h:234
@ UDAT_DIRECTION_COUNT
One more than the highest normal UDateDirection value.
Definition reldatefmt.h:247
#define UCONFIG_NO_BREAK_ITERATION
This switch turns off break iteration.
Definition uconfig.h:358
C API: Display context types (enum values)
UDisplayContext
Display context settings.
int8_t UBool
The ICU boolean type, a signed-byte integer.
Definition umachine.h:247
C++ API: Common ICU base class UObject.
C API: URelativeDateTimeFormatter, relative date formatting of unit + numeric offset.
UDateRelativeDateTimeFormatterStyle
The formatting style.
Definition ureldatefmt.h:48
URelativeDateTimeUnit
Represents the unit for formatting a relative date.
Definition ureldatefmt.h:81
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition utypes.h:415
@ U_INVALID_STATE_ERROR
Requested operation can not be completed with ICU in its current state.
Definition utypes.h:479
@ U_ZERO_ERROR
No error, no warning.
Definition utypes.h:450
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition utypes.h:301