Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes16kdownloads
reldatefmt.h754 linesDownload Raw Back to unicode
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"
22#include "unicode/udisplaycontext.h"
23#include "unicode/ureldatefmt.h"
24#include "unicode/locid.h"
25#include "unicode/formattedvalue.h"
26
27/**
28 * \file
29 * \brief C++ API: Formats relative dates such as "1 day ago" or "tomorrow"
30 */
31
32#if !UCONFIG_NO_FORMATTING
33
34/**
35 * Represents the unit for formatting a relative date. e.g "in 5 days"
36 * or "in 3 months"
37 * @stable ICU 53
38 */
39typedef enum UDateRelativeUnit {
40
41    /**
42     * Seconds
43     * @stable ICU 53
44     */
45    UDAT_RELATIVE_SECONDS,
46
47    /**
48     * Minutes
49     * @stable ICU 53
50     */
51    UDAT_RELATIVE_MINUTES,
52
53    /**
54     * Hours
55     * @stable ICU 53
56     */
57    UDAT_RELATIVE_HOURS,
58
59    /**
60     * Days
61     * @stable ICU 53
62     */
63    UDAT_RELATIVE_DAYS,
64
65    /**
66     * Weeks
67     * @stable ICU 53
68     */
69    UDAT_RELATIVE_WEEKS,
70
71    /**
72     * Months
73     * @stable ICU 53
74     */
75    UDAT_RELATIVE_MONTHS,
76
77    /**
78     * Years
79     * @stable ICU 53
80     */
81    UDAT_RELATIVE_YEARS,
82
83#ifndef U_HIDE_DEPRECATED_API
84    /**
85     * One more than the highest normal UDateRelativeUnit value.
86     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
87     */
88    UDAT_RELATIVE_UNIT_COUNT
89#endif  // U_HIDE_DEPRECATED_API
90} UDateRelativeUnit;
91
92/**
93 * Represents an absolute unit.
94 * @stable ICU 53
95 */
96typedef enum UDateAbsoluteUnit {
97
98    // Days of week have to remain together and in order from Sunday to
99    // Saturday.
100    /**
101     * Sunday
102     * @stable ICU 53
103     */
104    UDAT_ABSOLUTE_SUNDAY,
105
106    /**
107     * Monday
108     * @stable ICU 53
109     */
110    UDAT_ABSOLUTE_MONDAY,
111
112    /**
113     * Tuesday
114     * @stable ICU 53
115     */
116    UDAT_ABSOLUTE_TUESDAY,
117
118    /**
119     * Wednesday
120     * @stable ICU 53
121     */
122    UDAT_ABSOLUTE_WEDNESDAY,
123
124    /**
125     * Thursday
126     * @stable ICU 53
127     */
128    UDAT_ABSOLUTE_THURSDAY,
129
130    /**
131     * Friday
132     * @stable ICU 53
133     */
134    UDAT_ABSOLUTE_FRIDAY,
135
136    /**
137     * Saturday
138     * @stable ICU 53
139     */
140    UDAT_ABSOLUTE_SATURDAY,
141
142    /**
143     * Day
144     * @stable ICU 53
145     */
146    UDAT_ABSOLUTE_DAY,
147
148    /**
149     * Week
150     * @stable ICU 53
151     */
152    UDAT_ABSOLUTE_WEEK,
153
154    /**
155     * Month
156     * @stable ICU 53
157     */
158    UDAT_ABSOLUTE_MONTH,
159
160    /**
161     * Year
162     * @stable ICU 53
163     */
164    UDAT_ABSOLUTE_YEAR,
165
166    /**
167     * Now
168     * @stable ICU 53
169     */
170    UDAT_ABSOLUTE_NOW,
171
172    /**
173     * Quarter
174     * @stable ICU 63
175     */
176    UDAT_ABSOLUTE_QUARTER,
177
178#ifndef U_HIDE_DRAFT_API
179    /**
180     * Hour
181     * @draft ICU 65
182     */
183    UDAT_ABSOLUTE_HOUR,
184
185    /**
186     * Minute
187     * @draft ICU 65
188     */
189    UDAT_ABSOLUTE_MINUTE,
190#endif // U_HIDE_DRAFT_API
191
192#ifndef U_HIDE_DEPRECATED_API
193    /**
194     * One more than the highest normal UDateAbsoluteUnit value.
195     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
196     */
197    UDAT_ABSOLUTE_UNIT_COUNT = UDAT_ABSOLUTE_NOW + 4
198#endif  // U_HIDE_DEPRECATED_API
199} UDateAbsoluteUnit;
200
201/**
202 * Represents a direction for an absolute unit e.g "Next Tuesday"
203 * or "Last Tuesday"
204 * @stable ICU 53
205 */
206typedef enum UDateDirection {
207
208    /**
209     * Two before. Not fully supported in every locale.
210     * @stable ICU 53
211     */
212    UDAT_DIRECTION_LAST_2,
213
214    /**
215     * Last
216     * @stable ICU 53
217     */
218    UDAT_DIRECTION_LAST,
219
220    /**
221     * This
222     * @stable ICU 53
223     */
224    UDAT_DIRECTION_THIS,
225
226    /**
227     * Next
228     * @stable ICU 53
229     */
230    UDAT_DIRECTION_NEXT,
231
232    /**
233     * Two after. Not fully supported in every locale.
234     * @stable ICU 53
235     */
236    UDAT_DIRECTION_NEXT_2,
237
238    /**
239     * Plain, which means the absence of a qualifier.
240     * @stable ICU 53
241     */
242    UDAT_DIRECTION_PLAIN,
243
244#ifndef U_HIDE_DEPRECATED_API
245    /**
246     * One more than the highest normal UDateDirection value.
247     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
248     */
249    UDAT_DIRECTION_COUNT
250#endif  // U_HIDE_DEPRECATED_API
251} UDateDirection;
252
253#if !UCONFIG_NO_BREAK_ITERATION
254
255U_NAMESPACE_BEGIN
256
257class BreakIterator;
258class RelativeDateTimeCacheData;
259class SharedNumberFormat;
260class SharedPluralRules;
261class SharedBreakIterator;
262class NumberFormat;
263class UnicodeString;
264class FormattedRelativeDateTime;
265class FormattedRelativeDateTimeData;
266
267/**
268 * An immutable class containing the result of a relative datetime formatting operation.
269 *
270 * Instances of this class are immutable and thread-safe.
271 *
272 * Not intended for public subclassing.
273 *
274 * @stable ICU 64
275 */
276class U_I18N_API FormattedRelativeDateTime : public UMemory, public FormattedValue {
277  public:
278    /**
279     * Default constructor; makes an empty FormattedRelativeDateTime.
280     * @stable ICU 64
281     */
282    FormattedRelativeDateTime() : fData(nullptr), fErrorCode(U_INVALID_STATE_ERROR) {}
283
284    /**
285     * Move constructor: Leaves the source FormattedRelativeDateTime in an undefined state.
286     * @stable ICU 64
287     */
288    FormattedRelativeDateTime(FormattedRelativeDateTime&& src) U_NOEXCEPT;
289
290    /**
291     * Destruct an instance of FormattedRelativeDateTime.
292     * @stable ICU 64
293     */
294    virtual ~FormattedRelativeDateTime() U_OVERRIDE;
295
296    /** Copying not supported; use move constructor instead. */
297    FormattedRelativeDateTime(const FormattedRelativeDateTime&) = delete;
298
299    /** Copying not supported; use move assignment instead. */
300    FormattedRelativeDateTime& operator=(const FormattedRelativeDateTime&) = delete;
301
302    /**
303     * Move assignment: Leaves the source FormattedRelativeDateTime in an undefined state.
304     * @stable ICU 64
305     */
306    FormattedRelativeDateTime& operator=(FormattedRelativeDateTime&& src) U_NOEXCEPT;
307
308    /** @copydoc FormattedValue::toString() */
309    UnicodeString toString(UErrorCode& status) const U_OVERRIDE;
310
311    /** @copydoc FormattedValue::toTempString() */
312    UnicodeString toTempString(UErrorCode& status) const U_OVERRIDE;
313
314    /** @copydoc FormattedValue::appendTo() */
315    Appendable &appendTo(Appendable& appendable, UErrorCode& status) const U_OVERRIDE;
316
317    /** @copydoc FormattedValue::nextPosition() */
318    UBool nextPosition(ConstrainedFieldPosition& cfpos, UErrorCode& status) const U_OVERRIDE;
319
320  private:
321    FormattedRelativeDateTimeData *fData;
322    UErrorCode fErrorCode;
323    explicit FormattedRelativeDateTime(FormattedRelativeDateTimeData *results)
324        : fData(results), fErrorCode(U_ZERO_ERROR) {}
325    explicit FormattedRelativeDateTime(UErrorCode errorCode)
326        : fData(nullptr), fErrorCode(errorCode) {}
327    friend class RelativeDateTimeFormatter;
328};
329
330/**
331 * Formats simple relative dates. There are two types of relative dates that
332 * it handles:
333 * <ul>
334 *   <li>relative dates with a quantity e.g "in 5 days"</li>
335 *   <li>relative dates without a quantity e.g "next Tuesday"</li>
336 * </ul>
337 * <p>
338 * This API is very basic and is intended to be a building block for more
339 * fancy APIs. The caller tells it exactly what to display in a locale
340 * independent way. While this class automatically provides the correct plural
341 * forms, the grammatical form is otherwise as neutral as possible. It is the
342 * caller's responsibility to handle cut-off logic such as deciding between
343 * displaying "in 7 days" or "in 1 week." This API supports relative dates
344 * involving one single unit. This API does not support relative dates
345 * involving compound units,
346 * e.g "in 5 days and 4 hours" nor does it support parsing.
347 * <p>
348 * This class is mostly thread safe and immutable with the following caveats:
349 * 1. The assignment operator violates Immutability. It must not be used
350 *    concurrently with other operations.
351 * 2. Caller must not hold onto adopted pointers.
352 * <p>
353 * This class is not intended for public subclassing.
354 * <p>
355 * Here are some examples of use:
356 * <blockquote>
357 * <pre>
358 * UErrorCode status = U_ZERO_ERROR;
359 * UnicodeString appendTo;
360 * RelativeDateTimeFormatter fmt(status);
361 * // Appends "in 1 day"
362 * fmt.format(
363 *     1, UDAT_DIRECTION_NEXT, UDAT_RELATIVE_DAYS, appendTo, status);
364 * // Appends "in 3 days"
365 * fmt.format(
366 *     3, UDAT_DIRECTION_NEXT, UDAT_RELATIVE_DAYS, appendTo, status);
367 * // Appends "3.2 years ago"
368 * fmt.format(
369 *     3.2, UDAT_DIRECTION_LAST, UDAT_RELATIVE_YEARS, appendTo, status);
370 * // Appends "last Sunday"
371 * fmt.format(UDAT_DIRECTION_LAST, UDAT_ABSOLUTE_SUNDAY, appendTo, status);
372 * // Appends "this Sunday"
373 * fmt.format(UDAT_DIRECTION_THIS, UDAT_ABSOLUTE_SUNDAY, appendTo, status);
374 * // Appends "next Sunday"
375 * fmt.format(UDAT_DIRECTION_NEXT, UDAT_ABSOLUTE_SUNDAY, appendTo, status);
376 * // Appends "Sunday"
377 * fmt.format(UDAT_DIRECTION_PLAIN, UDAT_ABSOLUTE_SUNDAY, appendTo, status);
378 *
379 * // Appends "yesterday"
380 * fmt.format(UDAT_DIRECTION_LAST, UDAT_ABSOLUTE_DAY, appendTo, status);
381 * // Appends "today"
382 * fmt.format(UDAT_DIRECTION_THIS, UDAT_ABSOLUTE_DAY, appendTo, status);
383 * // Appends "tomorrow"
384 * fmt.format(UDAT_DIRECTION_NEXT, UDAT_ABSOLUTE_DAY, appendTo, status);
385 * // Appends "now"
386 * fmt.format(UDAT_DIRECTION_PLAIN, UDAT_ABSOLUTE_NOW, appendTo, status);
387 *
388 * </pre>
389 * </blockquote>
390 * <p>
391 * In the future, we may add more forms, such as abbreviated/short forms
392 * (3 secs ago), and relative day periods ("yesterday afternoon"), etc.
393 *
394 * The RelativeDateTimeFormatter class is not intended for public subclassing.
395 *
396 * @stable ICU 53
397 */
398class U_I18N_API RelativeDateTimeFormatter : public UObject {
399public:
400
401    /**
402     * Create RelativeDateTimeFormatter with default locale.
403     * @stable ICU 53
404     */
405    RelativeDateTimeFormatter(UErrorCode& status);
406
407    /**
408     * Create RelativeDateTimeFormatter with given locale.
409     * @stable ICU 53
410     */
411    RelativeDateTimeFormatter(const Locale& locale, UErrorCode& status);
412
413    /**
414     * Create RelativeDateTimeFormatter with given locale and NumberFormat.
415     *
416     * @param locale the locale
417     * @param nfToAdopt Constructed object takes ownership of this pointer.
418     *   It is an error for caller to delete this pointer or change its
419     *   contents after calling this constructor.
420     * @param status Any error is returned here.
421     * @stable ICU 53
422     */
423    RelativeDateTimeFormatter(
424        const Locale& locale, NumberFormat *nfToAdopt, UErrorCode& status);
425
426    /**
427     * Create RelativeDateTimeFormatter with given locale, NumberFormat,
428     * and capitalization context.
429     *
430     * @param locale the locale
431     * @param nfToAdopt Constructed object takes ownership of this pointer.
432     *   It is an error for caller to delete this pointer or change its
433     *   contents after calling this constructor. Caller may pass NULL for
434     *   this argument if they want default number format behavior.
435     * @param style the format style. The UDAT_RELATIVE bit field has no effect.
436     * @param capitalizationContext A value from UDisplayContext that pertains to
437     * capitalization.
438     * @param status Any error is returned here.
439     * @stable ICU 54
440     */
441    RelativeDateTimeFormatter(
442            const Locale& locale,
443            NumberFormat *nfToAdopt,
444            UDateRelativeDateTimeFormatterStyle style,
445            UDisplayContext capitalizationContext,
446            UErrorCode& status);
447
448    /**
449     * Copy constructor.
450     * @stable ICU 53
451     */
452    RelativeDateTimeFormatter(const RelativeDateTimeFormatter& other);
453
454    /**
455     * Assignment operator.
456     * @stable ICU 53
457     */
458    RelativeDateTimeFormatter& operator=(
459            const RelativeDateTimeFormatter& other);
460
461    /**
462     * Destructor.
463     * @stable ICU 53
464     */
465    virtual ~RelativeDateTimeFormatter();
466
467    /**
468     * Formats a relative date with a quantity such as "in 5 days" or
469     * "3 months ago"
470     *
471     * This method returns a String. To get more information about the
472     * formatting result, use formatToValue().
473     *
474     * @param quantity The numerical amount e.g 5. This value is formatted
475     * according to this object's NumberFormat object.
476     * @param direction NEXT means a future relative date; LAST means a past
477     * relative date. If direction is anything else, this method sets
478     * status to U_ILLEGAL_ARGUMENT_ERROR.
479     * @param unit the unit e.g day? month? year?
480     * @param appendTo The string to which the formatted result will be
481     *  appended
482     * @param status ICU error code returned here.
483     * @return appendTo
484     * @stable ICU 53
485     */
486    UnicodeString& format(
487            double quantity,
488            UDateDirection direction,
489            UDateRelativeUnit unit,
490            UnicodeString& appendTo,
491            UErrorCode& status) const;
492
493    /**
494     * Formats a relative date with a quantity such as "in 5 days" or
495     * "3 months ago"
496     *
497     * This method returns a FormattedRelativeDateTime, which exposes more
498     * information than the String returned by format().
499     *
500     * @param quantity The numerical amount e.g 5. This value is formatted
501     * according to this object's NumberFormat object.
502     * @param direction NEXT means a future relative date; LAST means a past
503     * relative date. If direction is anything else, this method sets
504     * status to U_ILLEGAL_ARGUMENT_ERROR.
505     * @param unit the unit e.g day? month? year?
506     * @param status ICU error code returned here.
507     * @return The formatted relative datetime
508     * @stable ICU 64
509     */
510    FormattedRelativeDateTime formatToValue(
511            double quantity,
512            UDateDirection direction,
513            UDateRelativeUnit unit,
514            UErrorCode& status) const;
515
516    /**
517     * Formats a relative date without a quantity.
518     *
519     * This method returns a String. To get more information about the
520     * formatting result, use formatToValue().
521     *
522     * @param direction NEXT, LAST, THIS, etc.
523     * @param unit e.g SATURDAY, DAY, MONTH
524     * @param appendTo The string to which the formatted result will be
525     *  appended. If the value of direction is documented as not being fully
526     *  supported in all locales then this method leaves appendTo unchanged if
527     *  no format string is available.
528     * @param status ICU error code returned here.
529     * @return appendTo
530     * @stable ICU 53
531     */
532    UnicodeString& format(
533            UDateDirection direction,
534            UDateAbsoluteUnit unit,
535            UnicodeString& appendTo,
536            UErrorCode& status) const;
537
538    /**
539     * Formats a relative date without a quantity.
540     *
541     * This method returns a FormattedRelativeDateTime, which exposes more
542     * information than the String returned by format().
543     *
544     * If the string is not available in the requested locale, the return
545     * value will be empty (calling toString will give an empty string).
546     *
547     * @param direction NEXT, LAST, THIS, etc.
548     * @param unit e.g SATURDAY, DAY, MONTH
549     * @param status ICU error code returned here.
550     * @return The formatted relative datetime
551     * @stable ICU 64
552     */
553    FormattedRelativeDateTime formatToValue(
554            UDateDirection direction,
555            UDateAbsoluteUnit unit,
556            UErrorCode& status) const;
557
558    /**
559     * Format a combination of URelativeDateTimeUnit and numeric offset
560     * using a numeric style, e.g. "1 week ago", "in 1 week",
561     * "5 weeks ago", "in 5 weeks".
562     *
563     * This method returns a String. To get more information about the
564     * formatting result, use formatNumericToValue().
565     * 
566     * @param offset    The signed offset for the specified unit. This
567     *                  will be formatted according to this object's
568     *                  NumberFormat object.
569     * @param unit      The unit to use when formatting the relative
570     *                  date, e.g. UDAT_REL_UNIT_WEEK,
571     *                  UDAT_REL_UNIT_FRIDAY.
572     * @param appendTo  The string to which the formatted result will be
573     *                  appended.
574     * @param status    ICU error code returned here.
575     * @return          appendTo
576     * @stable ICU 57
577     */
578    UnicodeString& formatNumeric(
579            double offset,
580            URelativeDateTimeUnit unit,
581            UnicodeString& appendTo,
582            UErrorCode& status) const;
583
584    /**
585     * Format a combination of URelativeDateTimeUnit and numeric offset
586     * using a numeric style, e.g. "1 week ago", "in 1 week",
587     * "5 weeks ago", "in 5 weeks".
588     *
589     * This method returns a FormattedRelativeDateTime, which exposes more
590     * information than the String returned by formatNumeric().
591     * 
592     * @param offset    The signed offset for the specified unit. This
593     *                  will be formatted according to this object's
594     *                  NumberFormat object.
595     * @param unit      The unit to use when formatting the relative
596     *                  date, e.g. UDAT_REL_UNIT_WEEK,
597     *                  UDAT_REL_UNIT_FRIDAY.
598     * @param status    ICU error code returned here.
599     * @return          The formatted relative datetime
600     * @stable ICU 64
601     */
602    FormattedRelativeDateTime formatNumericToValue(
603            double offset,
604            URelativeDateTimeUnit unit,
605            UErrorCode& status) const;
606
607    /**
608     * Format a combination of URelativeDateTimeUnit and numeric offset
609     * using a text style if possible, e.g. "last week", "this week",
610     * "next week", "yesterday", "tomorrow". Falls back to numeric
611     * style if no appropriate text term is available for the specified
612     * offset in the object's locale.
613     *
614     * This method returns a String. To get more information about the
615     * formatting result, use formatToValue().
616     *
617     * @param offset    The signed offset for the specified unit.
618     * @param unit      The unit to use when formatting the relative
619     *                  date, e.g. UDAT_REL_UNIT_WEEK,
620     *                  UDAT_REL_UNIT_FRIDAY.
621     * @param appendTo  The string to which the formatted result will be
622     *                  appended.
623     * @param status    ICU error code returned here.
624     * @return          appendTo
625     * @stable ICU 57
626     */
627    UnicodeString& format(
628            double offset,
629            URelativeDateTimeUnit unit,
630            UnicodeString& appendTo,
631            UErrorCode& status) const;
632
633    /**
634     * Format a combination of URelativeDateTimeUnit and numeric offset
635     * using a text style if possible, e.g. "last week", "this week",
636     * "next week", "yesterday", "tomorrow". Falls back to numeric
637     * style if no appropriate text term is available for the specified
638     * offset in the object's locale.
639     *
640     * This method returns a FormattedRelativeDateTime, which exposes more
641     * information than the String returned by format().
642     *
643     * @param offset    The signed offset for the specified unit.
644     * @param unit      The unit to use when formatting the relative
645     *                  date, e.g. UDAT_REL_UNIT_WEEK,
646     *                  UDAT_REL_UNIT_FRIDAY.
647     * @param status    ICU error code returned here.
648     * @return          The formatted relative datetime
649     * @stable ICU 64
650     */
651    FormattedRelativeDateTime formatToValue(
652            double offset,
653            URelativeDateTimeUnit unit,
654            UErrorCode& status) const;
655
656    /**
657     * Combines a relative date string and a time string in this object's
658     * locale. This is done with the same date-time separator used for the
659     * default calendar in this locale.
660     *
661     * @param relativeDateString the relative date, e.g 'yesterday'
662     * @param timeString the time e.g '3:45'
663     * @param appendTo concatenated date and time appended here
664     * @param status ICU error code returned here.
665     * @return appendTo
666     * @stable ICU 53
667     */
668    UnicodeString& combineDateAndTime(
669            const UnicodeString& relativeDateString,
670            const UnicodeString& timeString,
671            UnicodeString& appendTo,
672            UErrorCode& status) const;
673
674    /**
675     * Returns the NumberFormat this object is using.
676     *
677     * @stable ICU 53
678     */
679    const NumberFormat& getNumberFormat() const;
680
681    /**
682     * Returns the capitalization context.
683     *
684     * @stable ICU 54
685     */
686    UDisplayContext getCapitalizationContext() const;
687
688    /**
689     * Returns the format style.
690     *
691     * @stable ICU 54
692     */
693    UDateRelativeDateTimeFormatterStyle getFormatStyle() const;
694
695private:
696    const RelativeDateTimeCacheData* fCache;
697    const SharedNumberFormat *fNumberFormat;
698    const SharedPluralRules *fPluralRules;
699    UDateRelativeDateTimeFormatterStyle fStyle;
700    UDisplayContext fContext;
701    const SharedBreakIterator *fOptBreakIterator;
702    Locale fLocale;
703    void init(
704            NumberFormat *nfToAdopt,
705            BreakIterator *brkIter,
706            UErrorCode &status);
707    UnicodeString& adjustForContext(UnicodeString &) const;
708    UBool checkNoAdjustForContext(UErrorCode& status) const;
709
710    template<typename F, typename... Args>
711    UnicodeString& doFormat(
712            F callback,
713            UnicodeString& appendTo,
714            UErrorCode& status,
715            Args... args) const;
716
717    template<typename F, typename... Args>
718    FormattedRelativeDateTime doFormatToValue(
719            F callback,
720            UErrorCode& status,
721            Args... args) const;
722
723    void formatImpl(
724            double quantity,
725            UDateDirection direction,
726            UDateRelativeUnit unit,
727            FormattedRelativeDateTimeData& output,
728            UErrorCode& status) const;
729    void formatAbsoluteImpl(
730            UDateDirection direction,
731            UDateAbsoluteUnit unit,
732            FormattedRelativeDateTimeData& output,
733            UErrorCode& status) const;
734    void formatNumericImpl(
735            double offset,
736            URelativeDateTimeUnit unit,
737            FormattedRelativeDateTimeData& output,
738            UErrorCode& status) const;
739    void formatRelativeImpl(
740            double offset,
741            URelativeDateTimeUnit unit,
742            FormattedRelativeDateTimeData& output,
743            UErrorCode& status) const;
744};
745
746U_NAMESPACE_END
747
748#endif /* !UCONFIG_NO_BREAK_ITERATION */
749#endif /* !UCONFIG_NO_FORMATTING */
750
751#endif /* U_SHOW_CPLUSPLUS_API */
752
753#endif /* __RELDATEFMT_H */
754 
codekingpro/portable-devtools · Team Ai