summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2012-05-09 16:44:36 +0300
committerQt by Nokia <qt-info@nokia.com>2012-05-10 11:34:25 +0200
commit8c0048a377568b646b3b87be0b02322fce68b780 (patch)
tree575e79f7191060be29ba17989bc9676b272e3370 /util
parent2d23374a6f88bac2f5f2d7f0528e9e554b4a4cbb (diff)
add some useful methods to QUnicodeTables::
in order to reduce code duplication and prepare the ground for upcoming changes Change-Id: I980244149f65384c9484bbec4682de8b7b848b08 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'util')
-rw-r--r--util/unicode/main.cpp43
1 files changed, 42 insertions, 1 deletions
diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp
index b9245ba387..42360f0628 100644
--- a/util/unicode/main.cpp
+++ b/util/unicode/main.cpp
@@ -397,6 +397,18 @@ static const char *property_string =
" Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2);\n";
static const char *methods =
+ " Q_CORE_EXPORT GraphemeBreak QT_FASTCALL graphemeBreakClass(uint ucs4);\n"
+ " inline int graphemeBreakClass(QChar ch)\n"
+ " { return graphemeBreakClass(ch.unicode()); }\n"
+ "\n"
+ " Q_CORE_EXPORT WordBreak QT_FASTCALL wordBreakClass(uint ucs4);\n"
+ " inline int wordBreakClass(QChar ch)\n"
+ " { return wordBreakClass(ch.unicode()); }\n"
+ "\n"
+ " Q_CORE_EXPORT SentenceBreak QT_FASTCALL sentenceBreakClass(uint ucs4);\n"
+ " inline int sentenceBreakClass(QChar ch)\n"
+ " { return sentenceBreakClass(ch.unicode()); }\n"
+ "\n"
" Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4);\n"
" inline int lineBreakClass(QChar ch)\n"
" { return lineBreakClass(ch.unicode()); }\n"
@@ -405,6 +417,18 @@ static const char *methods =
" inline int script(QChar ch)\n"
" { return script(ch.unicode()); }\n\n";
+static const char *generated_methods =
+ " inline bool isNonCharacter(uint ucs4)\n"
+ " {\n"
+ " // Noncharacter_Code_Point:\n"
+ " // Unicode has a couple of \"non-characters\" that one can use internally,\n"
+ " // but are not allowed to be used for text interchange.\n"
+ " // Those are the last two entries each Unicode Plane (U+FFFE..U+FFFF,\n"
+ " // U+1FFFE..U+1FFFF, etc.) as well as the entries in range U+FDD0..U+FDEF\n"
+ "\n"
+ " return ucs4 >= 0xfdd0 && (ucs4 <= 0xfdef || (ucs4 & 0xfffe) == 0xfffe);\n"
+ " }\n\n";
+
static const int SizeOfPropertiesStruct = 20;
struct PropertyFlags {
@@ -2275,7 +2299,22 @@ static QByteArray createPropertyInfo()
" return qGetProp(ucs2);\n"
"}\n\n";
- out += "Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4)\n"
+ out += "Q_CORE_EXPORT GraphemeBreak QT_FASTCALL graphemeBreakClass(uint ucs4)\n"
+ "{\n"
+ " return (GraphemeBreak)qGetProp(ucs4)->graphemeBreak;\n"
+ "}\n"
+ "\n"
+ "Q_CORE_EXPORT WordBreak QT_FASTCALL wordBreakClass(uint ucs4)\n"
+ "{\n"
+ " return (WordBreak)qGetProp(ucs4)->wordBreak;\n"
+ "}\n"
+ "\n"
+ "Q_CORE_EXPORT SentenceBreak QT_FASTCALL sentenceBreakClass(uint ucs4)\n"
+ "{\n"
+ " return (SentenceBreak)qGetProp(ucs4)->sentenceBreak;\n"
+ "}\n"
+ "\n"
+ "Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4)\n"
"{\n"
" return (LineBreakClass)qGetProp(ucs4)->line_break_class;\n"
"}\n\n";
@@ -2868,6 +2907,8 @@ int main(int, char **)
f.write(line_break_class_string);
f.write("\n");
f.write(methods);
+ f.write("\n");
+ f.write(generated_methods);
f.write("} // namespace QUnicodeTables\n\n"
"QT_END_NAMESPACE\n\n"
"#endif // QUNICODETABLES_P_H\n");