From: George R. <gr...@us...> - 2006-05-16 20:12:47
|
The udat API allows you to customize the number formatter with=20 udat=5FgetNumberFormat/udat=5FsetNumberFormat. The number formatter is=20 customized with unum=5FgetSymbol/unum=5FsetSymbol. To me it sounds like this data should really be a part of udat or unum.=20 Customizing the fractional seconds decimal separator can be done with a=20 UNumberFormat. George Rhoten IBM Globalization Center of Competency/ICU San Jos=E9, CA, USA http://www.icu-project.org/ http://icu.sourceforge.net/ Deborah Goldsmith <gol...@ap...>=20 Sent by: icu...@li... 05/16/2006 12:41 PM Please respond to icu-design To icu...@li... cc Subject Re: [icu-design] API Proposal (ICU4C): Flexible Datetime udat=5F* does not contain any way to override or use the localized=20 decimal character that I can see. unum=5F* is irrelevant because the=20 second field and fractional second field are separate fields in=20 udat=5F*, and unum=5F* is not used. If you want to put the seconds field=20 and fractional seconds field together with a decimal separator in=20 between, you must put the decimal separator in the date pattern as a=20 literal. It will not be fetched out of the locale. Deborah On May 16, 2006, at 12:22 PM, George Rhoten wrote: > I wasn't exactly sure about how the other functions would exactly=20 > work. So > I only commented on the getDecimal and setDecimal. > > I believe Mark was misunderstanding the point I was trying to=20 > make. The > udat=5F* or unum=5F* API already contains an API to override this=20 > data. The > decimal data is just a small part of the data available. What is so > special about this API that it requires its own non-generic > getDecimal/setDecimal functions that isn't available from other APIs? > > George Rhoten > IBM Globalization Center of Competency/ICU San Jos=E9, CA, USA > http://www.icu-project.org/ > http://icu.sourceforge.net/ > > > > Deborah Goldsmith <gol...@ap...> > Sent by: icu...@li... > 05/16/2006 10:19 AM > Please respond to > icu-design > > > To > icu...@li... > cc > > Subject > Re: [icu-design] API Proposal (ICU4C): Flexible Datetime > > > > > > > This raises the question of whether all the setters/getters are=20 > necessary > in the C API. Do we just need the "create from locale" variant? > > Deborah > > On May 12, 2006, at 7:35 AM, Mark Davis wrote: > > Get/Set decimal would normally be set from same data in the locale. > However, having it be separate allows it to be customized=20 > separately, and > built separately (not depending on the data in a Number Format), thus > allowing for independent testing in CLDR. > > Mark > > On 5/11/06, George Rhoten <gr...@us...> wrote: > Why is there a setDecimal/getDecimal? Shouldn't this information=20 > already > be available in DateFormatSymbols or NumberFormatSymbols? > > George Rhoten > IBM Globalization Center of Competency/ICU San Jos=E9, CA, USA > http://www.icu-project.org/ > http://icu.sourceforge.net/ > > > > Deborah Goldsmith <gol...@ap... > > Sent by: icu...@li... > 05/11/2006 02:26 PM > Please respond to > icu-design > > > To > icu...@li... > cc > > Subject > [icu-design] API Proposal (ICU4C): Flexible Datetime > > > > > > > Here is the C version of the Flexible Datetime API; Mark sent the > ICU4J version to this list on April 26. > > Feedback is welcome. The descriptions are somewhat short here, and > will be fleshed out when I actually implement it. :-) If there is > something you don't understand, ask here, or refer to the ICU4J=20 > version. > > The prefix for the APIs is currently udpg=5F. It could be udat=5F > instead, but some names would need to change to avoid collisions with > existing udat=5F APIs. > > Deborah > > typedef void *UDatePatternGenerator; > > enum UDateSkeletonField { > USKEL=5FERA=5FFIELD =3D 0, USKEL=5FYEAR=5FFIELD =3D 1, USKEL=5FQUART= ER=5FFIELD =3D > 2, USKEL=5FMONTH=5FFIELD =3D 3, > USKEL=5FWEEK=5FOF=5FYEAR=5FFIELD =3D 4, USKEL=5FWEEK=5FOF=5FMONTH=5F= FIELD =3D 5, > USKEL=5FWEEKDAY=5FFIELD =3D 6, > USKEL=5FDAY=5FFIELD =3D 7, USKEL=5FDAY=5FOF=5FYEAR=5FFIELD =3D 8, > USKEL=5FDAY=5FOF=5FWEEK=5FIN=5FMONTH=5FFIELD =3D 9, > USKEL=5FDAYPERIOD=5FFIELD =3D 10, USKEL=5FHOUR=5FFIELD =3D 11, > USKEL=5FMINUTE=5FFIELD =3D 12, > USKEL=5FSECOND=5FFIELD =3D 13, USKEL=5FFRACTIONAL=5FSECOND=5FFIELD = =3D 14, > USKEL=5FZONE=5FFIELD =3D 15, > USKEL=5FTYPE=5FLIMIT =3D 16 > }; > > /** > * Open a new UDatePatternGenerator based on a locale > */ > UDatePatternGenerator * > udpg=5Fopen(const char *locale, UErrorCode *status); > > /** > * Open a new UDatePatternGenerator to be filled in with > udpg=5FaddPattern and other calls. > */ > UDatePatternGenerator * > udpg=5FopenEmpty(UErrorCode *status); > > /** > * Close an open UDatePatternGenerator > */ > void > udpg=5Fclose(UDatePatternGenerator *dpg); > > /** > * Get the best pattern for the supplied skeleton. Returns the actual > length of the > * pattern. > */ > int32=5Ft > udpg=5FgetBestPattern(UDatePatternGenerator *dpg, const UChar > *skeleton, int32=5Ft skeletonLength, UChar *result, int32=5Ft > resultLength, UErrorCode *status); > > /** > * Add a pattern to an existing UDatePatternGenerator. There may be a > conflict with an existing > * pattern that has the same skeleton. If override is true, the new > pattern will replace the old; > * in either case, the length of the conflicting pattern (if any) is > returned. If an output > * buffer is supplied, the conflicting pattern is also returned. > */ > int32=5Ft > udpg=5FaddPattern(UDatePatternGenerator *dpg, const UChar *pattern, > int32=5Ft patternLength, UBool override, UChar *conflicting, int32=5Ft > conflictingLength, UErrorCode *status); > > /** > * Get the appendItemFormat for the given field. > */ > int32=5Ft > udpg=5FgetAppendItemFormats(const UDatePatternGenerator *dpg, > UDateSkeletonField field, UChar *result, int32=5Ft resultLength, > UErrorCode *status); > > /** > * Set the appendItemFormat for the given field. > */ > void > udpg=5FsetAppendItemFormats(UDatePatternGenerator *dpg, > UDateSkeletonField field, const UChar *format, int32=5Ft formatLength, > UErrorCode *status); > > /** > * Get the appendItemName for the given field. > */ > int32=5Ft > udpg=5FgetAppendItemNames(const UDatePatternGenerator *dpg, > UDateSkeletonField field, UChar *result, int32=5Ft resultLength, > UErrorCode *status); > > /** > * Set the appendItemName for the given field. > */ > void > udpf=5FsetAppendItemNames(UDatePatternGenerator *dpg, > UDateSkeletonField field, const UChar *name, int32=5Ft nameLength, > UErrorCode *status); > > /** > * Get the format used to compose separate date and time formats when > there is not a combined > * pattern that matches the desired skeleton. > */ > int32=5Ft > udpg=5FgetDateTimeFormat(const UDatePatternGenerator *dpg, UChar > *result, int32=5Ft resultLength, UErrorCode *status); > > /** > * Set the format used to compose separate date and time formats. > */ > void > udpg=5FsetDateTimeFormat(UDatePatternGenerator *dpg, const UChar > *format, int32=5Ft formatLength, UErrorCode *status); > > /** > * Get the decimal separator used for fractional seconds. > */ > int32=5Ft > udpg=5FgetDecimal(const UDatePatternGenerator *dpg, UChar *result, > int32=5Ft resultLength, UErrorCode *status); > > /** > * Set the decimal separator used for fractional seconds. > */ > void > udpg=5FsetDecimal(UDatePatternGenerator *dpg, const UChar *decimal, > int32=5Ft decimalLength, UErrorCode *status); > > /** > * Convert a date/time pattern into the corresponding skeleton. > */ > int32=5Ft > udpg=5FgetSkeleton(const UChar *pattern, int32=5Ft patternLength, UChar > *result, int32=5Ft resultLength, UErrorCode *status); > > /** > * Return an enumeration over the redundant patterns (those that, if > removed, make no > * difference in the result returned by udpg=5FgetBestPattern). > */ > UEnumeration * > udpg=5FopenRedundants(UDatePatternGenerator *dpg, UErrorCode *status); > > /** > * Return an enumeration over all the skeletons supported by the > UDatePatternGenerator > */ > UEnumeration * > udpg=5FopenSkeletons(UDatePatternGenerator *dpg, UErrorCode *status); > > /** > * Return the pattern corresponding to a given skeleton, if any. > */ > int32=5Ft > udpg=5FgetPatternFor(const UDatePatternGenerator *dpg, const UChar > *skeleton, int32=5Ft skeletonLength, UChar *result, int32=5Ft > resultLength, UErrorCode *status); > |