ICU 57.1  57.1
numsys.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************
3 * Copyright (C) 2010-2014, International Business Machines Corporation and
4 * others. All Rights Reserved.
5 *******************************************************************************
6 *
7 *
8 * File NUMSYS.H
9 *
10 * Modification History:*
11 * Date Name Description
12 *
13 ********************************************************************************
14 */
15 
16 #ifndef NUMSYS
17 #define NUMSYS
18 
19 #include "unicode/utypes.h"
20 
26 #define NUMSYS_NAME_CAPACITY 8
27 
28 
34 #if !UCONFIG_NO_FORMATTING
35 
36 
37 #include "unicode/format.h"
38 #include "unicode/uobject.h"
39 
41 
59 public:
60 
67 
73 
78  virtual ~NumberingSystem();
79 
86  static NumberingSystem* U_EXPORT2 createInstance(const Locale & inLocale, UErrorCode& status);
87 
92  static NumberingSystem* U_EXPORT2 createInstance(UErrorCode& status);
93 
103  static NumberingSystem* U_EXPORT2 createInstance(int32_t radix, UBool isAlgorithmic, const UnicodeString& description, UErrorCode& status );
104 
110  static StringEnumeration * U_EXPORT2 getAvailableNames(UErrorCode& status);
111 
124  static NumberingSystem* U_EXPORT2 createInstanceByName(const char* name, UErrorCode& status);
125 
126 
133  int32_t getRadix() const;
134 
143  const char * getName() const;
144 
155  virtual UnicodeString getDescription() const;
156 
157 
158 
167 
174  static UClassID U_EXPORT2 getStaticClassID(void);
175 
181  virtual UClassID getDynamicClassID() const;
182 
183 
184 private:
185  UnicodeString desc;
186  int32_t radix;
187  UBool algorithmic;
188  char name[NUMSYS_NAME_CAPACITY+1];
189 
190  void setRadix(int32_t radix);
191 
192  void setAlgorithmic(UBool algorithmic);
193 
194  void setDesc(UnicodeString desc);
195 
196  void setName(const char* name);
197 
198  static UBool isValidDigitString(const UnicodeString &str);
199 
200  UBool hasContiguousDecimalDigits() const;
201 };
202 
204 
205 #endif /* #if !UCONFIG_NO_FORMATTING */
206 
207 #endif // _NUMSYS
208 //eof
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:185
Defines numbering systems.
Definition: numsys.h:58
static NumberingSystem * createInstanceByName(const char *name, UErrorCode &status)
Create a numbering system from one of the predefined numbering systems specified by CLDR and known to...
virtual UnicodeString getDescription() const
Returns the description string of this numbering system.
NumberingSystem()
Default Constructor.
static StringEnumeration * getAvailableNames(UErrorCode &status)
Return a StringEnumeration over all the names of numbering systems known to ICU.
virtual UClassID getDynamicClassID() const
ICU "poor man's RTTI", returns a UClassID for the actual class.
NumberingSystem(const NumberingSystem &other)
Copy constructor.
int32_t getRadix() const
Returns the radix of this numbering system.
const char * getName() const
Returns the name of this numbering system if it was created using one of the predefined names known t...
static NumberingSystem * createInstance(int32_t radix, UBool isAlgorithmic, const UnicodeString &description, UErrorCode &status)
Create a numbering system using the specified radix, type, and description.
static NumberingSystem * createInstance(const Locale &inLocale, UErrorCode &status)
Create the default numbering system associated with the specified locale.
virtual ~NumberingSystem()
Destructor.
static NumberingSystem * createInstance(UErrorCode &status)
Create the default numbering system associated with the default locale.
static UClassID getStaticClassID(void)
ICU "poor man's RTTI", returns a UClassID for this class.
UBool isAlgorithmic() const
Returns TRUE if the given numbering system is algorithmic.
Base class for 'pure' C++ implementations of uenum api.
Definition: strenum.h:55
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:221
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:294
C++ API: Base class for all formats.
#define NUMSYS_NAME_CAPACITY
Size of a numbering system name.
Definition: numsys.h:26
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234
C++ API: Common ICU base class UObject.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:91
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers,...
Definition: utypes.h:476
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition: utypes.h:358
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129