1736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov/* 2736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov***************************************************************************************** 3736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov* Copyright (C) 2013, International Business Machines Corporation and others. 4736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov* All Rights Reserved. 5736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov***************************************************************************************** 6736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov*/ 7736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov 8736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov#include "unicode/utypes.h" 9736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov 10736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov#if !UCONFIG_NO_FORMATTING 11736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov 12736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov#include "unicode/unumsys.h" 13736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov#include "unicode/numsys.h" 14736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov#include "unicode/uenum.h" 15736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov 16736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav GanovU_NAMESPACE_USE 17736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov 18736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov 19736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav GanovU_CAPI UNumberingSystem* U_EXPORT2 204213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganovunumsys_open(const char *locale, UErrorCode *status) 214213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov{ 224213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov // createInstance returns immediately if status indicates error 234213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov return (UNumberingSystem*)NumberingSystem::createInstance(Locale(locale), *status); 244213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov} 254213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov 26e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov 27736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav GanovU_CAPI UNumberingSystem* U_EXPORT2 28e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganovunumsys_openByName(const char *name, UErrorCode *status) 29736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov{ 30736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov // createInstanceByName does NOT return immediately if status indicates error 31e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov if (U_FAILURE(*status)) { 32e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov return NULL; 334213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov } 34f5a07905a3e025f95472a3f8d9935263e49ad6d3Svetoslav Ganov return (UNumberingSystem*)NumberingSystem::createInstanceByName(name, *status); 35f5a07905a3e025f95472a3f8d9935263e49ad6d3Svetoslav Ganov} 36736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov 374213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov 38e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav GanovU_CAPI void U_EXPORT2 39f5a07905a3e025f95472a3f8d9935263e49ad6d3Svetoslav Ganovunumsys_close(UNumberingSystem *unumsys) 404213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov{ 41736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov delete ((NumberingSystem*)unumsys); 42736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov} 43736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov 44736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov 45736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav GanovU_CAPI UEnumeration* U_EXPORT2 46736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganovunumsys_openAvailableNames(UErrorCode *status) 47736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov{ 48736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov // getAvailableNames returns immediately if status indicates error 49e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov return uenum_openFromStringEnumeration(NumberingSystem::getAvailableNames(*status), status); 50e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov} 51e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov 52e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov 53e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav GanovU_CAPI const char * U_EXPORT2 54736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganovunumsys_getName(const UNumberingSystem *unumsys) 55e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov{ 56e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov return ((NumberingSystem*)unumsys)->getName(); 57e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov} 58e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov 59e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav Ganov 60e15ccb93add99ebb9cd7aec03a04faa37f45b39dSvetoslav GanovU_CAPI int32_t U_EXPORT2 61736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganovunumsys_getRadix(const UNumberingSystem *unumsys) 62736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov{ 63736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov return ((NumberingSystem*)unumsys)->getRadix(); 64736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov} 654213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov 664213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov 67736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav GanovU_CAPI UBool U_EXPORT2 68736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganovunumsys_isAlgorithmic(const UNumberingSystem *unumsys) 69736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov{ 704213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov return ((NumberingSystem*)unumsys)->isAlgorithmic(); 71736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov} 72736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov 73736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav GanovU_CAPI int32_t U_EXPORT2 74736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganovunumsys_getDescription(const UNumberingSystem *unumsys, UChar *result, 75736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov int32_t resultLength, UErrorCode *status) 764213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov{ 77736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov if (U_FAILURE(*status)) { 78736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov return -1; 79736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov } 8012a024ca681d877fe16b7e087356f7aff175a218Svetoslav Ganov // implement 81736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov UnicodeString descrip = ((NumberingSystem*)unumsys)->getDescription(); 82f804420d6e37748b75478406e989c69303756980Svetoslav Ganov return descrip.extract(result, resultLength, *status); 83f804420d6e37748b75478406e989c69303756980Svetoslav Ganov} 84736c2756bf3c14ae9fef7255c119057f7a2be1edSvetoslav Ganov 854213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov 864213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov#endif /* #if !UCONFIG_NO_FORMATTING */ 874213804541a8b05cd0587b138a2fd9a3b7fd9350Svetoslav Ganov