00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef NUMSYS
00019 #define NUMSYS
00020
00021 #include "unicode/utypes.h"
00022
00023 #if U_SHOW_CPLUSPLUS_API
00024
00030 #if !UCONFIG_NO_FORMATTING
00031
00032 #include "unicode/format.h"
00033 #include "unicode/uobject.h"
00034
00035 U_NAMESPACE_BEGIN
00036
00037
00042 constexpr const size_t kInternalNumSysNameCapacity = 8;
00043
00060 class U_I18N_API NumberingSystem : public UObject {
00061 public:
00062
00068 NumberingSystem();
00069
00074 NumberingSystem(const NumberingSystem& other);
00075
00080 virtual ~NumberingSystem();
00081
00088 static NumberingSystem* U_EXPORT2 createInstance(const Locale & inLocale, UErrorCode& status);
00089
00094 static NumberingSystem* U_EXPORT2 createInstance(UErrorCode& status);
00095
00105 static NumberingSystem* U_EXPORT2 createInstance(int32_t radix, UBool isAlgorithmic, const UnicodeString& description, UErrorCode& status );
00106
00116 static StringEnumeration * U_EXPORT2 getAvailableNames(UErrorCode& status);
00117
00132 static NumberingSystem* U_EXPORT2 createInstanceByName(const char* name, UErrorCode& status);
00133
00134
00141 int32_t getRadix() const;
00142
00151 const char * getName() const;
00152
00163 virtual UnicodeString getDescription() const;
00164
00165
00166
00174 UBool isAlgorithmic() const;
00175
00182 static UClassID U_EXPORT2 getStaticClassID(void);
00183
00189 virtual UClassID getDynamicClassID() const;
00190
00191
00192 private:
00193 UnicodeString desc;
00194 int32_t radix;
00195 UBool algorithmic;
00196 char name[kInternalNumSysNameCapacity+1];
00197
00198 void setRadix(int32_t radix);
00199
00200 void setAlgorithmic(UBool algorithmic);
00201
00202 void setDesc(const UnicodeString &desc);
00203
00204 void setName(const char* name);
00205
00206 static UBool isValidDigitString(const UnicodeString &str);
00207
00208 UBool hasContiguousDecimalDigits() const;
00209 };
00210
00211 U_NAMESPACE_END
00212
00213 #endif
00214
00215 #endif
00216
00217 #endif // _NUMSYS
00218