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