164339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// Copyright (C) 2016 and later: Unicode, Inc. and others. 264339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html 3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************* 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 6c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert* Copyright (C) 2009-2015, International Business Machines 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************* 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* file name: udatpg.cpp 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* encoding: US-ASCII 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* tab size: 8 (not used) 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* indentation:4 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* created on: 2007jul30 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* created by: Markus W. Scherer 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/udatpg.h" 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/uenum.h" 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/strenum.h" 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/dtptngen.h" 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "ustrenum.h" 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_USE 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3154dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI UDateTimePatternGenerator * U_EXPORT2 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_open(const char *locale, UErrorCode *pErrorCode) { 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(locale==NULL) { 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return (UDateTimePatternGenerator *)DateTimePatternGenerator::createInstance(*pErrorCode); 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return (UDateTimePatternGenerator *)DateTimePatternGenerator::createInstance(Locale(locale), *pErrorCode); 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 4054dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI UDateTimePatternGenerator * U_EXPORT2 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_openEmpty(UErrorCode *pErrorCode) { 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return (UDateTimePatternGenerator *)DateTimePatternGenerator::createEmptyInstance(*pErrorCode); 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 4554dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI void U_EXPORT2 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_close(UDateTimePatternGenerator *dtpg) { 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete (DateTimePatternGenerator *)dtpg; 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 5054dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI UDateTimePatternGenerator * U_EXPORT2 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode) { 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(*pErrorCode)) { 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return NULL; 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return (UDateTimePatternGenerator *)(((const DateTimePatternGenerator *)dtpg)->clone()); 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 5854dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI int32_t U_EXPORT2 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_getBestPattern(UDateTimePatternGenerator *dtpg, 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *skeleton, int32_t length, 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar *bestPattern, int32_t capacity, 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *pErrorCode) { 6350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return udatpg_getBestPatternWithOptions(dtpg, skeleton, length, 6450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UDATPG_MATCH_NO_OPTIONS, 6550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho bestPattern, capacity, pErrorCode); 6650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 6750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 6854dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI int32_t U_EXPORT2 6950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoudatpg_getBestPatternWithOptions(UDateTimePatternGenerator *dtpg, 7050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const UChar *skeleton, int32_t length, 7150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UDateTimePatternMatchOptions options, 7250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UChar *bestPattern, int32_t capacity, 7350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode *pErrorCode) { 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(*pErrorCode)) { 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return 0; 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(skeleton==NULL && length!=0) { 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return 0; 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString skeletonString((UBool)(length<0), skeleton, length); 8250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString result=((DateTimePatternGenerator *)dtpg)->getBestPattern(skeletonString, options, *pErrorCode); 83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result.extract(bestPattern, capacity, *pErrorCode); 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 8654dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI int32_t U_EXPORT2 87c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubertudatpg_getSkeleton(UDateTimePatternGenerator * /* dtpg */, 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *pattern, int32_t length, 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar *skeleton, int32_t capacity, 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *pErrorCode) { 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(*pErrorCode)) { 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return 0; 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pattern==NULL && length!=0) { 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return 0; 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString patternString((UBool)(length<0), pattern, length); 99c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert UnicodeString result=DateTimePatternGenerator::staticGetSkeleton( 100c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert patternString, *pErrorCode); 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result.extract(skeleton, capacity, *pErrorCode); 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 10454dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI int32_t U_EXPORT2 105c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubertudatpg_getBaseSkeleton(UDateTimePatternGenerator * /* dtpg */, 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *pattern, int32_t length, 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar *skeleton, int32_t capacity, 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *pErrorCode) { 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(*pErrorCode)) { 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return 0; 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pattern==NULL && length!=0) { 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return 0; 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString patternString((UBool)(length<0), pattern, length); 117c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert UnicodeString result=DateTimePatternGenerator::staticGetBaseSkeleton( 118c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert patternString, *pErrorCode); 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result.extract(skeleton, capacity, *pErrorCode); 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 12254dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI UDateTimePatternConflict U_EXPORT2 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_addPattern(UDateTimePatternGenerator *dtpg, 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *pattern, int32_t patternLength, 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool override, 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar *conflictingPattern, int32_t capacity, int32_t *pLength, 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *pErrorCode) { 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(*pErrorCode)) { 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return UDATPG_NO_CONFLICT; 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pattern==NULL && patternLength!=0) { 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return UDATPG_NO_CONFLICT; 134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString patternString((UBool)(patternLength<0), pattern, patternLength); 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString conflictingPatternString; 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDateTimePatternConflict result=((DateTimePatternGenerator *)dtpg)-> 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru addPattern(patternString, override, conflictingPatternString, *pErrorCode); 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t length=conflictingPatternString.extract(conflictingPattern, capacity, *pErrorCode); 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pLength!=NULL) { 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *pLength=length; 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result; 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 14654dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI void U_EXPORT2 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_setAppendItemFormat(UDateTimePatternGenerator *dtpg, 148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDateTimePatternField field, 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *value, int32_t length) { 150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString valueString((UBool)(length<0), value, length); 151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateTimePatternGenerator *)dtpg)->setAppendItemFormat(field, valueString); 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 15454dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI const UChar * U_EXPORT2 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg, 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDateTimePatternField field, 157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t *pLength) { 158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString &result=((const DateTimePatternGenerator *)dtpg)->getAppendItemFormat(field); 159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pLength!=NULL) { 160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *pLength=result.length(); 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result.getBuffer(); 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 16554dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI void U_EXPORT2 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_setAppendItemName(UDateTimePatternGenerator *dtpg, 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDateTimePatternField field, 168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *value, int32_t length) { 169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString valueString((UBool)(length<0), value, length); 170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateTimePatternGenerator *)dtpg)->setAppendItemName(field, valueString); 171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 17354dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI const UChar * U_EXPORT2 174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg, 175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDateTimePatternField field, 176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t *pLength) { 177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString &result=((const DateTimePatternGenerator *)dtpg)->getAppendItemName(field); 178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pLength!=NULL) { 179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *pLength=result.length(); 180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result.getBuffer(); 182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 18454dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI void U_EXPORT2 185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_setDateTimeFormat(const UDateTimePatternGenerator *dtpg, 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *dtFormat, int32_t length) { 187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dtFormatString((UBool)(length<0), dtFormat, length); 188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateTimePatternGenerator *)dtpg)->setDateTimeFormat(dtFormatString); 189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 19154dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI const UChar * U_EXPORT2 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg, 193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t *pLength) { 194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString &result=((const DateTimePatternGenerator *)dtpg)->getDateTimeFormat(); 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pLength!=NULL) { 196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *pLength=result.length(); 197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result.getBuffer(); 199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 20154dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI void U_EXPORT2 202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_setDecimal(UDateTimePatternGenerator *dtpg, 203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *decimal, int32_t length) { 204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString decimalString((UBool)(length<0), decimal, length); 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateTimePatternGenerator *)dtpg)->setDecimal(decimalString); 206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 20854dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI const UChar * U_EXPORT2 209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_getDecimal(const UDateTimePatternGenerator *dtpg, 210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t *pLength) { 211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString &result=((const DateTimePatternGenerator *)dtpg)->getDecimal(); 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pLength!=NULL) { 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *pLength=result.length(); 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result.getBuffer(); 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 21854dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI int32_t U_EXPORT2 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg, 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *pattern, int32_t patternLength, 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *skeleton, int32_t skeletonLength, 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar *dest, int32_t destCapacity, 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *pErrorCode) { 22450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return udatpg_replaceFieldTypesWithOptions(dtpg, pattern, patternLength, skeleton, skeletonLength, 22550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UDATPG_MATCH_NO_OPTIONS, 22650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dest, destCapacity, pErrorCode); 22750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 22850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 22954dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI int32_t U_EXPORT2 23050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoudatpg_replaceFieldTypesWithOptions(UDateTimePatternGenerator *dtpg, 23150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const UChar *pattern, int32_t patternLength, 23250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const UChar *skeleton, int32_t skeletonLength, 23350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UDateTimePatternMatchOptions options, 23450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UChar *dest, int32_t destCapacity, 23550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode *pErrorCode) { 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(*pErrorCode)) { 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return 0; 238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if((pattern==NULL && patternLength!=0) || (skeleton==NULL && skeletonLength!=0)) { 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR; 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return 0; 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString patternString((UBool)(patternLength<0), pattern, patternLength); 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString skeletonString((UBool)(skeletonLength<0), skeleton, skeletonLength); 24550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString result=((DateTimePatternGenerator *)dtpg)->replaceFieldTypes(patternString, skeletonString, options, *pErrorCode); 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result.extract(dest, destCapacity, *pErrorCode); 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 24954dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI UEnumeration * U_EXPORT2 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_openSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode) { 251b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru return uenum_openFromStringEnumeration( 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateTimePatternGenerator *)dtpg)->getSkeletons(*pErrorCode), 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pErrorCode); 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 25654dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI UEnumeration * U_EXPORT2 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode) { 258b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru return uenum_openFromStringEnumeration( 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateTimePatternGenerator *)dtpg)->getBaseSkeletons(*pErrorCode), 260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pErrorCode); 261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 26354dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusU_CAPI const UChar * U_EXPORT2 264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg, 265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *skeleton, int32_t skeletonLength, 266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t *pLength) { 267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString skeletonString((UBool)(skeletonLength<0), skeleton, skeletonLength); 268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString &result=((const DateTimePatternGenerator *)dtpg)->getPatternForSkeleton(skeletonString); 269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pLength!=NULL) { 270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *pLength=result.length(); 271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return result.getBuffer(); 273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 276