00001 /* 00002 ******************************************************************************* 00003 * Copyright (C) 2009, International Business Machines Corporation and 00004 * others. All Rights Reserved. 00005 ******************************************************************************* 00006 * 00007 * 00008 * File NUMSYS.H 00009 * 00010 * Modification History:* 00011 * Date Name Description 00012 * 00013 ******************************************************************************** 00014 */ 00015 00016 #ifndef NUMSYS 00017 #define NUMSYS 00018 00019 #include "unicode/utypes.h" 00020 00026 #if !UCONFIG_NO_FORMATTING 00027 00028 00029 #include "unicode/format.h" 00030 #include "unicode/uobject.h" 00031 00032 U_NAMESPACE_BEGIN 00033 00049 class U_I18N_API NumberingSystem : public UObject { 00050 public: 00051 00057 NumberingSystem(); 00058 00063 NumberingSystem(const NumberingSystem& other); 00064 00069 virtual ~NumberingSystem(); 00070 00077 static NumberingSystem* U_EXPORT2 createInstance(const Locale & inLocale, UErrorCode& status); 00078 00083 static NumberingSystem* U_EXPORT2 createInstance(UErrorCode& status); 00084 00094 static NumberingSystem* U_EXPORT2 createInstance(int32_t radix, UBool isAlgorithmic, const UnicodeString& description, UErrorCode& status ); 00095 00101 static StringEnumeration * U_EXPORT2 getAvailableNames(UErrorCode& status); 00102 00109 static NumberingSystem* U_EXPORT2 createInstanceByName(const char* name, UErrorCode& status); 00110 00111 00116 int32_t getRadix(); 00117 00124 virtual UnicodeString getDescription(); 00125 00126 00127 00135 UBool isAlgorithmic() const; 00136 00143 static UClassID U_EXPORT2 getStaticClassID(void); 00144 00150 virtual UClassID getDynamicClassID() const; 00151 00152 00153 private: 00154 UnicodeString desc; 00155 int32_t radix; 00156 UBool algorithmic; 00157 00158 void setRadix(int32_t radix); 00159 00160 void setAlgorithmic(UBool algorithmic); 00161 00162 void setDesc(UnicodeString desc); 00163 00164 static UBool isValidDigitString(const UnicodeString &str); 00165 00166 UBool hasContiguousDecimalDigits() const; 00167 }; 00168 00169 U_NAMESPACE_END 00170 00171 #endif /* #if !UCONFIG_NO_FORMATTING */ 00172 00173 #endif // _NUMSYS 00174 //eof