Index: icu46/source/i18n/unicode/numsys.h |
=================================================================== |
--- icu46/source/i18n/unicode/numsys.h (revision 0) |
+++ icu46/source/i18n/unicode/numsys.h (revision 0) |
@@ -0,0 +1,191 @@ |
+/* |
+******************************************************************************* |
+* Copyright (C) 2010, International Business Machines Corporation and |
+* others. All Rights Reserved. |
+******************************************************************************* |
+* |
+* |
+* File NUMSYS.H |
+* |
+* Modification History:* |
+* Date Name Description |
+* |
+******************************************************************************** |
+*/ |
+ |
+#ifndef NUMSYS |
+#define NUMSYS |
+ |
+/** |
+ * \def NUMSYS_NAME_CAPACITY |
+ * Size of a numbering system name. |
+ * @internal |
+ */ |
+#define NUMSYS_NAME_CAPACITY 8 |
+ |
+#include "unicode/utypes.h" |
+ |
+/** |
+ * \file |
+ * \brief C++ API: NumberingSystem object |
+ */ |
+ |
+#if !UCONFIG_NO_FORMATTING |
+ |
+ |
+#include "unicode/format.h" |
+#include "unicode/uobject.h" |
+ |
+U_NAMESPACE_BEGIN |
+ |
+/** |
+ * Defines numbering systems. A numbering system describes the scheme by which |
+ * numbers are to be presented to the end user. In its simplest form, a numbering |
+ * system describes the set of digit characters that are to be used to display |
+ * numbers, such as Western digits, Thai digits, Arabic-Indic digits, etc. |
+ * More complicated numbering systems are algorithmic in nature, and require use |
+ * of an RBNF formatter ( rule based number formatter ), in order to calculate |
+ * the characters to be displayed for a given number. Examples of algorithmic |
+ * numbering systems include Roman numerals, Chinese numerals, and Hebrew numerals. |
+ * Formatting rules for many commonly used numbering systems are included in |
+ * the ICU package, based on the numbering system rules defined in CLDR. |
+ * Alternate numbering systems can be specified to a locale by using the |
+ * numbers locale keyword. |
+ */ |
+ |
+class U_I18N_API NumberingSystem : public UObject { |
+public: |
+ |
+ /** |
+ * Default Constructor. |
+ * |
+ * @stable ICU 4.2 |
+ */ |
+ NumberingSystem(); |
+ |
+ /** |
+ * Copy constructor. |
+ * @stable ICU 4.2 |
+ */ |
+ NumberingSystem(const NumberingSystem& other); |
+ |
+ /** |
+ * Destructor. |
+ * @stable ICU 4.2 |
+ */ |
+ virtual ~NumberingSystem(); |
+ |
+ /** |
+ * Create the default numbering system associated with the specified locale. |
+ * @param inLocale The given locale. |
+ * @param status ICU status |
+ * @stable ICU 4.2 |
+ */ |
+ static NumberingSystem* U_EXPORT2 createInstance(const Locale & inLocale, UErrorCode& status); |
+ |
+ /** |
+ * Create the default numbering system associated with the default locale. |
+ * @stable ICU 4.2 |
+ */ |
+ static NumberingSystem* U_EXPORT2 createInstance(UErrorCode& status); |
+ |
+ /** |
+ * Create a numbering system using the specified radix, type, and description. |
+ * @param radix The radix (base) for this numbering system. |
+ * @param isAlgorithmic TRUE if the numbering system is algorithmic rather than numeric. |
+ * @param description The string representing the set of digits used in a numeric system, or the name of the RBNF |
+ * ruleset to be used in an algorithmic system. |
+ * @param status ICU status |
+ * @stable ICU 4.2 |
+ */ |
+ static NumberingSystem* U_EXPORT2 createInstance(int32_t radix, UBool isAlgorithmic, const UnicodeString& description, UErrorCode& status ); |
+ |
+ /** |
+ * Return a StringEnumeration over all the names of numbering systems known to ICU. |
+ * @stable ICU 4.2 |
+ */ |
+ |
+ static StringEnumeration * U_EXPORT2 getAvailableNames(UErrorCode& status); |
+ |
+ /** |
+ * Create a numbering system from one of the predefined numbering systems known to ICU. |
+ * @param name The name of the numbering system. |
+ * @param status ICU status |
+ * @stable ICU 4.2 |
+ */ |
+ static NumberingSystem* U_EXPORT2 createInstanceByName(const char* name, UErrorCode& status); |
+ |
+ |
+ /** |
+ * Returns the radix of this numbering system. |
+ * @stable ICU 4.2 |
+ */ |
+ int32_t getRadix(); |
+ |
+ /** |
+ * Returns the name of this numbering system if it was created using one of the predefined names |
+ * known to ICU. Otherwise, returns NULL. |
+ * @draft ICU 4.6 |
+ */ |
+ const char * getName(); |
+ |
+ /** |
+ * Returns the description string of this numbering system, which is either |
+ * the string of digits in the case of simple systems, or the ruleset name |
+ * in the case of algorithmic systems. |
+ * @stable ICU 4.2 |
+ */ |
+ virtual UnicodeString getDescription(); |
+ |
+ |
+ |
+ /** |
+ * Returns TRUE if the given numbering system is algorithmic |
+ * |
+ * @return TRUE if the numbering system is algorithmic. |
+ * Otherwise, return FALSE. |
+ * @stable ICU 4.2 |
+ */ |
+ UBool isAlgorithmic() const; |
+ |
+ /** |
+ * ICU "poor man's RTTI", returns a UClassID for this class. |
+ * |
+ * @stable ICU 4.2 |
+ * |
+ */ |
+ static UClassID U_EXPORT2 getStaticClassID(void); |
+ |
+ /** |
+ * ICU "poor man's RTTI", returns a UClassID for the actual class. |
+ * |
+ * @stable ICU 4.2 |
+ */ |
+ virtual UClassID getDynamicClassID() const; |
+ |
+ |
+private: |
+ UnicodeString desc; |
+ int32_t radix; |
+ UBool algorithmic; |
+ char name[NUMSYS_NAME_CAPACITY+1]; |
+ |
+ void setRadix(int32_t radix); |
+ |
+ void setAlgorithmic(UBool algorithmic); |
+ |
+ void setDesc(UnicodeString desc); |
+ |
+ void setName(const char* name); |
+ |
+ static UBool isValidDigitString(const UnicodeString &str); |
+ |
+ UBool hasContiguousDecimalDigits() const; |
+}; |
+ |
+U_NAMESPACE_END |
+ |
+#endif /* #if !UCONFIG_NO_FORMATTING */ |
+ |
+#endif // _NUMSYS |
+//eof |
Property changes on: icu46/source/i18n/unicode/numsys.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |