ICU 57.1  57.1
reldatefmt.h
Go to the documentation of this file.
1 /*
2 *****************************************************************************
3 * Copyright (C) 2014-2016, International Business Machines Corporation and
4 * others.
5 * All Rights Reserved.
6 *****************************************************************************
7 *
8 * File RELDATEFMT.H
9 *****************************************************************************
10 */
11 
12 #ifndef __RELDATEFMT_H
13 #define __RELDATEFMT_H
14 
15 #include "unicode/utypes.h"
16 #include "unicode/uobject.h"
18 #include "unicode/ureldatefmt.h"
19 #include "unicode/locid.h"
20 
26 #if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION
27 
33 typedef enum UDateRelativeUnit {
34 
40 
46 
52 
58 
64 
70 
76 
83 
88 typedef enum UDateAbsoluteUnit {
89 
90  // Days of week have to remain together and in order from Sunday to
91  // Saturday.
97 
103 
109 
115 
121 
127 
133 
139 
145 
151 
157 
163 
170 
176 typedef enum UDateDirection {
177 
183 
189 
195 
201 
207 
213 
220 
221 
223 
224 class RelativeDateTimeCacheData;
225 class SharedNumberFormat;
226 class SharedPluralRules;
227 class SharedBreakIterator;
228 class NumberFormat;
229 class UnicodeString;
230 
300 public:
301 
307 
312  RelativeDateTimeFormatter(const Locale& locale, UErrorCode& status);
313 
325  const Locale& locale, NumberFormat *nfToAdopt, UErrorCode& status);
326 
343  const Locale& locale,
344  NumberFormat *nfToAdopt,
346  UDisplayContext capitalizationContext,
347  UErrorCode& status);
348 
354 
359  RelativeDateTimeFormatter& operator=(
360  const RelativeDateTimeFormatter& other);
361 
366  virtual ~RelativeDateTimeFormatter();
367 
383  UnicodeString& format(
384  double quantity,
385  UDateDirection direction,
386  UDateRelativeUnit unit,
387  UnicodeString& appendTo,
388  UErrorCode& status) const;
389 
402  UnicodeString& format(
403  UDateDirection direction,
404  UDateAbsoluteUnit unit,
405  UnicodeString& appendTo,
406  UErrorCode& status) const;
407 
408 #ifndef U_HIDE_DRAFT_API
409 
426  UnicodeString& formatNumeric(
427  double offset,
429  UnicodeString& appendTo,
430  UErrorCode& status) const;
431 
449  UnicodeString& format(
450  double offset,
452  UnicodeString& appendTo,
453  UErrorCode& status) const;
454 #endif /* U_HIDE_DRAFT_API */
455 
468  UnicodeString& combineDateAndTime(
469  const UnicodeString& relativeDateString,
470  const UnicodeString& timeString,
471  UnicodeString& appendTo,
472  UErrorCode& status) const;
473 
479  const NumberFormat& getNumberFormat() const;
480 
486  UDisplayContext getCapitalizationContext() const;
487 
493  UDateRelativeDateTimeFormatterStyle getFormatStyle() const;
494 
495 private:
496  const RelativeDateTimeCacheData* fCache;
497  const SharedNumberFormat *fNumberFormat;
498  const SharedPluralRules *fPluralRules;
500  UDisplayContext fContext;
501  const SharedBreakIterator *fOptBreakIterator;
502  Locale fLocale;
503  void init(
504  NumberFormat *nfToAdopt,
505  BreakIterator *brkIter,
506  UErrorCode &status);
507  void adjustForContext(UnicodeString &) const;
508 };
509 
511 
512 #endif /* !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION*/
513 #endif
Count of items in this enum.
Definition: reldatefmt.h:168
URelativeDateTimeUnit
Represents the unit for formatting a relative date.
Definition: ureldatefmt.h:74
Abstract base class for all number formats.
Definition: numfmt.h:167
UDisplayContext
Display context settings.
C API: Display context types (enum values)
#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
C API: URelativeDateTimeFormatter, relative date formatting of unit + numeric offset.
The BreakIterator class implements methods for finding the location of boundaries in text...
Definition: brkiter.h:100
UDateRelativeDateTimeFormatterStyle
The formatting style.
Definition: ureldatefmt.h:42
UDateDirection
Represents a direction for an absolute unit e.g "Next Tuesday" or "Last Tuesday". ...
Definition: reldatefmt.h:176
Plain, which means the absence of a qualifier.
Definition: reldatefmt.h:212
Formats simple relative dates.
Definition: reldatefmt.h:299
C++ API: Common ICU base class UObject.
#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
Count of items in this enum.
Definition: reldatefmt.h:218
UDateAbsoluteUnit
Represents an absolute unit.
Definition: reldatefmt.h:88
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
Count of items in this enum.
Definition: reldatefmt.h:81
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:221
UDateRelativeUnit
Represents the unit for formatting a relative date.
Definition: reldatefmt.h:33
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:185