|
1 /* |
|
2 ******************************************************************************* |
|
3 * |
|
4 * Copyright (C) 2007-2012, International Business Machines |
|
5 * Corporation and others. All Rights Reserved. |
|
6 * |
|
7 ******************************************************************************* |
|
8 * file name: udatpg.h |
|
9 * encoding: US-ASCII |
|
10 * tab size: 8 (not used) |
|
11 * indentation:4 |
|
12 * |
|
13 * created on: 2007jul30 |
|
14 * created by: Markus W. Scherer |
|
15 */ |
|
16 |
|
17 #ifndef __UDATPG_H__ |
|
18 #define __UDATPG_H__ |
|
19 |
|
20 #include "unicode/utypes.h" |
|
21 #include "unicode/uenum.h" |
|
22 #include "unicode/localpointer.h" |
|
23 |
|
24 /** |
|
25 * \file |
|
26 * \brief C API: Wrapper for icu::DateTimePatternGenerator (unicode/dtptngen.h). |
|
27 * |
|
28 * UDateTimePatternGenerator provides flexible generation of date format patterns, |
|
29 * like "yy-MM-dd". The user can build up the generator by adding successive |
|
30 * patterns. Once that is done, a query can be made using a "skeleton", which is |
|
31 * a pattern which just includes the desired fields and lengths. The generator |
|
32 * will return the "best fit" pattern corresponding to that skeleton. |
|
33 * <p>The main method people will use is udatpg_getBestPattern, since normally |
|
34 * UDateTimePatternGenerator is pre-built with data from a particular locale. |
|
35 * However, generators can be built directly from other data as well. |
|
36 * <p><i>Issue: may be useful to also have a function that returns the list of |
|
37 * fields in a pattern, in order, since we have that internally. |
|
38 * That would be useful for getting the UI order of field elements.</i> |
|
39 */ |
|
40 |
|
41 /** |
|
42 * Opaque type for a date/time pattern generator object. |
|
43 * @stable ICU 3.8 |
|
44 */ |
|
45 typedef void *UDateTimePatternGenerator; |
|
46 |
|
47 /** |
|
48 * Field number constants for udatpg_getAppendItemFormats() and similar functions. |
|
49 * These constants are separate from UDateFormatField despite semantic overlap |
|
50 * because some fields are merged for the date/time pattern generator. |
|
51 * @stable ICU 3.8 |
|
52 */ |
|
53 typedef enum UDateTimePatternField { |
|
54 /** @stable ICU 3.8 */ |
|
55 UDATPG_ERA_FIELD, |
|
56 /** @stable ICU 3.8 */ |
|
57 UDATPG_YEAR_FIELD, |
|
58 /** @stable ICU 3.8 */ |
|
59 UDATPG_QUARTER_FIELD, |
|
60 /** @stable ICU 3.8 */ |
|
61 UDATPG_MONTH_FIELD, |
|
62 /** @stable ICU 3.8 */ |
|
63 UDATPG_WEEK_OF_YEAR_FIELD, |
|
64 /** @stable ICU 3.8 */ |
|
65 UDATPG_WEEK_OF_MONTH_FIELD, |
|
66 /** @stable ICU 3.8 */ |
|
67 UDATPG_WEEKDAY_FIELD, |
|
68 /** @stable ICU 3.8 */ |
|
69 UDATPG_DAY_OF_YEAR_FIELD, |
|
70 /** @stable ICU 3.8 */ |
|
71 UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, |
|
72 /** @stable ICU 3.8 */ |
|
73 UDATPG_DAY_FIELD, |
|
74 /** @stable ICU 3.8 */ |
|
75 UDATPG_DAYPERIOD_FIELD, |
|
76 /** @stable ICU 3.8 */ |
|
77 UDATPG_HOUR_FIELD, |
|
78 /** @stable ICU 3.8 */ |
|
79 UDATPG_MINUTE_FIELD, |
|
80 /** @stable ICU 3.8 */ |
|
81 UDATPG_SECOND_FIELD, |
|
82 /** @stable ICU 3.8 */ |
|
83 UDATPG_FRACTIONAL_SECOND_FIELD, |
|
84 /** @stable ICU 3.8 */ |
|
85 UDATPG_ZONE_FIELD, |
|
86 /** @stable ICU 3.8 */ |
|
87 UDATPG_FIELD_COUNT |
|
88 } UDateTimePatternField; |
|
89 |
|
90 /** |
|
91 * Masks to control forcing the length of specified fields in the returned |
|
92 * pattern to match those in the skeleton (when this would not happen |
|
93 * otherwise). These may be combined to force the length of multiple fields. |
|
94 * Used with udatpg_getBestPatternWithOptions, udatpg_replaceFieldTypesWithOptions. |
|
95 * @stable ICU 4.4 |
|
96 */ |
|
97 typedef enum UDateTimePatternMatchOptions { |
|
98 /** @stable ICU 4.4 */ |
|
99 UDATPG_MATCH_NO_OPTIONS = 0, |
|
100 /** @stable ICU 4.4 */ |
|
101 UDATPG_MATCH_HOUR_FIELD_LENGTH = 1 << UDATPG_HOUR_FIELD, |
|
102 #ifndef U_HIDE_INTERNAL_API |
|
103 /** @internal ICU 4.4 */ |
|
104 UDATPG_MATCH_MINUTE_FIELD_LENGTH = 1 << UDATPG_MINUTE_FIELD, |
|
105 /** @internal ICU 4.4 */ |
|
106 UDATPG_MATCH_SECOND_FIELD_LENGTH = 1 << UDATPG_SECOND_FIELD, |
|
107 #endif /* U_HIDE_INTERNAL_API */ |
|
108 /** @stable ICU 4.4 */ |
|
109 UDATPG_MATCH_ALL_FIELDS_LENGTH = (1 << UDATPG_FIELD_COUNT) - 1 |
|
110 } UDateTimePatternMatchOptions; |
|
111 |
|
112 /** |
|
113 * Status return values from udatpg_addPattern(). |
|
114 * @stable ICU 3.8 |
|
115 */ |
|
116 typedef enum UDateTimePatternConflict { |
|
117 /** @stable ICU 3.8 */ |
|
118 UDATPG_NO_CONFLICT, |
|
119 /** @stable ICU 3.8 */ |
|
120 UDATPG_BASE_CONFLICT, |
|
121 /** @stable ICU 3.8 */ |
|
122 UDATPG_CONFLICT, |
|
123 /** @stable ICU 3.8 */ |
|
124 UDATPG_CONFLICT_COUNT |
|
125 } UDateTimePatternConflict; |
|
126 |
|
127 /** |
|
128 * Open a generator according to a given locale. |
|
129 * @param locale |
|
130 * @param pErrorCode a pointer to the UErrorCode which must not indicate a |
|
131 * failure before the function call. |
|
132 * @return a pointer to UDateTimePatternGenerator. |
|
133 * @stable ICU 3.8 |
|
134 */ |
|
135 U_STABLE UDateTimePatternGenerator * U_EXPORT2 |
|
136 udatpg_open(const char *locale, UErrorCode *pErrorCode); |
|
137 |
|
138 /** |
|
139 * Open an empty generator, to be constructed with udatpg_addPattern(...) etc. |
|
140 * @param pErrorCode a pointer to the UErrorCode which must not indicate a |
|
141 * failure before the function call. |
|
142 * @return a pointer to UDateTimePatternGenerator. |
|
143 * @stable ICU 3.8 |
|
144 */ |
|
145 U_STABLE UDateTimePatternGenerator * U_EXPORT2 |
|
146 udatpg_openEmpty(UErrorCode *pErrorCode); |
|
147 |
|
148 /** |
|
149 * Close a generator. |
|
150 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
151 * @stable ICU 3.8 |
|
152 */ |
|
153 U_STABLE void U_EXPORT2 |
|
154 udatpg_close(UDateTimePatternGenerator *dtpg); |
|
155 |
|
156 #if U_SHOW_CPLUSPLUS_API |
|
157 |
|
158 U_NAMESPACE_BEGIN |
|
159 |
|
160 /** |
|
161 * \class LocalUDateTimePatternGeneratorPointer |
|
162 * "Smart pointer" class, closes a UDateTimePatternGenerator via udatpg_close(). |
|
163 * For most methods see the LocalPointerBase base class. |
|
164 * |
|
165 * @see LocalPointerBase |
|
166 * @see LocalPointer |
|
167 * @stable ICU 4.4 |
|
168 */ |
|
169 U_DEFINE_LOCAL_OPEN_POINTER(LocalUDateTimePatternGeneratorPointer, UDateTimePatternGenerator, udatpg_close); |
|
170 |
|
171 U_NAMESPACE_END |
|
172 |
|
173 #endif |
|
174 |
|
175 /** |
|
176 * Create a copy pf a generator. |
|
177 * @param dtpg a pointer to UDateTimePatternGenerator to be copied. |
|
178 * @param pErrorCode a pointer to the UErrorCode which must not indicate a |
|
179 * failure before the function call. |
|
180 * @return a pointer to a new UDateTimePatternGenerator. |
|
181 * @stable ICU 3.8 |
|
182 */ |
|
183 U_STABLE UDateTimePatternGenerator * U_EXPORT2 |
|
184 udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode); |
|
185 |
|
186 /** |
|
187 * Get the best pattern matching the input skeleton. It is guaranteed to |
|
188 * have all of the fields in the skeleton. |
|
189 * |
|
190 * Note that this function uses a non-const UDateTimePatternGenerator: |
|
191 * It uses a stateful pattern parser which is set up for each generator object, |
|
192 * rather than creating one for each function call. |
|
193 * Consecutive calls to this function do not affect each other, |
|
194 * but this function cannot be used concurrently on a single generator object. |
|
195 * |
|
196 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
197 * @param skeleton |
|
198 * The skeleton is a pattern containing only the variable fields. |
|
199 * For example, "MMMdd" and "mmhh" are skeletons. |
|
200 * @param length the length of skeleton |
|
201 * @param bestPattern |
|
202 * The best pattern found from the given skeleton. |
|
203 * @param capacity the capacity of bestPattern. |
|
204 * @param pErrorCode a pointer to the UErrorCode which must not indicate a |
|
205 * failure before the function call. |
|
206 * @return the length of bestPattern. |
|
207 * @stable ICU 3.8 |
|
208 */ |
|
209 U_STABLE int32_t U_EXPORT2 |
|
210 udatpg_getBestPattern(UDateTimePatternGenerator *dtpg, |
|
211 const UChar *skeleton, int32_t length, |
|
212 UChar *bestPattern, int32_t capacity, |
|
213 UErrorCode *pErrorCode); |
|
214 |
|
215 /** |
|
216 * Get the best pattern matching the input skeleton. It is guaranteed to |
|
217 * have all of the fields in the skeleton. |
|
218 * |
|
219 * Note that this function uses a non-const UDateTimePatternGenerator: |
|
220 * It uses a stateful pattern parser which is set up for each generator object, |
|
221 * rather than creating one for each function call. |
|
222 * Consecutive calls to this function do not affect each other, |
|
223 * but this function cannot be used concurrently on a single generator object. |
|
224 * |
|
225 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
226 * @param skeleton |
|
227 * The skeleton is a pattern containing only the variable fields. |
|
228 * For example, "MMMdd" and "mmhh" are skeletons. |
|
229 * @param length the length of skeleton |
|
230 * @param options |
|
231 * Options for forcing the length of specified fields in the |
|
232 * returned pattern to match those in the skeleton (when this |
|
233 * would not happen otherwise). For default behavior, use |
|
234 * UDATPG_MATCH_NO_OPTIONS. |
|
235 * @param bestPattern |
|
236 * The best pattern found from the given skeleton. |
|
237 * @param capacity |
|
238 * the capacity of bestPattern. |
|
239 * @param pErrorCode |
|
240 * a pointer to the UErrorCode which must not indicate a |
|
241 * failure before the function call. |
|
242 * @return the length of bestPattern. |
|
243 * @stable ICU 4.4 |
|
244 */ |
|
245 U_STABLE int32_t U_EXPORT2 |
|
246 udatpg_getBestPatternWithOptions(UDateTimePatternGenerator *dtpg, |
|
247 const UChar *skeleton, int32_t length, |
|
248 UDateTimePatternMatchOptions options, |
|
249 UChar *bestPattern, int32_t capacity, |
|
250 UErrorCode *pErrorCode); |
|
251 |
|
252 /** |
|
253 * Get a unique skeleton from a given pattern. For example, |
|
254 * both "MMM-dd" and "dd/MMM" produce the skeleton "MMMdd". |
|
255 * |
|
256 * Note that this function uses a non-const UDateTimePatternGenerator: |
|
257 * It uses a stateful pattern parser which is set up for each generator object, |
|
258 * rather than creating one for each function call. |
|
259 * Consecutive calls to this function do not affect each other, |
|
260 * but this function cannot be used concurrently on a single generator object. |
|
261 * |
|
262 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
263 * @param pattern input pattern, such as "dd/MMM". |
|
264 * @param length the length of pattern. |
|
265 * @param skeleton such as "MMMdd" |
|
266 * @param capacity the capacity of skeleton. |
|
267 * @param pErrorCode a pointer to the UErrorCode which must not indicate a |
|
268 * failure before the function call. |
|
269 * @return the length of skeleton. |
|
270 * @stable ICU 3.8 |
|
271 */ |
|
272 U_STABLE int32_t U_EXPORT2 |
|
273 udatpg_getSkeleton(UDateTimePatternGenerator *dtpg, |
|
274 const UChar *pattern, int32_t length, |
|
275 UChar *skeleton, int32_t capacity, |
|
276 UErrorCode *pErrorCode); |
|
277 |
|
278 /** |
|
279 * Get a unique base skeleton from a given pattern. This is the same |
|
280 * as the skeleton, except that differences in length are minimized so |
|
281 * as to only preserve the difference between string and numeric form. So |
|
282 * for example, both "MMM-dd" and "d/MMM" produce the skeleton "MMMd" |
|
283 * (notice the single d). |
|
284 * |
|
285 * Note that this function uses a non-const UDateTimePatternGenerator: |
|
286 * It uses a stateful pattern parser which is set up for each generator object, |
|
287 * rather than creating one for each function call. |
|
288 * Consecutive calls to this function do not affect each other, |
|
289 * but this function cannot be used concurrently on a single generator object. |
|
290 * |
|
291 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
292 * @param pattern input pattern, such as "dd/MMM". |
|
293 * @param length the length of pattern. |
|
294 * @param baseSkeleton such as "Md" |
|
295 * @param capacity the capacity of base skeleton. |
|
296 * @param pErrorCode a pointer to the UErrorCode which must not indicate a |
|
297 * failure before the function call. |
|
298 * @return the length of baseSkeleton. |
|
299 * @stable ICU 3.8 |
|
300 */ |
|
301 U_STABLE int32_t U_EXPORT2 |
|
302 udatpg_getBaseSkeleton(UDateTimePatternGenerator *dtpg, |
|
303 const UChar *pattern, int32_t length, |
|
304 UChar *baseSkeleton, int32_t capacity, |
|
305 UErrorCode *pErrorCode); |
|
306 |
|
307 /** |
|
308 * Adds a pattern to the generator. If the pattern has the same skeleton as |
|
309 * an existing pattern, and the override parameter is set, then the previous |
|
310 * value is overriden. Otherwise, the previous value is retained. In either |
|
311 * case, the conflicting status is set and previous vale is stored in |
|
312 * conflicting pattern. |
|
313 * <p> |
|
314 * Note that single-field patterns (like "MMM") are automatically added, and |
|
315 * don't need to be added explicitly! |
|
316 * |
|
317 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
318 * @param pattern input pattern, such as "dd/MMM" |
|
319 * @param patternLength the length of pattern. |
|
320 * @param override When existing values are to be overridden use true, |
|
321 * otherwise use false. |
|
322 * @param conflictingPattern Previous pattern with the same skeleton. |
|
323 * @param capacity the capacity of conflictingPattern. |
|
324 * @param pLength a pointer to the length of conflictingPattern. |
|
325 * @param pErrorCode a pointer to the UErrorCode which must not indicate a |
|
326 * failure before the function call. |
|
327 * @return conflicting status. The value could be UDATPG_NO_CONFLICT, |
|
328 * UDATPG_BASE_CONFLICT or UDATPG_CONFLICT. |
|
329 * @stable ICU 3.8 |
|
330 */ |
|
331 U_STABLE UDateTimePatternConflict U_EXPORT2 |
|
332 udatpg_addPattern(UDateTimePatternGenerator *dtpg, |
|
333 const UChar *pattern, int32_t patternLength, |
|
334 UBool override, |
|
335 UChar *conflictingPattern, int32_t capacity, int32_t *pLength, |
|
336 UErrorCode *pErrorCode); |
|
337 |
|
338 /** |
|
339 * An AppendItem format is a pattern used to append a field if there is no |
|
340 * good match. For example, suppose that the input skeleton is "GyyyyMMMd", |
|
341 * and there is no matching pattern internally, but there is a pattern |
|
342 * matching "yyyyMMMd", say "d-MM-yyyy". Then that pattern is used, plus the |
|
343 * G. The way these two are conjoined is by using the AppendItemFormat for G |
|
344 * (era). So if that value is, say "{0}, {1}" then the final resulting |
|
345 * pattern is "d-MM-yyyy, G". |
|
346 * <p> |
|
347 * There are actually three available variables: {0} is the pattern so far, |
|
348 * {1} is the element we are adding, and {2} is the name of the element. |
|
349 * <p> |
|
350 * This reflects the way that the CLDR data is organized. |
|
351 * |
|
352 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
353 * @param field UDateTimePatternField, such as UDATPG_ERA_FIELD |
|
354 * @param value pattern, such as "{0}, {1}" |
|
355 * @param length the length of value. |
|
356 * @stable ICU 3.8 |
|
357 */ |
|
358 U_STABLE void U_EXPORT2 |
|
359 udatpg_setAppendItemFormat(UDateTimePatternGenerator *dtpg, |
|
360 UDateTimePatternField field, |
|
361 const UChar *value, int32_t length); |
|
362 |
|
363 /** |
|
364 * Getter corresponding to setAppendItemFormat. Values below 0 or at or |
|
365 * above UDATPG_FIELD_COUNT are illegal arguments. |
|
366 * |
|
367 * @param dtpg A pointer to UDateTimePatternGenerator. |
|
368 * @param field UDateTimePatternField, such as UDATPG_ERA_FIELD |
|
369 * @param pLength A pointer that will receive the length of appendItemFormat. |
|
370 * @return appendItemFormat for field. |
|
371 * @stable ICU 3.8 |
|
372 */ |
|
373 U_STABLE const UChar * U_EXPORT2 |
|
374 udatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg, |
|
375 UDateTimePatternField field, |
|
376 int32_t *pLength); |
|
377 |
|
378 /** |
|
379 * Set the name of field, eg "era" in English for ERA. These are only |
|
380 * used if the corresponding AppendItemFormat is used, and if it contains a |
|
381 * {2} variable. |
|
382 * <p> |
|
383 * This reflects the way that the CLDR data is organized. |
|
384 * |
|
385 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
386 * @param field UDateTimePatternField |
|
387 * @param value name for the field. |
|
388 * @param length the length of value. |
|
389 * @stable ICU 3.8 |
|
390 */ |
|
391 U_STABLE void U_EXPORT2 |
|
392 udatpg_setAppendItemName(UDateTimePatternGenerator *dtpg, |
|
393 UDateTimePatternField field, |
|
394 const UChar *value, int32_t length); |
|
395 |
|
396 /** |
|
397 * Getter corresponding to setAppendItemNames. Values below 0 or at or above |
|
398 * UDATPG_FIELD_COUNT are illegal arguments. |
|
399 * |
|
400 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
401 * @param field UDateTimePatternField, such as UDATPG_ERA_FIELD |
|
402 * @param pLength A pointer that will receive the length of the name for field. |
|
403 * @return name for field |
|
404 * @stable ICU 3.8 |
|
405 */ |
|
406 U_STABLE const UChar * U_EXPORT2 |
|
407 udatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg, |
|
408 UDateTimePatternField field, |
|
409 int32_t *pLength); |
|
410 |
|
411 /** |
|
412 * The date time format is a message format pattern used to compose date and |
|
413 * time patterns. The default value is "{0} {1}", where {0} will be replaced |
|
414 * by the date pattern and {1} will be replaced by the time pattern. |
|
415 * <p> |
|
416 * This is used when the input skeleton contains both date and time fields, |
|
417 * but there is not a close match among the added patterns. For example, |
|
418 * suppose that this object was created by adding "dd-MMM" and "hh:mm", and |
|
419 * its datetimeFormat is the default "{0} {1}". Then if the input skeleton |
|
420 * is "MMMdhmm", there is not an exact match, so the input skeleton is |
|
421 * broken up into two components "MMMd" and "hmm". There are close matches |
|
422 * for those two skeletons, so the result is put together with this pattern, |
|
423 * resulting in "d-MMM h:mm". |
|
424 * |
|
425 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
426 * @param dtFormat |
|
427 * message format pattern, here {0} will be replaced by the date |
|
428 * pattern and {1} will be replaced by the time pattern. |
|
429 * @param length the length of dtFormat. |
|
430 * @stable ICU 3.8 |
|
431 */ |
|
432 U_STABLE void U_EXPORT2 |
|
433 udatpg_setDateTimeFormat(const UDateTimePatternGenerator *dtpg, |
|
434 const UChar *dtFormat, int32_t length); |
|
435 |
|
436 /** |
|
437 * Getter corresponding to setDateTimeFormat. |
|
438 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
439 * @param pLength A pointer that will receive the length of the format |
|
440 * @return dateTimeFormat. |
|
441 * @stable ICU 3.8 |
|
442 */ |
|
443 U_STABLE const UChar * U_EXPORT2 |
|
444 udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg, |
|
445 int32_t *pLength); |
|
446 |
|
447 /** |
|
448 * The decimal value is used in formatting fractions of seconds. If the |
|
449 * skeleton contains fractional seconds, then this is used with the |
|
450 * fractional seconds. For example, suppose that the input pattern is |
|
451 * "hhmmssSSSS", and the best matching pattern internally is "H:mm:ss", and |
|
452 * the decimal string is ",". Then the resulting pattern is modified to be |
|
453 * "H:mm:ss,SSSS" |
|
454 * |
|
455 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
456 * @param decimal |
|
457 * @param length the length of decimal. |
|
458 * @stable ICU 3.8 |
|
459 */ |
|
460 U_STABLE void U_EXPORT2 |
|
461 udatpg_setDecimal(UDateTimePatternGenerator *dtpg, |
|
462 const UChar *decimal, int32_t length); |
|
463 |
|
464 /** |
|
465 * Getter corresponding to setDecimal. |
|
466 * |
|
467 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
468 * @param pLength A pointer that will receive the length of the decimal string. |
|
469 * @return corresponding to the decimal point. |
|
470 * @stable ICU 3.8 |
|
471 */ |
|
472 U_STABLE const UChar * U_EXPORT2 |
|
473 udatpg_getDecimal(const UDateTimePatternGenerator *dtpg, |
|
474 int32_t *pLength); |
|
475 |
|
476 /** |
|
477 * Adjusts the field types (width and subtype) of a pattern to match what is |
|
478 * in a skeleton. That is, if you supply a pattern like "d-M H:m", and a |
|
479 * skeleton of "MMMMddhhmm", then the input pattern is adjusted to be |
|
480 * "dd-MMMM hh:mm". This is used internally to get the best match for the |
|
481 * input skeleton, but can also be used externally. |
|
482 * |
|
483 * Note that this function uses a non-const UDateTimePatternGenerator: |
|
484 * It uses a stateful pattern parser which is set up for each generator object, |
|
485 * rather than creating one for each function call. |
|
486 * Consecutive calls to this function do not affect each other, |
|
487 * but this function cannot be used concurrently on a single generator object. |
|
488 * |
|
489 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
490 * @param pattern Input pattern |
|
491 * @param patternLength the length of input pattern. |
|
492 * @param skeleton |
|
493 * @param skeletonLength the length of input skeleton. |
|
494 * @param dest pattern adjusted to match the skeleton fields widths and subtypes. |
|
495 * @param destCapacity the capacity of dest. |
|
496 * @param pErrorCode a pointer to the UErrorCode which must not indicate a |
|
497 * failure before the function call. |
|
498 * @return the length of dest. |
|
499 * @stable ICU 3.8 |
|
500 */ |
|
501 U_STABLE int32_t U_EXPORT2 |
|
502 udatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg, |
|
503 const UChar *pattern, int32_t patternLength, |
|
504 const UChar *skeleton, int32_t skeletonLength, |
|
505 UChar *dest, int32_t destCapacity, |
|
506 UErrorCode *pErrorCode); |
|
507 |
|
508 /** |
|
509 * Adjusts the field types (width and subtype) of a pattern to match what is |
|
510 * in a skeleton. That is, if you supply a pattern like "d-M H:m", and a |
|
511 * skeleton of "MMMMddhhmm", then the input pattern is adjusted to be |
|
512 * "dd-MMMM hh:mm". This is used internally to get the best match for the |
|
513 * input skeleton, but can also be used externally. |
|
514 * |
|
515 * Note that this function uses a non-const UDateTimePatternGenerator: |
|
516 * It uses a stateful pattern parser which is set up for each generator object, |
|
517 * rather than creating one for each function call. |
|
518 * Consecutive calls to this function do not affect each other, |
|
519 * but this function cannot be used concurrently on a single generator object. |
|
520 * |
|
521 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
522 * @param pattern Input pattern |
|
523 * @param patternLength the length of input pattern. |
|
524 * @param skeleton |
|
525 * @param skeletonLength the length of input skeleton. |
|
526 * @param options |
|
527 * Options controlling whether the length of specified fields in the |
|
528 * pattern are adjusted to match those in the skeleton (when this |
|
529 * would not happen otherwise). For default behavior, use |
|
530 * UDATPG_MATCH_NO_OPTIONS. |
|
531 * @param dest pattern adjusted to match the skeleton fields widths and subtypes. |
|
532 * @param destCapacity the capacity of dest. |
|
533 * @param pErrorCode a pointer to the UErrorCode which must not indicate a |
|
534 * failure before the function call. |
|
535 * @return the length of dest. |
|
536 * @stable ICU 4.4 |
|
537 */ |
|
538 U_STABLE int32_t U_EXPORT2 |
|
539 udatpg_replaceFieldTypesWithOptions(UDateTimePatternGenerator *dtpg, |
|
540 const UChar *pattern, int32_t patternLength, |
|
541 const UChar *skeleton, int32_t skeletonLength, |
|
542 UDateTimePatternMatchOptions options, |
|
543 UChar *dest, int32_t destCapacity, |
|
544 UErrorCode *pErrorCode); |
|
545 |
|
546 /** |
|
547 * Return a UEnumeration list of all the skeletons in canonical form. |
|
548 * Call udatpg_getPatternForSkeleton() to get the corresponding pattern. |
|
549 * |
|
550 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
551 * @param pErrorCode a pointer to the UErrorCode which must not indicate a |
|
552 * failure before the function call |
|
553 * @return a UEnumeration list of all the skeletons |
|
554 * The caller must close the object. |
|
555 * @stable ICU 3.8 |
|
556 */ |
|
557 U_STABLE UEnumeration * U_EXPORT2 |
|
558 udatpg_openSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode); |
|
559 |
|
560 /** |
|
561 * Return a UEnumeration list of all the base skeletons in canonical form. |
|
562 * |
|
563 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
564 * @param pErrorCode a pointer to the UErrorCode which must not indicate a |
|
565 * failure before the function call. |
|
566 * @return a UEnumeration list of all the base skeletons |
|
567 * The caller must close the object. |
|
568 * @stable ICU 3.8 |
|
569 */ |
|
570 U_STABLE UEnumeration * U_EXPORT2 |
|
571 udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode); |
|
572 |
|
573 /** |
|
574 * Get the pattern corresponding to a given skeleton. |
|
575 * |
|
576 * @param dtpg a pointer to UDateTimePatternGenerator. |
|
577 * @param skeleton |
|
578 * @param skeletonLength pointer to the length of skeleton. |
|
579 * @param pLength pointer to the length of return pattern. |
|
580 * @return pattern corresponding to a given skeleton. |
|
581 * @stable ICU 3.8 |
|
582 */ |
|
583 U_STABLE const UChar * U_EXPORT2 |
|
584 udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg, |
|
585 const UChar *skeleton, int32_t skeletonLength, |
|
586 int32_t *pLength); |
|
587 |
|
588 #endif |