TDME2  1.9.200
Character.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <cwctype>
4 
5 #include <string>
6 
7 #include <tdme/tdme.h>
9 
10 using std::string;
11 
12 /**
13  * Character class
14  * @author Andreas Drewke
15  */
17 {
18 public:
19 
20  /**
21  * Convert character to lower case character
22  * @param character character
23  * @return lower case character
24  */
25  inline static uint32_t toLowerCase(uint32_t character) {
26  return towlower(character);
27  }
28 
29  /**
30  * Convert character to upper case character
31  * @param character character
32  * @return upper case character
33  */
34  inline static uint32_t toUpperCase(uint32_t character) {
35  return towupper(character);
36  }
37 
38  /**
39  * Returns if character is alpha numeric
40  * @return if character is alpha numeric
41  */
42  inline static bool isAlphaNumeric(uint32_t character) {
43  return iswalnum(character) != 0;
44  }
45 
46  /**
47  * Returns if character is a white space
48  * @return if character is a white space
49  */
50  inline static bool isSpace(uint32_t character) {
51  return iswspace(character) != 0;
52  }
53 
54  /**
55  * Generates a string from given character / code point
56  * @param character character
57  * @return string representation of given character
58  */
59  inline static const string toString(uint32_t character) {
60  string string;
61  appendToString(string, character);
62  return string;
63  }
64 
65  /**
66  * Appends a character / code point to given string
67  * @param string string
68  * @param character character
69  */
70  inline static void appendToString(string& string, uint32_t character) {
71  // see: http://www.zedwood.com/article/cpp-utf8-char-to-codepoint
72  if (character <= 0x7F) {
73  string+= character;
74  } else if (character <= 0x7FF) {
75  string+= (character >> 6) + 192;
76  string+= (character & 63) + 128;
77  } else if (0xd800 <= character && character <= 0xdfff) {
78  } //invalid block of utf8
79  else if (character <= 0xFFFF) {
80  string+= (character >> 12) + 224;
81  string+= ((character >> 6) & 63) + 128;
82  string+= (character & 63) + 128;
83  } else if (character <= 0x10FFFF) {
84  string+= (character >> 18) + 240;
85  string+= ((character >> 12) & 63) + 128;
86  string+= ((character >> 6) & 63) + 128;
87  string+= (character & 63) + 128;
88  }
89  }
90 
91 };
Character class.
Definition: Character.h:17
static bool isSpace(uint32_t character)
Returns if character is a white space.
Definition: Character.h:50
static const string toString(uint32_t character)
Generates a string from given character / code point.
Definition: Character.h:59
static uint32_t toLowerCase(uint32_t character)
Convert character to lower case character.
Definition: Character.h:25
static void appendToString(string &string, uint32_t character)
Appends a character / code point to given string.
Definition: Character.h:70
static uint32_t toUpperCase(uint32_t character)
Convert character to upper case character.
Definition: Character.h:34
static bool isAlphaNumeric(uint32_t character)
Returns if character is alpha numeric.
Definition: Character.h:42