Added default implementation of Unicode class
Working for the ASCII set Former-commit-id: 70b1fdbb94ba91861494f64bf169c89bbfecc9ce
This commit is contained in:
parent
92df395a0e
commit
e6090c80a8
|
|
@ -18,34 +18,348 @@ struct Character
|
||||||
|
|
||||||
#include <Nazara/Core/UnicodeData.hpp>
|
#include <Nazara/Core/UnicodeData.hpp>
|
||||||
|
|
||||||
#else // Implémentation bidon
|
#else // Implémentation supportant la table ASCII
|
||||||
|
|
||||||
NzUnicode::Category NzUnicode::GetCategory(char32_t character)
|
NzUnicode::Category NzUnicode::GetCategory(char32_t character)
|
||||||
{
|
{
|
||||||
NazaraUnused(character);
|
switch (character)
|
||||||
|
{
|
||||||
|
case '\x00':
|
||||||
|
case '\x01':
|
||||||
|
case '\x02':
|
||||||
|
case '\x03':
|
||||||
|
case '\x04':
|
||||||
|
case '\x05':
|
||||||
|
case '\x06':
|
||||||
|
case '\x07':
|
||||||
|
case '\x08':
|
||||||
|
case '\x09':
|
||||||
|
case '\x0A':
|
||||||
|
case '\x0B':
|
||||||
|
case '\x0C':
|
||||||
|
case '\x0D':
|
||||||
|
case '\x0E':
|
||||||
|
case '\x0F':
|
||||||
|
case '\x10':
|
||||||
|
case '\x11':
|
||||||
|
case '\x12':
|
||||||
|
case '\x13':
|
||||||
|
case '\x14':
|
||||||
|
case '\x15':
|
||||||
|
case '\x16':
|
||||||
|
case '\x17':
|
||||||
|
case '\x18':
|
||||||
|
case '\x19':
|
||||||
|
case '\x1A':
|
||||||
|
case '\x1B':
|
||||||
|
case '\x1C':
|
||||||
|
case '\x1D':
|
||||||
|
case '\x1E':
|
||||||
|
case '\x1F':
|
||||||
|
case '\x7F':
|
||||||
|
return Category_Other_Control;
|
||||||
|
|
||||||
|
case ' ':
|
||||||
|
return Category_Separator_Space;
|
||||||
|
|
||||||
|
case '!':
|
||||||
|
case '"':
|
||||||
|
case '#':
|
||||||
|
case '$':
|
||||||
|
case '%':
|
||||||
|
case '&':
|
||||||
|
case '\'':
|
||||||
|
case '*':
|
||||||
|
case ',':
|
||||||
|
case '.':
|
||||||
|
case '/':
|
||||||
|
case ':':
|
||||||
|
case ';':
|
||||||
|
case '?':
|
||||||
|
case '@':
|
||||||
|
case '\\':
|
||||||
|
return Category_Punctuation_Other;
|
||||||
|
|
||||||
|
case '(':
|
||||||
|
case '[':
|
||||||
|
case '{':
|
||||||
|
return Category_Punctuation_Open;
|
||||||
|
|
||||||
|
case ')':
|
||||||
|
case '}':
|
||||||
|
case ']':
|
||||||
|
return Category_Punctuation_Close;
|
||||||
|
|
||||||
|
case '+':
|
||||||
|
case '<':
|
||||||
|
case '=':
|
||||||
|
case '>':
|
||||||
|
case '|':
|
||||||
|
case '~':
|
||||||
|
return Category_Symbol_Math;
|
||||||
|
|
||||||
|
case '-':
|
||||||
|
return Category_Punctuation_Dash;
|
||||||
|
|
||||||
|
case '0':
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
case '3':
|
||||||
|
case '4':
|
||||||
|
case '5':
|
||||||
|
case '6':
|
||||||
|
case '7':
|
||||||
|
case '8':
|
||||||
|
case '9':
|
||||||
|
return Category_Number_DecimalDigit;
|
||||||
|
|
||||||
|
case 'A':
|
||||||
|
case 'B':
|
||||||
|
case 'C':
|
||||||
|
case 'D':
|
||||||
|
case 'E':
|
||||||
|
case 'F':
|
||||||
|
case 'G':
|
||||||
|
case 'H':
|
||||||
|
case 'I':
|
||||||
|
case 'J':
|
||||||
|
case 'K':
|
||||||
|
case 'L':
|
||||||
|
case 'M':
|
||||||
|
case 'N':
|
||||||
|
case 'O':
|
||||||
|
case 'P':
|
||||||
|
case 'Q':
|
||||||
|
case 'R':
|
||||||
|
case 'S':
|
||||||
|
case 'T':
|
||||||
|
case 'U':
|
||||||
|
case 'V':
|
||||||
|
case 'W':
|
||||||
|
case 'X':
|
||||||
|
case 'Y':
|
||||||
|
case 'Z':
|
||||||
|
return Category_Number_DecimalDigit;
|
||||||
|
|
||||||
|
case '_':
|
||||||
|
return Category_Punctuation_Connector;
|
||||||
|
|
||||||
|
case '^':
|
||||||
|
case '`':
|
||||||
|
return Category_Symbol_Modifier;
|
||||||
|
|
||||||
|
case 'a':
|
||||||
|
case 'b':
|
||||||
|
case 'c':
|
||||||
|
case 'd':
|
||||||
|
case 'e':
|
||||||
|
case 'f':
|
||||||
|
case 'g':
|
||||||
|
case 'h':
|
||||||
|
case 'i':
|
||||||
|
case 'j':
|
||||||
|
case 'k':
|
||||||
|
case 'l':
|
||||||
|
case 'm':
|
||||||
|
case 'n':
|
||||||
|
case 'o':
|
||||||
|
case 'p':
|
||||||
|
case 'q':
|
||||||
|
case 'r':
|
||||||
|
case 's':
|
||||||
|
case 't':
|
||||||
|
case 'u':
|
||||||
|
case 'v':
|
||||||
|
case 'w':
|
||||||
|
case 'x':
|
||||||
|
case 'y':
|
||||||
|
case 'z':
|
||||||
|
return Category_Number_DecimalDigit;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return Category_NoCategory;
|
return Category_NoCategory;
|
||||||
}
|
}
|
||||||
|
|
||||||
NzUnicode::Direction NzUnicode::GetDirection(char32_t character)
|
NzUnicode::Direction NzUnicode::GetDirection(char32_t character)
|
||||||
{
|
{
|
||||||
NazaraUnused(character);
|
switch (character)
|
||||||
|
{
|
||||||
|
case '\x00':
|
||||||
|
case '\x01':
|
||||||
|
case '\x02':
|
||||||
|
case '\x03':
|
||||||
|
case '\x04':
|
||||||
|
case '\x05':
|
||||||
|
case '\x06':
|
||||||
|
case '\x07':
|
||||||
|
case '\x08':
|
||||||
|
case '\x0E':
|
||||||
|
case '\x0F':
|
||||||
|
case '\x10':
|
||||||
|
case '\x11':
|
||||||
|
case '\x12':
|
||||||
|
case '\x13':
|
||||||
|
case '\x14':
|
||||||
|
case '\x15':
|
||||||
|
case '\x16':
|
||||||
|
case '\x17':
|
||||||
|
case '\x18':
|
||||||
|
case '\x19':
|
||||||
|
case '\x1A':
|
||||||
|
case '\x1B':
|
||||||
|
case '\x7F':
|
||||||
|
return Direction_Boundary_Neutral;
|
||||||
|
|
||||||
|
case '\x09':
|
||||||
|
case '\x0B':
|
||||||
|
case '\x1F':
|
||||||
|
return Direction_Segment_Separator;
|
||||||
|
|
||||||
|
case '\x0A':
|
||||||
|
case '\x0D':
|
||||||
|
case '\x1C':
|
||||||
|
case '\x1D':
|
||||||
|
case '\x1E':
|
||||||
|
return Direction_Paragraph_Separator;
|
||||||
|
|
||||||
|
case '\x0C':
|
||||||
|
case ' ':
|
||||||
|
return Direction_White_Space;
|
||||||
|
|
||||||
|
case '!':
|
||||||
|
case '"':
|
||||||
|
case '&':
|
||||||
|
case '\'':
|
||||||
|
case '(':
|
||||||
|
case ')':
|
||||||
|
case '*':
|
||||||
|
case ';':
|
||||||
|
case '<':
|
||||||
|
case '=':
|
||||||
|
case '>':
|
||||||
|
case '?':
|
||||||
|
case '@':
|
||||||
|
case '[':
|
||||||
|
case '\\':
|
||||||
|
case ']':
|
||||||
|
case '^':
|
||||||
|
case '_':
|
||||||
|
case '`':
|
||||||
|
case '{':
|
||||||
|
case '|':
|
||||||
|
case '}':
|
||||||
|
case '~':
|
||||||
|
return Direction_Other_Neutral;
|
||||||
|
|
||||||
|
case '#':
|
||||||
|
case '$':
|
||||||
|
case '%':
|
||||||
|
return Direction_European_Terminator;
|
||||||
|
|
||||||
|
case '+':
|
||||||
|
case '-':
|
||||||
|
return Direction_European_Separator;
|
||||||
|
|
||||||
|
case ',':
|
||||||
|
case '.':
|
||||||
|
case '/':
|
||||||
|
case ':':
|
||||||
|
return Direction_Common_Separator;
|
||||||
|
|
||||||
|
case '0':
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
case '3':
|
||||||
|
case '4':
|
||||||
|
case '5':
|
||||||
|
case '6':
|
||||||
|
case '7':
|
||||||
|
case '8':
|
||||||
|
case '9':
|
||||||
|
return Direction_European_Number;
|
||||||
|
|
||||||
|
case 'A':
|
||||||
|
case 'B':
|
||||||
|
case 'C':
|
||||||
|
case 'D':
|
||||||
|
case 'E':
|
||||||
|
case 'F':
|
||||||
|
case 'G':
|
||||||
|
case 'H':
|
||||||
|
case 'I':
|
||||||
|
case 'J':
|
||||||
|
case 'K':
|
||||||
|
case 'L':
|
||||||
|
case 'M':
|
||||||
|
case 'N':
|
||||||
|
case 'O':
|
||||||
|
case 'P':
|
||||||
|
case 'Q':
|
||||||
|
case 'R':
|
||||||
|
case 'S':
|
||||||
|
case 'T':
|
||||||
|
case 'U':
|
||||||
|
case 'V':
|
||||||
|
case 'W':
|
||||||
|
case 'X':
|
||||||
|
case 'Y':
|
||||||
|
case 'Z':
|
||||||
|
case 'a':
|
||||||
|
case 'b':
|
||||||
|
case 'c':
|
||||||
|
case 'd':
|
||||||
|
case 'e':
|
||||||
|
case 'f':
|
||||||
|
case 'g':
|
||||||
|
case 'h':
|
||||||
|
case 'i':
|
||||||
|
case 'j':
|
||||||
|
case 'k':
|
||||||
|
case 'l':
|
||||||
|
case 'm':
|
||||||
|
case 'n':
|
||||||
|
case 'o':
|
||||||
|
case 'p':
|
||||||
|
case 'q':
|
||||||
|
case 'r':
|
||||||
|
case 's':
|
||||||
|
case 't':
|
||||||
|
case 'u':
|
||||||
|
case 'v':
|
||||||
|
case 'w':
|
||||||
|
case 'x':
|
||||||
|
case 'y':
|
||||||
|
case 'z':
|
||||||
|
return Direction_Left_To_Right;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return Direction_Boundary_Neutral;
|
return Direction_Boundary_Neutral;
|
||||||
}
|
}
|
||||||
|
|
||||||
char32_t NzUnicode::GetLowercase(char32_t character)
|
char32_t NzUnicode::GetLowercase(char32_t character)
|
||||||
{
|
{
|
||||||
|
if (character >= 'A' && character <= 'Z')
|
||||||
|
return character + ('a' - 'A');
|
||||||
|
else
|
||||||
return character;
|
return character;
|
||||||
}
|
}
|
||||||
|
|
||||||
char32_t NzUnicode::GetTitlecase(char32_t character)
|
char32_t NzUnicode::GetTitlecase(char32_t character)
|
||||||
{
|
{
|
||||||
return character;
|
return GetUppercase(character);
|
||||||
}
|
}
|
||||||
|
|
||||||
char32_t NzUnicode::GetUppercase(char32_t character)
|
char32_t NzUnicode::GetUppercase(char32_t character)
|
||||||
{
|
{
|
||||||
|
if (character >= 'a' && character <= 'z')
|
||||||
|
return character + ('A' - 'a');
|
||||||
|
else
|
||||||
return character;
|
return character;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue