123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751 |
- // © 2016 and later: Unicode, Inc. and others.
- // License & terms of use: http://www.unicode.org/copyright.html
- /*
- *******************************************************************************
- *
- * Copyright (C) 2007-2015, International Business Machines
- * Corporation and others. All Rights Reserved.
- *
- *******************************************************************************
- * file name: udatpg.h
- * encoding: UTF-8
- * tab size: 8 (not used)
- * indentation:4
- *
- * created on: 2007jul30
- * created by: Markus W. Scherer
- */
- #ifndef __UDATPG_H__
- #define __UDATPG_H__
- #include "unicode/utypes.h"
- #include "unicode/udat.h"
- #include "unicode/uenum.h"
- #if U_SHOW_CPLUSPLUS_API
- #include "unicode/localpointer.h"
- #endif // U_SHOW_CPLUSPLUS_API
- /**
- * \file
- * \brief C API: Wrapper for icu::DateTimePatternGenerator (unicode/dtptngen.h).
- *
- * UDateTimePatternGenerator provides flexible generation of date format patterns,
- * like "yy-MM-dd". The user can build up the generator by adding successive
- * patterns. Once that is done, a query can be made using a "skeleton", which is
- * a pattern which just includes the desired fields and lengths. The generator
- * will return the "best fit" pattern corresponding to that skeleton.
- * <p>The main method people will use is udatpg_getBestPattern, since normally
- * UDateTimePatternGenerator is pre-built with data from a particular locale.
- * However, generators can be built directly from other data as well.
- * <p><i>Issue: may be useful to also have a function that returns the list of
- * fields in a pattern, in order, since we have that internally.
- * That would be useful for getting the UI order of field elements.</i>
- */
- /**
- * Opaque type for a date/time pattern generator object.
- * @stable ICU 3.8
- */
- typedef void *UDateTimePatternGenerator;
- /**
- * Field number constants for udatpg_getAppendItemFormats() and similar functions.
- * These constants are separate from UDateFormatField despite semantic overlap
- * because some fields are merged for the date/time pattern generator.
- * @stable ICU 3.8
- */
- typedef enum UDateTimePatternField {
- /** @stable ICU 3.8 */
- UDATPG_ERA_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_YEAR_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_QUARTER_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_MONTH_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_WEEK_OF_YEAR_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_WEEK_OF_MONTH_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_WEEKDAY_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_DAY_OF_YEAR_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_DAY_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_DAYPERIOD_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_HOUR_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_MINUTE_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_SECOND_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_FRACTIONAL_SECOND_FIELD,
- /** @stable ICU 3.8 */
- UDATPG_ZONE_FIELD,
- /* Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
- * it is needed for layout of DateTimePatternGenerator object. */
- #ifndef U_FORCE_HIDE_DEPRECATED_API
- /**
- * One more than the highest normal UDateTimePatternField value.
- * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
- */
- UDATPG_FIELD_COUNT
- #endif // U_FORCE_HIDE_DEPRECATED_API
- } UDateTimePatternField;
- /**
- * Field display name width constants for udatpg_getFieldDisplayName().
- * @stable ICU 61
- */
- typedef enum UDateTimePGDisplayWidth {
- /** @stable ICU 61 */
- UDATPG_WIDE,
- /** @stable ICU 61 */
- UDATPG_ABBREVIATED,
- /** @stable ICU 61 */
- UDATPG_NARROW
- } UDateTimePGDisplayWidth;
- /**
- * Masks to control forcing the length of specified fields in the returned
- * pattern to match those in the skeleton (when this would not happen
- * otherwise). These may be combined to force the length of multiple fields.
- * Used with udatpg_getBestPatternWithOptions, udatpg_replaceFieldTypesWithOptions.
- * @stable ICU 4.4
- */
- typedef enum UDateTimePatternMatchOptions {
- /** @stable ICU 4.4 */
- UDATPG_MATCH_NO_OPTIONS = 0,
- /** @stable ICU 4.4 */
- UDATPG_MATCH_HOUR_FIELD_LENGTH = 1 << UDATPG_HOUR_FIELD,
- #ifndef U_HIDE_INTERNAL_API
- /** @internal ICU 4.4 */
- UDATPG_MATCH_MINUTE_FIELD_LENGTH = 1 << UDATPG_MINUTE_FIELD,
- /** @internal ICU 4.4 */
- UDATPG_MATCH_SECOND_FIELD_LENGTH = 1 << UDATPG_SECOND_FIELD,
- #endif /* U_HIDE_INTERNAL_API */
- /** @stable ICU 4.4 */
- UDATPG_MATCH_ALL_FIELDS_LENGTH = (1 << UDATPG_FIELD_COUNT) - 1
- } UDateTimePatternMatchOptions;
- /**
- * Status return values from udatpg_addPattern().
- * @stable ICU 3.8
- */
- typedef enum UDateTimePatternConflict {
- /** @stable ICU 3.8 */
- UDATPG_NO_CONFLICT,
- /** @stable ICU 3.8 */
- UDATPG_BASE_CONFLICT,
- /** @stable ICU 3.8 */
- UDATPG_CONFLICT,
- #ifndef U_HIDE_DEPRECATED_API
- /**
- * One more than the highest normal UDateTimePatternConflict value.
- * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
- */
- UDATPG_CONFLICT_COUNT
- #endif // U_HIDE_DEPRECATED_API
- } UDateTimePatternConflict;
- /**
- * Open a generator according to a given locale.
- * @param locale
- * @param pErrorCode a pointer to the UErrorCode which must not indicate a
- * failure before the function call.
- * @return a pointer to UDateTimePatternGenerator.
- * @stable ICU 3.8
- */
- U_CAPI UDateTimePatternGenerator * U_EXPORT2
- udatpg_open(const char *locale, UErrorCode *pErrorCode);
- /**
- * Open an empty generator, to be constructed with udatpg_addPattern(...) etc.
- * @param pErrorCode a pointer to the UErrorCode which must not indicate a
- * failure before the function call.
- * @return a pointer to UDateTimePatternGenerator.
- * @stable ICU 3.8
- */
- U_CAPI UDateTimePatternGenerator * U_EXPORT2
- udatpg_openEmpty(UErrorCode *pErrorCode);
- /**
- * Close a generator.
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @stable ICU 3.8
- */
- U_CAPI void U_EXPORT2
- udatpg_close(UDateTimePatternGenerator *dtpg);
- #if U_SHOW_CPLUSPLUS_API
- U_NAMESPACE_BEGIN
- /**
- * \class LocalUDateTimePatternGeneratorPointer
- * "Smart pointer" class, closes a UDateTimePatternGenerator via udatpg_close().
- * For most methods see the LocalPointerBase base class.
- *
- * @see LocalPointerBase
- * @see LocalPointer
- * @stable ICU 4.4
- */
- U_DEFINE_LOCAL_OPEN_POINTER(LocalUDateTimePatternGeneratorPointer, UDateTimePatternGenerator, udatpg_close);
- U_NAMESPACE_END
- #endif
- /**
- * Create a copy pf a generator.
- * @param dtpg a pointer to UDateTimePatternGenerator to be copied.
- * @param pErrorCode a pointer to the UErrorCode which must not indicate a
- * failure before the function call.
- * @return a pointer to a new UDateTimePatternGenerator.
- * @stable ICU 3.8
- */
- U_CAPI UDateTimePatternGenerator * U_EXPORT2
- udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
- /**
- * Get the best pattern matching the input skeleton. It is guaranteed to
- * have all of the fields in the skeleton.
- *
- * Note that this function uses a non-const UDateTimePatternGenerator:
- * It uses a stateful pattern parser which is set up for each generator object,
- * rather than creating one for each function call.
- * Consecutive calls to this function do not affect each other,
- * but this function cannot be used concurrently on a single generator object.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param skeleton
- * The skeleton is a pattern containing only the variable fields.
- * For example, "MMMdd" and "mmhh" are skeletons.
- * @param length the length of skeleton
- * @param bestPattern
- * The best pattern found from the given skeleton.
- * @param capacity the capacity of bestPattern.
- * @param pErrorCode a pointer to the UErrorCode which must not indicate a
- * failure before the function call.
- * @return the length of bestPattern.
- * @stable ICU 3.8
- */
- U_CAPI int32_t U_EXPORT2
- udatpg_getBestPattern(UDateTimePatternGenerator *dtpg,
- const UChar *skeleton, int32_t length,
- UChar *bestPattern, int32_t capacity,
- UErrorCode *pErrorCode);
- /**
- * Get the best pattern matching the input skeleton. It is guaranteed to
- * have all of the fields in the skeleton.
- *
- * Note that this function uses a non-const UDateTimePatternGenerator:
- * It uses a stateful pattern parser which is set up for each generator object,
- * rather than creating one for each function call.
- * Consecutive calls to this function do not affect each other,
- * but this function cannot be used concurrently on a single generator object.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param skeleton
- * The skeleton is a pattern containing only the variable fields.
- * For example, "MMMdd" and "mmhh" are skeletons.
- * @param length the length of skeleton
- * @param options
- * Options for forcing the length of specified fields in the
- * returned pattern to match those in the skeleton (when this
- * would not happen otherwise). For default behavior, use
- * UDATPG_MATCH_NO_OPTIONS.
- * @param bestPattern
- * The best pattern found from the given skeleton.
- * @param capacity
- * the capacity of bestPattern.
- * @param pErrorCode
- * a pointer to the UErrorCode which must not indicate a
- * failure before the function call.
- * @return the length of bestPattern.
- * @stable ICU 4.4
- */
- U_CAPI int32_t U_EXPORT2
- udatpg_getBestPatternWithOptions(UDateTimePatternGenerator *dtpg,
- const UChar *skeleton, int32_t length,
- UDateTimePatternMatchOptions options,
- UChar *bestPattern, int32_t capacity,
- UErrorCode *pErrorCode);
- /**
- * Get a unique skeleton from a given pattern. For example,
- * both "MMM-dd" and "dd/MMM" produce the skeleton "MMMdd".
- *
- * Note that this function uses a non-const UDateTimePatternGenerator:
- * It uses a stateful pattern parser which is set up for each generator object,
- * rather than creating one for each function call.
- * Consecutive calls to this function do not affect each other,
- * but this function cannot be used concurrently on a single generator object.
- *
- * @param unusedDtpg a pointer to UDateTimePatternGenerator.
- * This parameter is no longer used. Callers may pass NULL.
- * @param pattern input pattern, such as "dd/MMM".
- * @param length the length of pattern.
- * @param skeleton such as "MMMdd"
- * @param capacity the capacity of skeleton.
- * @param pErrorCode a pointer to the UErrorCode which must not indicate a
- * failure before the function call.
- * @return the length of skeleton.
- * @stable ICU 3.8
- */
- U_CAPI int32_t U_EXPORT2
- udatpg_getSkeleton(UDateTimePatternGenerator *unusedDtpg,
- const UChar *pattern, int32_t length,
- UChar *skeleton, int32_t capacity,
- UErrorCode *pErrorCode);
- /**
- * Get a unique base skeleton from a given pattern. This is the same
- * as the skeleton, except that differences in length are minimized so
- * as to only preserve the difference between string and numeric form. So
- * for example, both "MMM-dd" and "d/MMM" produce the skeleton "MMMd"
- * (notice the single d).
- *
- * Note that this function uses a non-const UDateTimePatternGenerator:
- * It uses a stateful pattern parser which is set up for each generator object,
- * rather than creating one for each function call.
- * Consecutive calls to this function do not affect each other,
- * but this function cannot be used concurrently on a single generator object.
- *
- * @param unusedDtpg a pointer to UDateTimePatternGenerator.
- * This parameter is no longer used. Callers may pass NULL.
- * @param pattern input pattern, such as "dd/MMM".
- * @param length the length of pattern.
- * @param baseSkeleton such as "Md"
- * @param capacity the capacity of base skeleton.
- * @param pErrorCode a pointer to the UErrorCode which must not indicate a
- * failure before the function call.
- * @return the length of baseSkeleton.
- * @stable ICU 3.8
- */
- U_CAPI int32_t U_EXPORT2
- udatpg_getBaseSkeleton(UDateTimePatternGenerator *unusedDtpg,
- const UChar *pattern, int32_t length,
- UChar *baseSkeleton, int32_t capacity,
- UErrorCode *pErrorCode);
- /**
- * Adds a pattern to the generator. If the pattern has the same skeleton as
- * an existing pattern, and the override parameter is set, then the previous
- * value is overridden. Otherwise, the previous value is retained. In either
- * case, the conflicting status is set and previous vale is stored in
- * conflicting pattern.
- * <p>
- * Note that single-field patterns (like "MMM") are automatically added, and
- * don't need to be added explicitly!
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param pattern input pattern, such as "dd/MMM"
- * @param patternLength the length of pattern.
- * @param override When existing values are to be overridden use true,
- * otherwise use false.
- * @param conflictingPattern Previous pattern with the same skeleton.
- * @param capacity the capacity of conflictingPattern.
- * @param pLength a pointer to the length of conflictingPattern.
- * @param pErrorCode a pointer to the UErrorCode which must not indicate a
- * failure before the function call.
- * @return conflicting status. The value could be UDATPG_NO_CONFLICT,
- * UDATPG_BASE_CONFLICT or UDATPG_CONFLICT.
- * @stable ICU 3.8
- */
- U_CAPI UDateTimePatternConflict U_EXPORT2
- udatpg_addPattern(UDateTimePatternGenerator *dtpg,
- const UChar *pattern, int32_t patternLength,
- UBool override,
- UChar *conflictingPattern, int32_t capacity, int32_t *pLength,
- UErrorCode *pErrorCode);
- /**
- * An AppendItem format is a pattern used to append a field if there is no
- * good match. For example, suppose that the input skeleton is "GyyyyMMMd",
- * and there is no matching pattern internally, but there is a pattern
- * matching "yyyyMMMd", say "d-MM-yyyy". Then that pattern is used, plus the
- * G. The way these two are conjoined is by using the AppendItemFormat for G
- * (era). So if that value is, say "{0}, {1}" then the final resulting
- * pattern is "d-MM-yyyy, G".
- * <p>
- * There are actually three available variables: {0} is the pattern so far,
- * {1} is the element we are adding, and {2} is the name of the element.
- * <p>
- * This reflects the way that the CLDR data is organized.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param field UDateTimePatternField, such as UDATPG_ERA_FIELD
- * @param value pattern, such as "{0}, {1}"
- * @param length the length of value.
- * @stable ICU 3.8
- */
- U_CAPI void U_EXPORT2
- udatpg_setAppendItemFormat(UDateTimePatternGenerator *dtpg,
- UDateTimePatternField field,
- const UChar *value, int32_t length);
- /**
- * Getter corresponding to setAppendItemFormat. Values below 0 or at or
- * above UDATPG_FIELD_COUNT are illegal arguments.
- *
- * @param dtpg A pointer to UDateTimePatternGenerator.
- * @param field UDateTimePatternField, such as UDATPG_ERA_FIELD
- * @param pLength A pointer that will receive the length of appendItemFormat.
- * @return appendItemFormat for field.
- * @stable ICU 3.8
- */
- U_CAPI const UChar * U_EXPORT2
- udatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg,
- UDateTimePatternField field,
- int32_t *pLength);
- /**
- * Set the name of field, eg "era" in English for ERA. These are only
- * used if the corresponding AppendItemFormat is used, and if it contains a
- * {2} variable.
- * <p>
- * This reflects the way that the CLDR data is organized.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param field UDateTimePatternField
- * @param value name for the field.
- * @param length the length of value.
- * @stable ICU 3.8
- */
- U_CAPI void U_EXPORT2
- udatpg_setAppendItemName(UDateTimePatternGenerator *dtpg,
- UDateTimePatternField field,
- const UChar *value, int32_t length);
- /**
- * Getter corresponding to setAppendItemNames. Values below 0 or at or above
- * UDATPG_FIELD_COUNT are illegal arguments. Note: The more general function
- * for getting date/time field display names is udatpg_getFieldDisplayName.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param field UDateTimePatternField, such as UDATPG_ERA_FIELD
- * @param pLength A pointer that will receive the length of the name for field.
- * @return name for field
- * @see udatpg_getFieldDisplayName
- * @stable ICU 3.8
- */
- U_CAPI const UChar * U_EXPORT2
- udatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg,
- UDateTimePatternField field,
- int32_t *pLength);
- /**
- * The general interface to get a display name for a particular date/time field,
- * in one of several possible display widths.
- *
- * @param dtpg
- * A pointer to the UDateTimePatternGenerator object with the localized
- * display names.
- * @param field
- * The desired UDateTimePatternField, such as UDATPG_ERA_FIELD.
- * @param width
- * The desired UDateTimePGDisplayWidth, such as UDATPG_ABBREVIATED.
- * @param fieldName
- * A pointer to a buffer to receive the NULL-terminated display name. If the name
- * fits into fieldName but cannot be NULL-terminated (length == capacity) then
- * the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the name doesn't
- * fit into fieldName then the error code is set to U_BUFFER_OVERFLOW_ERROR.
- * @param capacity
- * The size of fieldName (in UChars).
- * @param pErrorCode
- * A pointer to a UErrorCode to receive any errors
- * @return
- * The full length of the name; if greater than capacity, fieldName contains a
- * truncated result.
- * @stable ICU 61
- */
- U_CAPI int32_t U_EXPORT2
- udatpg_getFieldDisplayName(const UDateTimePatternGenerator *dtpg,
- UDateTimePatternField field,
- UDateTimePGDisplayWidth width,
- UChar *fieldName, int32_t capacity,
- UErrorCode *pErrorCode);
- /**
- * The DateTimeFormat is a message format pattern used to compose date and
- * time patterns. The default pattern in the root locale is "{1} {0}", where
- * {1} will be replaced by the date pattern and {0} will be replaced by the
- * time pattern; however, other locales may specify patterns such as
- * "{1}, {0}" or "{1} 'at' {0}", etc.
- * <p>
- * This is used when the input skeleton contains both date and time fields,
- * but there is not a close match among the added patterns. For example,
- * suppose that this object was created by adding "dd-MMM" and "hh:mm", and
- * its DateTimeFormat is the default "{1} {0}". Then if the input skeleton
- * is "MMMdhmm", there is not an exact match, so the input skeleton is
- * broken up into two components "MMMd" and "hmm". There are close matches
- * for those two skeletons, so the result is put together with this pattern,
- * resulting in "d-MMM h:mm".
- *
- * There are four DateTimeFormats in a UDateTimePatternGenerator object,
- * corresponding to date styles UDAT_FULL..UDAT_SHORT. This method sets
- * all of them to the specified pattern. To set them individually, see
- * udatpg_setDateTimeFormatForStyle.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param dtFormat
- * message format pattern, here {1} will be replaced by the date
- * pattern and {0} will be replaced by the time pattern.
- * @param length the length of dtFormat.
- * @stable ICU 3.8
- */
- U_CAPI void U_EXPORT2
- udatpg_setDateTimeFormat(const UDateTimePatternGenerator *dtpg,
- const UChar *dtFormat, int32_t length);
- /**
- * Getter corresponding to setDateTimeFormat.
- *
- * There are four DateTimeFormats in a UDateTimePatternGenerator object,
- * corresponding to date styles UDAT_FULL..UDAT_SHORT. This method gets
- * the style for UDAT_MEDIUM (the default). To get them individually, see
- * udatpg_getDateTimeFormatForStyle.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param pLength A pointer that will receive the length of the format
- * @return dateTimeFormat.
- * @stable ICU 3.8
- */
- U_CAPI const UChar * U_EXPORT2
- udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg,
- int32_t *pLength);
- #if !UCONFIG_NO_FORMATTING
- /**
- * dateTimeFormats are message patterns used to compose combinations of date
- * and time patterns. There are four length styles, corresponding to the
- * inferred style of the date pattern; these are UDateFormatStyle values:
- * - UDAT_FULL (for date pattern with weekday and long month), else
- * - UDAT_LONG (for a date pattern with long month), else
- * - UDAT_MEDIUM (for a date pattern with abbreviated month), else
- * - UDAT_SHORT (for any other date pattern).
- * For details on dateTimeFormats, see
- * https://www.unicode.org/reports/tr35/tr35-dates.html#dateTimeFormats.
- * The default pattern in the root locale for all styles is "{1} {0}".
- *
- * @param udtpg
- * a pointer to the UDateTimePatternGenerator
- * @param style
- * one of UDAT_FULL..UDAT_SHORT. Error if out of range.
- * @param dateTimeFormat
- * the new dateTimeFormat to set for the the specified style
- * @param length
- * the length of dateTimeFormat, or -1 if unknown and pattern
- * is null-terminated
- * @param pErrorCode
- * a pointer to the UErrorCode (in/out parameter); if no failure
- * status is already set, it will be set according to result of the
- * function (e.g. U_ILLEGAL_ARGUMENT_ERROR for style out of range).
- * @stable ICU 71
- */
- U_CAPI void U_EXPORT2
- udatpg_setDateTimeFormatForStyle(UDateTimePatternGenerator *udtpg,
- UDateFormatStyle style,
- const UChar *dateTimeFormat, int32_t length,
- UErrorCode *pErrorCode);
- /**
- * Getter corresponding to udatpg_setDateTimeFormatForStyle.
- *
- * @param udtpg
- * a pointer to the UDateTimePatternGenerator
- * @param style
- * one of UDAT_FULL..UDAT_SHORT. Error if out of range.
- * @param pLength
- * a pointer that will receive the length of the format. May be NULL
- * if length is not desired.
- * @param pErrorCode
- * a pointer to the UErrorCode (in/out parameter); if no failure
- * status is already set, it will be set according to result of the
- * function (e.g. U_ILLEGAL_ARGUMENT_ERROR for style out of range).
- * @return
- * pointer to the current dateTimeFormat (0 terminated) for the specified
- * style, or empty string in case of error. The pointer and its contents
- * may no longer be valid if udatpg_setDateTimeFormat is called, or
- * udatpg_setDateTimeFormatForStyle for the same style is called, or the
- * UDateTimePatternGenerator object is closed.
- * @stable ICU 71
- */
- U_CAPI const UChar* U_EXPORT2
- udatpg_getDateTimeFormatForStyle(const UDateTimePatternGenerator *udtpg,
- UDateFormatStyle style, int32_t *pLength,
- UErrorCode *pErrorCode);
- #endif /* #if !UCONFIG_NO_FORMATTING */
- /**
- * The decimal value is used in formatting fractions of seconds. If the
- * skeleton contains fractional seconds, then this is used with the
- * fractional seconds. For example, suppose that the input pattern is
- * "hhmmssSSSS", and the best matching pattern internally is "H:mm:ss", and
- * the decimal string is ",". Then the resulting pattern is modified to be
- * "H:mm:ss,SSSS"
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param decimal
- * @param length the length of decimal.
- * @stable ICU 3.8
- */
- U_CAPI void U_EXPORT2
- udatpg_setDecimal(UDateTimePatternGenerator *dtpg,
- const UChar *decimal, int32_t length);
- /**
- * Getter corresponding to setDecimal.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param pLength A pointer that will receive the length of the decimal string.
- * @return corresponding to the decimal point.
- * @stable ICU 3.8
- */
- U_CAPI const UChar * U_EXPORT2
- udatpg_getDecimal(const UDateTimePatternGenerator *dtpg,
- int32_t *pLength);
- /**
- * Adjusts the field types (width and subtype) of a pattern to match what is
- * in a skeleton. That is, if you supply a pattern like "d-M H:m", and a
- * skeleton of "MMMMddhhmm", then the input pattern is adjusted to be
- * "dd-MMMM hh:mm". This is used internally to get the best match for the
- * input skeleton, but can also be used externally.
- *
- * Note that this function uses a non-const UDateTimePatternGenerator:
- * It uses a stateful pattern parser which is set up for each generator object,
- * rather than creating one for each function call.
- * Consecutive calls to this function do not affect each other,
- * but this function cannot be used concurrently on a single generator object.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param pattern Input pattern
- * @param patternLength the length of input pattern.
- * @param skeleton
- * @param skeletonLength the length of input skeleton.
- * @param dest pattern adjusted to match the skeleton fields widths and subtypes.
- * @param destCapacity the capacity of dest.
- * @param pErrorCode a pointer to the UErrorCode which must not indicate a
- * failure before the function call.
- * @return the length of dest.
- * @stable ICU 3.8
- */
- U_CAPI int32_t U_EXPORT2
- udatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg,
- const UChar *pattern, int32_t patternLength,
- const UChar *skeleton, int32_t skeletonLength,
- UChar *dest, int32_t destCapacity,
- UErrorCode *pErrorCode);
- /**
- * Adjusts the field types (width and subtype) of a pattern to match what is
- * in a skeleton. That is, if you supply a pattern like "d-M H:m", and a
- * skeleton of "MMMMddhhmm", then the input pattern is adjusted to be
- * "dd-MMMM hh:mm". This is used internally to get the best match for the
- * input skeleton, but can also be used externally.
- *
- * Note that this function uses a non-const UDateTimePatternGenerator:
- * It uses a stateful pattern parser which is set up for each generator object,
- * rather than creating one for each function call.
- * Consecutive calls to this function do not affect each other,
- * but this function cannot be used concurrently on a single generator object.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param pattern Input pattern
- * @param patternLength the length of input pattern.
- * @param skeleton
- * @param skeletonLength the length of input skeleton.
- * @param options
- * Options controlling whether the length of specified fields in the
- * pattern are adjusted to match those in the skeleton (when this
- * would not happen otherwise). For default behavior, use
- * UDATPG_MATCH_NO_OPTIONS.
- * @param dest pattern adjusted to match the skeleton fields widths and subtypes.
- * @param destCapacity the capacity of dest.
- * @param pErrorCode a pointer to the UErrorCode which must not indicate a
- * failure before the function call.
- * @return the length of dest.
- * @stable ICU 4.4
- */
- U_CAPI int32_t U_EXPORT2
- udatpg_replaceFieldTypesWithOptions(UDateTimePatternGenerator *dtpg,
- const UChar *pattern, int32_t patternLength,
- const UChar *skeleton, int32_t skeletonLength,
- UDateTimePatternMatchOptions options,
- UChar *dest, int32_t destCapacity,
- UErrorCode *pErrorCode);
- /**
- * Return a UEnumeration list of all the skeletons in canonical form.
- * Call udatpg_getPatternForSkeleton() to get the corresponding pattern.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param pErrorCode a pointer to the UErrorCode which must not indicate a
- * failure before the function call
- * @return a UEnumeration list of all the skeletons
- * The caller must close the object.
- * @stable ICU 3.8
- */
- U_CAPI UEnumeration * U_EXPORT2
- udatpg_openSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
- /**
- * Return a UEnumeration list of all the base skeletons in canonical form.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param pErrorCode a pointer to the UErrorCode which must not indicate a
- * failure before the function call.
- * @return a UEnumeration list of all the base skeletons
- * The caller must close the object.
- * @stable ICU 3.8
- */
- U_CAPI UEnumeration * U_EXPORT2
- udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
- /**
- * Get the pattern corresponding to a given skeleton.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param skeleton
- * @param skeletonLength pointer to the length of skeleton.
- * @param pLength pointer to the length of return pattern.
- * @return pattern corresponding to a given skeleton.
- * @stable ICU 3.8
- */
- U_CAPI const UChar * U_EXPORT2
- udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg,
- const UChar *skeleton, int32_t skeletonLength,
- int32_t *pLength);
- #if !UCONFIG_NO_FORMATTING
- /**
- * Return the default hour cycle for a locale. Uses the locale that the
- * UDateTimePatternGenerator was initially created with.
- *
- * Cannot be used on an empty UDateTimePatternGenerator instance.
- *
- * @param dtpg a pointer to UDateTimePatternGenerator.
- * @param pErrorCode a pointer to the UErrorCode which must not indicate a
- * failure before the function call. Set to U_UNSUPPORTED_ERROR
- * if used on an empty instance.
- * @return the default hour cycle.
- * @stable ICU 67
- */
- U_CAPI UDateFormatHourCycle U_EXPORT2
- udatpg_getDefaultHourCycle(const UDateTimePatternGenerator *dtpg, UErrorCode* pErrorCode);
- #endif /* #if !UCONFIG_NO_FORMATTING */
- #endif
|