Move QTextCodec support out of QtCore
* Assume UTF-8 on all Unix like systems * Export some functions to be able to compile QTextCodec once moved to Qt5Compat. Task-number: QTBUG-75665 Change-Id: I52ec47a848bc0ba72e9c7689668b1bcc5d736c29 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
parent
4455de24d4
commit
18ec53156e
1
.gitignore
vendored
1
.gitignore
vendored
@ -125,7 +125,6 @@ qt*-config.pri
|
||||
/tests/auto/qprocess/fileWriterProcess.txt
|
||||
|
||||
# Unit tests executables (other than those named tst_*)
|
||||
/tests/auto/corelib/codecs/qtextcodec/echo/echo
|
||||
/tests/auto/corelib/global/qlogging/app/app
|
||||
/tests/auto/corelib/io/qlockfile/qlockfiletesthelper/qlockfile_test_helper
|
||||
/tests/auto/corelib/io/qprocess-noapplication/qprocess-noapplication
|
||||
|
@ -86,64 +86,6 @@ function(qt_run_config_test_architecture)
|
||||
endfunction()
|
||||
|
||||
|
||||
function(qt_run_config_test_posix_iconv)
|
||||
set(source "#include <iconv.h>
|
||||
|
||||
int main(int, char **)
|
||||
{
|
||||
iconv_t x = iconv_open(\"\", \"\");
|
||||
|
||||
char *inp;
|
||||
char *outp;
|
||||
size_t inbytes, outbytes;
|
||||
iconv(x, &inp, &inbytes, &outp, &outbytes);
|
||||
|
||||
iconv_close(x);
|
||||
|
||||
return 0;
|
||||
}")
|
||||
check_cxx_source_compiles("${source}" HAVE_POSIX_ICONV)
|
||||
|
||||
if(NOT HAVE_POSIX_ICONV)
|
||||
set(_req_libraries "${CMAKE_REQUIRE_LIBRARIES}")
|
||||
set(CMAKE_REQUIRE_LIBRARIES "iconv")
|
||||
check_cxx_source_compiles("${source}" HAVE_POSIX_ICONV)
|
||||
set(CMAKE_REQUIRE_LIBRARIES "${_req_libraries}")
|
||||
if(HAVE_POSIX_ICONV)
|
||||
set(TEST_iconv_needlib 1 CACHE INTERNAL "Need to link against libiconv")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(TEST_posix_iconv "${HAVE_POSIX_ICONV}" CACHE INTERNAL "POSIX iconv")
|
||||
endfunction()
|
||||
|
||||
|
||||
function(qt_run_config_test_sun_iconv)
|
||||
set(source "#include <iconv.h>
|
||||
|
||||
int main(int, char **)
|
||||
{
|
||||
iconv_t x = iconv_open(\"\", \"\");
|
||||
|
||||
const char *inp;
|
||||
char *outp;
|
||||
size_t inbytes, outbytes;
|
||||
iconv(x, &inp, &inbytes, &outp, &outbytes);
|
||||
|
||||
iconv_close(x);
|
||||
|
||||
return 0;
|
||||
}")
|
||||
if(DARWIN)
|
||||
# as per !config.darwin in configure.json
|
||||
set(HAVE_SUN_ICONV OFF)
|
||||
else()
|
||||
check_cxx_source_compiles("${source}" HAVE_SUN_ICONV)
|
||||
endif()
|
||||
|
||||
set(TEST_sun_iconv "${HAVE_SUN_ICONV}" CACHE INTERNAL "SUN libiconv")
|
||||
endfunction()
|
||||
|
||||
function(qt_run_linker_version_script_support)
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/version_flag.map" "VERS_1 { global: sym; };
|
||||
VERS_2 { global: sym; }
|
||||
@ -172,16 +114,6 @@ VERS_1;
|
||||
endfunction()
|
||||
|
||||
function(qt_run_qtbase_config_tests)
|
||||
qt_run_config_test_posix_iconv()
|
||||
|
||||
add_library(Iconv INTERFACE)
|
||||
if(TEST_iconv_needlib)
|
||||
target_link_libraries(Iconv PUBLIC iconv)
|
||||
endif()
|
||||
|
||||
if(NOT TEST_posix_iconv)
|
||||
qt_run_config_test_sun_iconv()
|
||||
endif()
|
||||
qt_run_config_test_architecture()
|
||||
qt_run_linker_version_script_support()
|
||||
endfunction()
|
||||
|
@ -240,7 +240,6 @@ Core options:
|
||||
-glib ................ Enable Glib support [no; auto on Unix]
|
||||
-eventfd ............. Enable eventfd support
|
||||
-inotify ............. Enable inotify support
|
||||
-iconv ............... Enable iconv(3) support [posix/sun/gnu/no] (Unix only)
|
||||
-icu ................. Enable ICU support [auto]
|
||||
-pcre ................ Select used libpcre2 [system/qt/no]
|
||||
-pps ................. Enable PPS support [auto] (QNX only)
|
||||
|
@ -93,9 +93,6 @@ Cpp.ignoretokens += \
|
||||
Q_DECLARATIVE_EXPORT \
|
||||
Q_EXPLICIT \
|
||||
Q_EXPORT \
|
||||
Q_EXPORT_CODECS_CN \
|
||||
Q_EXPORT_CODECS_JP \
|
||||
Q_EXPORT_CODECS_KR \
|
||||
Q_EXPORT_PLUGIN \
|
||||
Q_EXPORT_PLUGIN2 \
|
||||
Q_GADGET \
|
||||
|
@ -1,66 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
//! [0]
|
||||
QList<QByteArray> MyCodecPlugin::names() const
|
||||
{
|
||||
return QList<QByteArray> << "IBM01140" << "hp15-tw";
|
||||
}
|
||||
|
||||
QTextCodec *MyCodecPlugin::createForName(const QByteArray &name)
|
||||
{
|
||||
if (name == "IBM01140") {
|
||||
return new Ibm01140Codec;
|
||||
} else if (name == "hp15-tw") {
|
||||
return new Hp15TwCodec;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
//! [0]
|
@ -1,6 +1,5 @@
|
||||
# Generated from tools.pro.
|
||||
|
||||
add_subdirectory(codecs)
|
||||
add_subdirectory(completer)
|
||||
add_subdirectory(customcompleter)
|
||||
add_subdirectory(regularexpression)
|
||||
|
@ -1,6 +1,5 @@
|
||||
# Generated from tools.pro.
|
||||
|
||||
add_subdirectory(codecs)
|
||||
add_subdirectory(completer)
|
||||
add_subdirectory(customcompleter)
|
||||
if(QT_FEATURE_translation) # special case
|
||||
|
@ -1,47 +0,0 @@
|
||||
# Generated from codecs.pro.
|
||||
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
project(codecs LANGUAGES CXX)
|
||||
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
|
||||
set(INSTALL_EXAMPLEDIR "examples/widgets/tools/codecs")
|
||||
|
||||
find_package(Qt6 COMPONENTS Core)
|
||||
find_package(Qt6 COMPONENTS Gui)
|
||||
find_package(Qt6 COMPONENTS Widgets)
|
||||
|
||||
add_qt_gui_executable(codecs
|
||||
encodingdialog.cpp encodingdialog.h
|
||||
main.cpp
|
||||
mainwindow.cpp mainwindow.h
|
||||
previewform.cpp previewform.h
|
||||
)
|
||||
target_link_libraries(codecs PUBLIC
|
||||
Qt::Core
|
||||
Qt::Gui
|
||||
Qt::Widgets
|
||||
)
|
||||
|
||||
|
||||
# Resources:
|
||||
set(codecs_resource_files
|
||||
"images/editcopy.png"
|
||||
)
|
||||
|
||||
qt6_add_resources(codecs "codecs"
|
||||
PREFIX
|
||||
"/"
|
||||
FILES
|
||||
${codecs_resource_files}
|
||||
)
|
||||
|
||||
install(TARGETS codecs
|
||||
RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
|
||||
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
|
||||
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
|
||||
)
|
@ -1,19 +0,0 @@
|
||||
QT += widgets
|
||||
requires(qtConfig(filedialog))
|
||||
|
||||
HEADERS += mainwindow.h \
|
||||
previewform.h \
|
||||
encodingdialog.h
|
||||
|
||||
SOURCES += main.cpp \
|
||||
mainwindow.cpp \
|
||||
previewform.cpp \
|
||||
encodingdialog.cpp
|
||||
|
||||
RESOURCES += codecs.qrc
|
||||
|
||||
EXAMPLE_FILES = encodedfiles
|
||||
|
||||
# install
|
||||
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/codecs
|
||||
INSTALLS += target
|
@ -1,5 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/" >
|
||||
<file>images/editcopy.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
Binary file not shown.
Before Width: | Height: | Size: 20 KiB |
@ -1,38 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:FDL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Free Documentation License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Free
|
||||
** Documentation License version 1.3 as published by the Free Software
|
||||
** Foundation and appearing in the file included in the packaging of
|
||||
** this file. Please review the following information to ensure
|
||||
** the GNU Free Documentation License version 1.3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
/*!
|
||||
\example tools/codecs
|
||||
\title Text Codecs Example
|
||||
\brief How to import and export text using text codecs.
|
||||
|
||||
The Text Codecs example demonstrates the principles behind importing and exporting text
|
||||
using codecs to ensure that characters are encoded properly, avoiding loss of data
|
||||
and retaining the correct symbols used in various scripts.
|
||||
|
||||
\image codecs-example.png
|
||||
*/
|
@ -1,6 +0,0 @@
|
||||
Paulo Coelho: O Gênio e as Rosas
|
||||
Anna Hallström, Urban Östberg: Svår svenska
|
||||
Darrell Huff: How to Lie with Statistics
|
||||
Franz Kafka: Das Schloß
|
||||
Walter Moers: Die 13½ Leben des Käpt'n Blaubär
|
||||
Dag Solstad: Forsøk på å beskrive det ugjennomtrengelige
|
@ -1,8 +0,0 @@
|
||||
Paulo Coelho: O Gênio e as Rosas
|
||||
Jean-Pierre Coffe: À table en famille avec 15 ¤ par jour
|
||||
Anna Hallström, Urban Östberg: Svår svenska
|
||||
Darrell Huff: How to Lie with Statistics
|
||||
Franz Kafka: Das Schloß
|
||||
Helena Lehecková: T¨ekkiä suomalaisille
|
||||
Arthur Rimbaud: ¼uvres complètes
|
||||
Dag Solstad: Forsøk på å beskrive det ugjennomtrengelige
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,6 +0,0 @@
|
||||
Språk: Norsk
|
||||
Γλώσσα: Ελληνικά
|
||||
Язык: Русский
|
||||
언어 : 한국어
|
||||
言語: 日本語
|
||||
Langage : Français
|
@ -1,333 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2018 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "encodingdialog.h"
|
||||
|
||||
#if QT_CONFIG(action)
|
||||
# include <QAction>
|
||||
#endif
|
||||
#include <QDialogButtonBox>
|
||||
#include <QFormLayout>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
#if QT_CONFIG(clipboard)
|
||||
# include <QGuiApplication>
|
||||
# include <QClipboard>
|
||||
#endif
|
||||
|
||||
#include <QTextStream>
|
||||
|
||||
// Helpers for formatting character sequences
|
||||
|
||||
// Format a special character like '\x0a'
|
||||
template <class Int>
|
||||
static void formatEscapedNumber(QTextStream &str, Int value, int base,
|
||||
int width = 0,char prefix = 0)
|
||||
{
|
||||
str << '\\';
|
||||
if (prefix)
|
||||
str << prefix;
|
||||
const auto oldPadChar = str.padChar();
|
||||
const auto oldFieldWidth = str.fieldWidth();
|
||||
const auto oldFieldAlignment = str.fieldAlignment();
|
||||
const auto oldIntegerBase = str.integerBase();
|
||||
str.setPadChar(QLatin1Char('0'));
|
||||
str.setFieldWidth(width);
|
||||
str.setFieldAlignment(QTextStream::AlignRight);
|
||||
str.setIntegerBase(base);
|
||||
str << value;
|
||||
str.setIntegerBase(oldIntegerBase);
|
||||
str.setFieldAlignment(oldFieldAlignment);
|
||||
str.setFieldWidth(oldFieldWidth);
|
||||
str.setPadChar(oldPadChar);
|
||||
}
|
||||
|
||||
template <class Int>
|
||||
static bool formatSpecialCharacter(QTextStream &str, Int value)
|
||||
{
|
||||
bool result = true;
|
||||
switch (value) {
|
||||
case '\\':
|
||||
str << "\\\\";
|
||||
break;
|
||||
case '\"':
|
||||
str << "\\\"";
|
||||
break;
|
||||
case '\n':
|
||||
str << "\\n";
|
||||
break;
|
||||
default:
|
||||
result = false;
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// Format a sequence of characters (QChar, ushort (UTF-16), uint (UTF-32)
|
||||
// or just char (Latin1, Utf-8)) with the help of traits specifying
|
||||
// how to obtain the code for checking the printable-ness and how to
|
||||
// stream out the plain ASCII values.
|
||||
|
||||
template <EncodingDialog::Encoding>
|
||||
struct FormattingTraits
|
||||
{
|
||||
};
|
||||
|
||||
template <>
|
||||
struct FormattingTraits<EncodingDialog::Unicode>
|
||||
{
|
||||
static ushort code(QChar c) { return c.unicode(); }
|
||||
static char toAscii(QChar c) { return c.toLatin1(); }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct FormattingTraits<EncodingDialog::Utf8>
|
||||
{
|
||||
static ushort code(char c) { return uchar(c); }
|
||||
static char toAscii(char c) { return c; }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct FormattingTraits<EncodingDialog::Utf16>
|
||||
{
|
||||
static ushort code(ushort c) { return c; }
|
||||
static char toAscii(ushort c) { return char(c); }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct FormattingTraits<EncodingDialog::Utf32>
|
||||
{
|
||||
static uint code(uint c) { return c; }
|
||||
static char toAscii(uint c) { return char(c); }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct FormattingTraits<EncodingDialog::Latin1>
|
||||
{
|
||||
static uchar code(char c) { return uchar(c); }
|
||||
static char toAscii(char c) { return c; }
|
||||
};
|
||||
|
||||
static bool isHexDigit(char c)
|
||||
{
|
||||
return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f')
|
||||
|| (c >= 'A' && c <= 'F');
|
||||
}
|
||||
|
||||
template <EncodingDialog::Encoding encoding, class Iterator>
|
||||
static void formatStringSequence(QTextStream &str, Iterator i1, Iterator i2,
|
||||
int escapeIntegerBase, int escapeWidth,
|
||||
char escapePrefix = 0)
|
||||
{
|
||||
str << '"';
|
||||
bool separateHexEscape = false;
|
||||
for (; i1 != i2; ++i1) {
|
||||
const auto code = FormattingTraits<encoding>::code(*i1);
|
||||
if (code >= 0x80) {
|
||||
formatEscapedNumber(str, code, escapeIntegerBase, escapeWidth, escapePrefix);
|
||||
separateHexEscape = escapeIntegerBase == 16 && escapeWidth == 0;
|
||||
} else {
|
||||
if (!formatSpecialCharacter(str, code)) {
|
||||
const char c = FormattingTraits<encoding>::toAscii(*i1);
|
||||
// For variable width/hex: Terminate the literal to stop digit parsing
|
||||
// ("\x12" "34...").
|
||||
if (separateHexEscape && isHexDigit(c))
|
||||
str << "\" \"";
|
||||
str << c;
|
||||
}
|
||||
separateHexEscape = false;
|
||||
}
|
||||
}
|
||||
str << '"';
|
||||
}
|
||||
|
||||
static QString encodedString(const QString &value, EncodingDialog::Encoding e)
|
||||
{
|
||||
QString result;
|
||||
QTextStream str(&result);
|
||||
switch (e) {
|
||||
case EncodingDialog::Unicode:
|
||||
formatStringSequence<EncodingDialog::Unicode>(str, value.cbegin(), value.cend(),
|
||||
16, 4, 'u');
|
||||
break;
|
||||
case EncodingDialog::Utf8: {
|
||||
const QByteArray utf8 = value.toUtf8();
|
||||
str << "u8";
|
||||
formatStringSequence<EncodingDialog::Utf8>(str, utf8.cbegin(), utf8.cend(),
|
||||
8, 3);
|
||||
}
|
||||
break;
|
||||
case EncodingDialog::Utf16: {
|
||||
auto utf16 = value.utf16();
|
||||
auto utf16End = utf16 + value.size();
|
||||
str << 'u';
|
||||
formatStringSequence<EncodingDialog::Utf16>(str, utf16, utf16End,
|
||||
16, 0, 'x');
|
||||
}
|
||||
break;
|
||||
case EncodingDialog::Utf32: {
|
||||
auto utf32 = value.toUcs4();
|
||||
str << 'U';
|
||||
formatStringSequence<EncodingDialog::Utf32>(str, utf32.cbegin(), utf32.cend(),
|
||||
16, 0, 'x');
|
||||
}
|
||||
break;
|
||||
case EncodingDialog::Latin1: {
|
||||
const QByteArray latin1 = value.toLatin1();
|
||||
formatStringSequence<EncodingDialog::Latin1>(str, latin1.cbegin(), latin1.cend(),
|
||||
16, 0, 'x');
|
||||
}
|
||||
break;
|
||||
case EncodingDialog::EncodingCount:
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// Dialog helpers
|
||||
|
||||
static const char *encodingLabels[]
|
||||
{
|
||||
QT_TRANSLATE_NOOP("EncodingDialog", "Unicode:"),
|
||||
QT_TRANSLATE_NOOP("EncodingDialog", "UTF-8:"),
|
||||
QT_TRANSLATE_NOOP("EncodingDialog", "UTF-16:"),
|
||||
QT_TRANSLATE_NOOP("EncodingDialog", "UTF-32:"),
|
||||
QT_TRANSLATE_NOOP("EncodingDialog", "Latin1:")
|
||||
};
|
||||
|
||||
static const char *encodingToolTips[]
|
||||
{
|
||||
QT_TRANSLATE_NOOP("EncodingDialog", "Unicode points for use with any encoding (C++, Python)"),
|
||||
QT_TRANSLATE_NOOP("EncodingDialog", "QString::fromUtf8()"),
|
||||
QT_TRANSLATE_NOOP("EncodingDialog", "wchar_t on Windows, char16_t everywhere"),
|
||||
QT_TRANSLATE_NOOP("EncodingDialog", "wchar_t on Unix (Ucs4)"),
|
||||
QT_TRANSLATE_NOOP("EncodingDialog", "QLatin1String")
|
||||
};
|
||||
|
||||
// A read-only line edit with a tool button to copy the contents
|
||||
class DisplayLineEdit : public QLineEdit
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit DisplayLineEdit(const QIcon &icon, QWidget *parent = nullptr);
|
||||
|
||||
public slots:
|
||||
void copyAll();
|
||||
};
|
||||
|
||||
DisplayLineEdit::DisplayLineEdit(const QIcon &icon, QWidget *parent) :
|
||||
QLineEdit(parent)
|
||||
{
|
||||
setReadOnly(true);
|
||||
#if QT_CONFIG(clipboard) && QT_CONFIG(action)
|
||||
auto copyAction = addAction(icon, QLineEdit::TrailingPosition);
|
||||
connect(copyAction, &QAction::triggered, this, &DisplayLineEdit::copyAll);
|
||||
#endif
|
||||
}
|
||||
|
||||
void DisplayLineEdit::copyAll()
|
||||
{
|
||||
#if QT_CONFIG(clipboard)
|
||||
QGuiApplication::clipboard()->setText(text());
|
||||
#endif
|
||||
}
|
||||
|
||||
static void addFormLayoutRow(QFormLayout *formLayout, const QString &text,
|
||||
QWidget *w, const QString &toolTip)
|
||||
{
|
||||
auto label = new QLabel(text);
|
||||
label->setToolTip(toolTip);
|
||||
w->setToolTip(toolTip);
|
||||
label->setBuddy(w);
|
||||
formLayout->addRow(label, w);
|
||||
}
|
||||
|
||||
EncodingDialog::EncodingDialog(QWidget *parent) :
|
||||
QDialog(parent)
|
||||
{
|
||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
setWindowTitle(tr("Encodings"));
|
||||
|
||||
auto formLayout = new QFormLayout;
|
||||
auto sourceLineEdit = new QLineEdit(this);
|
||||
sourceLineEdit->setClearButtonEnabled(true);
|
||||
connect(sourceLineEdit, &QLineEdit::textChanged, this, &EncodingDialog::textChanged);
|
||||
|
||||
addFormLayoutRow(formLayout, tr("&Source:"), sourceLineEdit, tr("Enter text"));
|
||||
|
||||
const auto copyIcon = QIcon::fromTheme(QLatin1String("edit-copy"),
|
||||
QIcon(QLatin1String(":/images/editcopy")));
|
||||
for (int i = 0; i < EncodingCount; ++i) {
|
||||
m_lineEdits[i] = new DisplayLineEdit(copyIcon, this);
|
||||
addFormLayoutRow(formLayout, tr(encodingLabels[i]),
|
||||
m_lineEdits[i], tr(encodingToolTips[i]));
|
||||
}
|
||||
|
||||
auto mainLayout = new QVBoxLayout(this);
|
||||
mainLayout->addLayout(formLayout);
|
||||
auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Close);
|
||||
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
||||
mainLayout->addWidget(buttonBox);
|
||||
}
|
||||
|
||||
void EncodingDialog::textChanged(const QString &t)
|
||||
{
|
||||
if (t.isEmpty()) {
|
||||
for (auto lineEdit : m_lineEdits)
|
||||
lineEdit->clear();
|
||||
} else {
|
||||
for (int i = 0; i < EncodingCount; ++i)
|
||||
m_lineEdits[i]->setText(encodedString(t, static_cast<Encoding>(i)));
|
||||
}
|
||||
}
|
||||
|
||||
#include "encodingdialog.moc"
|
@ -1,73 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2018 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef ENCODINGDIALOG_H
|
||||
#define ENCODINGDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
|
||||
QT_FORWARD_DECLARE_CLASS(QLineEdit)
|
||||
|
||||
class EncodingDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit EncodingDialog(QWidget *parent = nullptr);
|
||||
|
||||
enum Encoding { Unicode, Utf8, Utf16, Utf32, Latin1, EncodingCount };
|
||||
|
||||
private slots:
|
||||
void textChanged(const QString &t);
|
||||
|
||||
private:
|
||||
QLineEdit *m_lineEdits[EncodingCount];
|
||||
};
|
||||
|
||||
#endif // ENCODINGDIALOG_H
|
Binary file not shown.
Before Width: | Height: | Size: 1.3 KiB |
@ -1,61 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include <QApplication>
|
||||
|
||||
#include "mainwindow.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
MainWindow mainWin;
|
||||
mainWin.show();
|
||||
return app.exec();
|
||||
}
|
@ -1,225 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include "encodingdialog.h"
|
||||
#include "previewform.h"
|
||||
|
||||
#include <QAction>
|
||||
#include <QApplication>
|
||||
#include <QFileDialog>
|
||||
#include <QMenuBar>
|
||||
#include <QMessageBox>
|
||||
#include <QPlainTextEdit>
|
||||
#include <QRegularExpression>
|
||||
#include <QScreen>
|
||||
#include <QTextCodec>
|
||||
#include <QTextStream>
|
||||
|
||||
MainWindow::MainWindow()
|
||||
{
|
||||
textEdit = new QPlainTextEdit;
|
||||
textEdit->setLineWrapMode(QPlainTextEdit::NoWrap);
|
||||
setCentralWidget(textEdit);
|
||||
|
||||
findCodecs();
|
||||
|
||||
previewForm = new PreviewForm(this);
|
||||
previewForm->setCodecList(codecs);
|
||||
|
||||
createMenus();
|
||||
|
||||
setWindowTitle(tr("Codecs"));
|
||||
|
||||
const QRect screenGeometry = screen()->geometry();
|
||||
resize(screenGeometry.width() / 2, screenGeometry.height() * 2 / 3);
|
||||
}
|
||||
|
||||
void MainWindow::open()
|
||||
{
|
||||
const QString fileName = QFileDialog::getOpenFileName(this);
|
||||
if (fileName.isEmpty())
|
||||
return;
|
||||
QFile file(fileName);
|
||||
if (!file.open(QFile::ReadOnly)) {
|
||||
QMessageBox::warning(this, tr("Codecs"),
|
||||
tr("Cannot read file %1:\n%2")
|
||||
.arg(QDir::toNativeSeparators(fileName),
|
||||
file.errorString()));
|
||||
return;
|
||||
}
|
||||
|
||||
const QByteArray data = file.readAll();
|
||||
|
||||
previewForm->setWindowTitle(tr("Choose Encoding for %1").arg(QFileInfo(fileName).fileName()));
|
||||
previewForm->setEncodedData(data);
|
||||
if (previewForm->exec())
|
||||
textEdit->setPlainText(previewForm->decodedString());
|
||||
}
|
||||
|
||||
void MainWindow::save()
|
||||
{
|
||||
const QAction *action = qobject_cast<const QAction *>(sender());
|
||||
const QByteArray codecName = action->data().toByteArray();
|
||||
const QString title = tr("Save As (%1)").arg(QLatin1String(codecName));
|
||||
|
||||
QString fileName = QFileDialog::getSaveFileName(this, title);
|
||||
if (fileName.isEmpty())
|
||||
return;
|
||||
QFile file(fileName);
|
||||
if (!file.open(QFile::WriteOnly | QFile::Text)) {
|
||||
QMessageBox::warning(this, tr("Codecs"),
|
||||
tr("Cannot write file %1:\n%2")
|
||||
.arg(QDir::toNativeSeparators(fileName),
|
||||
file.errorString()));
|
||||
return;
|
||||
}
|
||||
|
||||
QTextCodec *codec = QTextCodec::codecForName(codecName.constData());
|
||||
QByteArray text = codec->fromUnicode(textEdit->toPlainText());
|
||||
file.write(text);
|
||||
}
|
||||
|
||||
void MainWindow::about()
|
||||
{
|
||||
QMessageBox::about(this, tr("About Codecs"),
|
||||
tr("The <b>Codecs</b> example demonstrates how to read and write "
|
||||
"files using various encodings."));
|
||||
}
|
||||
|
||||
void MainWindow::aboutToShowSaveAsMenu()
|
||||
{
|
||||
const QString currentText = textEdit->toPlainText();
|
||||
for (QAction *action : qAsConst(saveAsActs)) {
|
||||
const QByteArray codecName = action->data().toByteArray();
|
||||
const QTextCodec *codec = QTextCodec::codecForName(codecName);
|
||||
action->setVisible(codec && codec->canEncode(currentText));
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::findCodecs()
|
||||
{
|
||||
QMap<QString, QTextCodec *> codecMap;
|
||||
QRegularExpression iso8859RegExp("^ISO[- ]8859-([0-9]+).*$");
|
||||
QRegularExpressionMatch match;
|
||||
|
||||
const QList<int> mibs = QTextCodec::availableMibs();
|
||||
for (int mib : mibs) {
|
||||
QTextCodec *codec = QTextCodec::codecForMib(mib);
|
||||
|
||||
QString sortKey = codec->name().toUpper();
|
||||
char rank;
|
||||
|
||||
if (sortKey.startsWith(QLatin1String("UTF-8"))) {
|
||||
rank = 1;
|
||||
} else if (sortKey.startsWith(QLatin1String("UTF-16"))) {
|
||||
rank = 2;
|
||||
} else if ((match = iso8859RegExp.match(sortKey)).hasMatch()) {
|
||||
if (match.capturedView(1).size() == 1)
|
||||
rank = 3;
|
||||
else
|
||||
rank = 4;
|
||||
} else {
|
||||
rank = 5;
|
||||
}
|
||||
sortKey.prepend(QLatin1Char('0' + rank));
|
||||
|
||||
codecMap.insert(sortKey, codec);
|
||||
}
|
||||
for (const auto &codec : qAsConst(codecMap))
|
||||
codecs += codec;
|
||||
}
|
||||
|
||||
void MainWindow::createMenus()
|
||||
{
|
||||
QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
|
||||
QAction *openAct =
|
||||
fileMenu->addAction(tr("&Open..."), this, &MainWindow::open);
|
||||
openAct->setShortcuts(QKeySequence::Open);
|
||||
|
||||
QMenu *saveAsMenu = fileMenu->addMenu(tr("&Save As"));
|
||||
connect(saveAsMenu, &QMenu::aboutToShow,
|
||||
this, &MainWindow::aboutToShowSaveAsMenu);
|
||||
for (const QTextCodec *codec : qAsConst(codecs)) {
|
||||
const QByteArray name = codec->name();
|
||||
QAction *action = saveAsMenu->addAction(tr("%1...").arg(QLatin1String(name)));
|
||||
action->setData(QVariant(name));
|
||||
connect(action, &QAction::triggered, this, &MainWindow::save);
|
||||
saveAsActs.append(action);
|
||||
}
|
||||
|
||||
fileMenu->addSeparator();
|
||||
QAction *exitAct = fileMenu->addAction(tr("E&xit"), this, &QWidget::close);
|
||||
exitAct->setShortcuts(QKeySequence::Quit);
|
||||
|
||||
auto toolMenu = menuBar()->addMenu(tr("&Tools"));
|
||||
auto encodingAction = toolMenu->addAction(tr("Encodings"), this, &MainWindow::encodingDialog);
|
||||
encodingAction->setShortcut(Qt::CTRL + Qt::Key_E);
|
||||
encodingAction->setToolTip(tr("Shows a dialog allowing to convert to common encoding in programming languages."));
|
||||
|
||||
|
||||
menuBar()->addSeparator();
|
||||
|
||||
QMenu *helpMenu = menuBar()->addMenu(tr("&Help"));
|
||||
helpMenu->addAction(tr("&About"), this, &MainWindow::about);
|
||||
helpMenu->addAction(tr("About &Qt"), qApp, &QApplication::aboutQt);
|
||||
}
|
||||
|
||||
void MainWindow::encodingDialog()
|
||||
{
|
||||
if (!m_encodingDialog) {
|
||||
m_encodingDialog = new EncodingDialog(this);
|
||||
const QRect screenGeometry = screen()->geometry();
|
||||
m_encodingDialog->setMinimumWidth(screenGeometry.width() / 4);
|
||||
}
|
||||
m_encodingDialog->show();
|
||||
m_encodingDialog->raise();
|
||||
|
||||
}
|
@ -1,91 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include <QVector>
|
||||
#include <QMainWindow>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QAction;
|
||||
class QTextCodec;
|
||||
class QPlainTextEdit;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
class EncodingDialog;
|
||||
class PreviewForm;
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MainWindow();
|
||||
|
||||
private slots:
|
||||
void open();
|
||||
void save();
|
||||
void about();
|
||||
void aboutToShowSaveAsMenu();
|
||||
void encodingDialog();
|
||||
|
||||
private:
|
||||
void findCodecs();
|
||||
void createMenus();
|
||||
|
||||
QVector<QAction *> saveAsActs;
|
||||
QPlainTextEdit *textEdit;
|
||||
PreviewForm *previewForm;
|
||||
QVector<QTextCodec *> codecs;
|
||||
EncodingDialog *m_encodingDialog = nullptr;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,248 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "previewform.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QComboBox>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QGridLayout>
|
||||
#include <QLabel>
|
||||
#include <QPlainTextEdit>
|
||||
#include <QPushButton>
|
||||
#include <QScreen>
|
||||
#include <QTextCodec>
|
||||
#include <QTextStream>
|
||||
|
||||
// Helpers for creating hex dumps
|
||||
static void indent(QTextStream &str, int indent)
|
||||
{
|
||||
for (int i = 0; i < indent; ++i)
|
||||
str << ' ';
|
||||
}
|
||||
|
||||
static void formatHex(QTextStream &str, const QByteArray &data)
|
||||
{
|
||||
const int fieldWidth = str.fieldWidth();
|
||||
const QTextStream::FieldAlignment alignment = str.fieldAlignment();
|
||||
const int base = str.integerBase();
|
||||
const QChar padChar = str.padChar();
|
||||
str.setIntegerBase(16);
|
||||
str.setPadChar(QLatin1Char('0'));
|
||||
str.setFieldAlignment(QTextStream::AlignRight);
|
||||
|
||||
const unsigned char *p = reinterpret_cast<const unsigned char *>(data.constBegin());
|
||||
for (const unsigned char *end = p + data.size(); p < end; ++p) {
|
||||
str << ' ';
|
||||
str.setFieldWidth(2);
|
||||
str << unsigned(*p);
|
||||
str.setFieldWidth(fieldWidth);
|
||||
}
|
||||
str.setFieldAlignment(alignment);
|
||||
str.setPadChar(padChar);
|
||||
str.setIntegerBase(base);
|
||||
}
|
||||
|
||||
static void formatPrintableCharacters(QTextStream &str, const QByteArray &data)
|
||||
{
|
||||
for (const char c : data) {
|
||||
switch (c) {
|
||||
case '\0':
|
||||
str << "\\0";
|
||||
break;
|
||||
case '\t':
|
||||
str << "\\t";
|
||||
break;
|
||||
case '\r':
|
||||
str << "\\r";
|
||||
break;
|
||||
case '\n':
|
||||
str << "\\n";
|
||||
break;
|
||||
default:
|
||||
if (c >= 32 && uchar(c) < 127)
|
||||
str << ' ' << c;
|
||||
else
|
||||
str << "..";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static QString formatHexDump(const QByteArray &data)
|
||||
{
|
||||
enum { lineWidth = 16 };
|
||||
QString result;
|
||||
QTextStream str(&result);
|
||||
str.setIntegerBase(16);
|
||||
str.setPadChar(QLatin1Char('0'));
|
||||
const int fieldWidth = str.fieldWidth();
|
||||
const QTextStream::FieldAlignment alignment = str.fieldAlignment();
|
||||
for (int a = 0, size = data.size(); a < size; a += lineWidth) {
|
||||
str.setFieldAlignment(QTextStream::AlignRight);
|
||||
str.setFieldWidth(8);
|
||||
str << a;
|
||||
str.setFieldWidth(fieldWidth);
|
||||
str.setFieldAlignment(alignment);
|
||||
|
||||
const int end = qMin(a + lineWidth, size);
|
||||
const QByteArray line = data.mid(a, end - a);
|
||||
|
||||
formatHex(str, line);
|
||||
indent(str, 3 * (lineWidth - line.size()));
|
||||
|
||||
str << ' ';
|
||||
formatPrintableCharacters(str, line);
|
||||
indent(str, 2 * (lineWidth - line.size()));
|
||||
str << '\n';
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
PreviewForm::PreviewForm(QWidget *parent)
|
||||
: QDialog(parent)
|
||||
{
|
||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||
encodingComboBox = new QComboBox;
|
||||
|
||||
QLabel *encodingLabel = new QLabel(tr("&Encoding:"));
|
||||
encodingLabel->setBuddy(encodingComboBox);
|
||||
|
||||
textEdit = new QPlainTextEdit;
|
||||
textEdit->setLineWrapMode(QPlainTextEdit::NoWrap);
|
||||
textEdit->setReadOnly(true);
|
||||
hexDumpEdit = new QPlainTextEdit;
|
||||
hexDumpEdit->setLineWrapMode(QPlainTextEdit::NoWrap);
|
||||
hexDumpEdit->setReadOnly(true);
|
||||
hexDumpEdit->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
|
||||
|
||||
QDialogButtonBox *buttonBox =
|
||||
new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
okButton = buttonBox->button(QDialogButtonBox::Ok);
|
||||
|
||||
connect(encodingComboBox, &QComboBox::activated,
|
||||
this, &PreviewForm::updateTextEdit);
|
||||
connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
|
||||
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
||||
|
||||
QGridLayout *mainLayout = new QGridLayout(this);
|
||||
mainLayout->addWidget(encodingLabel, 0, 0);
|
||||
mainLayout->addWidget(encodingComboBox, 0, 1);
|
||||
tabWidget = new QTabWidget;
|
||||
tabWidget->addTab(textEdit, tr("Preview"));
|
||||
tabWidget->addTab(hexDumpEdit, tr("Hex Dump"));
|
||||
mainLayout->addWidget(tabWidget, 1, 0, 1, 2);
|
||||
statusLabel = new QLabel;
|
||||
mainLayout->addWidget(statusLabel, 2, 0, 1, 2);
|
||||
mainLayout->addWidget(buttonBox, 3, 0, 1, 2);
|
||||
|
||||
const QRect screenGeometry = screen()->geometry();
|
||||
resize(screenGeometry.width() * 2 / 5, screenGeometry.height() / 2);
|
||||
}
|
||||
|
||||
void PreviewForm::setCodecList(const QVector<QTextCodec *> &list)
|
||||
{
|
||||
encodingComboBox->clear();
|
||||
for (const QTextCodec *codec : list) {
|
||||
encodingComboBox->addItem(QLatin1String(codec->name()),
|
||||
QVariant(codec->mibEnum()));
|
||||
}
|
||||
}
|
||||
|
||||
void PreviewForm::reset()
|
||||
{
|
||||
decodedStr.clear();
|
||||
textEdit->clear();
|
||||
hexDumpEdit->clear();
|
||||
statusLabel->clear();
|
||||
statusLabel->setStyleSheet(QString());
|
||||
okButton->setEnabled(false);
|
||||
tabWidget->setCurrentIndex(0);
|
||||
}
|
||||
|
||||
void PreviewForm::setEncodedData(const QByteArray &data)
|
||||
{
|
||||
reset();
|
||||
encodedData = data;
|
||||
hexDumpEdit->setPlainText(formatHexDump(data));
|
||||
updateTextEdit();
|
||||
}
|
||||
|
||||
void PreviewForm::updateTextEdit()
|
||||
{
|
||||
int mib = encodingComboBox->itemData(
|
||||
encodingComboBox->currentIndex()).toInt();
|
||||
const QTextCodec *codec = QTextCodec::codecForMib(mib);
|
||||
const QString name = QLatin1String(codec->name());
|
||||
|
||||
QTextCodec::ConverterState state;
|
||||
decodedStr = codec->toUnicode(encodedData.constData(), encodedData.size(), &state);
|
||||
|
||||
bool success = true;
|
||||
if (state.remainingChars) {
|
||||
success = false;
|
||||
const QString message =
|
||||
tr("%1: conversion error at character %2")
|
||||
.arg(name).arg(encodedData.size() - state.remainingChars + 1);
|
||||
statusLabel->setText(message);
|
||||
statusLabel->setStyleSheet(QStringLiteral("background-color: \"red\";"));
|
||||
} else if (state.invalidChars) {
|
||||
statusLabel->setText(tr("%1: %n invalid characters", nullptr, state.invalidChars).arg(name));
|
||||
statusLabel->setStyleSheet(QStringLiteral("background-color: \"yellow\";"));
|
||||
} else {
|
||||
statusLabel->setText(tr("%1: %n bytes converted", nullptr, encodedData.size()).arg(name));
|
||||
statusLabel->setStyleSheet(QString());
|
||||
}
|
||||
if (success)
|
||||
textEdit->setPlainText(decodedStr);
|
||||
else
|
||||
textEdit->clear();
|
||||
okButton->setEnabled(success);
|
||||
}
|
@ -1,95 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef PREVIEWFORM_H
|
||||
#define PREVIEWFORM_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QVector>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QComboBox;
|
||||
class QDialogButtonBox;
|
||||
class QLabel;
|
||||
class QPlainTextEdit;
|
||||
class QPushButton;
|
||||
class QTabWidget;
|
||||
class QTextCodec;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
class PreviewForm : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit PreviewForm(QWidget *parent = nullptr);
|
||||
|
||||
void setCodecList(const QVector<QTextCodec *> &list);
|
||||
void setEncodedData(const QByteArray &data);
|
||||
QString decodedString() const { return decodedStr; }
|
||||
|
||||
private slots:
|
||||
void updateTextEdit();
|
||||
|
||||
private:
|
||||
void reset();
|
||||
|
||||
QByteArray encodedData;
|
||||
QString decodedStr;
|
||||
|
||||
QPushButton *okButton;
|
||||
QTabWidget *tabWidget;
|
||||
QComboBox *encodingComboBox;
|
||||
QPlainTextEdit *textEdit;
|
||||
QPlainTextEdit *hexDumpEdit;
|
||||
QLabel *statusLabel;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,6 +1,5 @@
|
||||
TEMPLATE = subdirs
|
||||
SUBDIRS = \
|
||||
codecs \
|
||||
completer \
|
||||
customcompleter \
|
||||
echoplugin \
|
||||
|
@ -212,9 +212,6 @@ qmake_pch.obj:
|
||||
{$(SOURCE_PATH)\src\3rdparty\md5}.cpp{}.obj::
|
||||
$(CXX) $(CXXFLAGS) $<
|
||||
|
||||
{$(SOURCE_PATH)\src\corelib\codecs}.cpp{}.obj::
|
||||
$(CXX) $(CXXFLAGS) $<
|
||||
|
||||
{$(SOURCE_PATH)\src\corelib\global}.cpp{}.obj::
|
||||
$(CXX) $(CXXFLAGS) $<
|
||||
|
||||
|
@ -107,7 +107,6 @@ VPATH += \
|
||||
../src/corelib/text \
|
||||
../src/corelib/tools \
|
||||
../src/corelib/kernel \
|
||||
../src/corelib/codecs \
|
||||
../src/corelib/plugin \
|
||||
../src/corelib/io \
|
||||
../src/corelib/time \
|
||||
|
@ -9,8 +9,6 @@ qt_add_module(Core
|
||||
QMAKE_MODULE_CONFIG moc resources
|
||||
EXCEPTIONS
|
||||
SOURCES
|
||||
codecs/qtextcodec_p.h
|
||||
codecs/qutfcodec.cpp codecs/qutfcodec_p.h
|
||||
global/archdetect.cpp
|
||||
global/qcompilerdetection.h
|
||||
global/qendian.cpp global/qendian.h global/qendian_p.h
|
||||
@ -157,6 +155,7 @@ qt_add_module(Core
|
||||
text/qstringlist.cpp text/qstringlist.h
|
||||
text/qstringliteral.h
|
||||
text/qstringmatcher.h
|
||||
text/qstringtokenizer.cpp text/qstringtokenizer.h
|
||||
text/qstringview.cpp text/qstringview.h
|
||||
text/qtextboundaryfinder.cpp text/qtextboundaryfinder.h
|
||||
text/qunicodetables_p.h
|
||||
@ -565,6 +564,7 @@ qt_extend_target(Core CONDITION QT_FEATURE_future
|
||||
thread/qfutureinterface.cpp thread/qfutureinterface.h thread/qfutureinterface_p.h
|
||||
thread/qfuturesynchronizer.h
|
||||
thread/qfuturewatcher.cpp thread/qfuturewatcher.h thread/qfuturewatcher_p.h
|
||||
thread/qpromise.h
|
||||
thread/qresultstore.cpp thread/qresultstore.h
|
||||
)
|
||||
|
||||
@ -983,47 +983,6 @@ qt_extend_target(Core CONDITION QNX AND QT_FEATURE_qqnx_pps
|
||||
PPS::PPS
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_textcodec
|
||||
SOURCES
|
||||
codecs/qlatincodec.cpp codecs/qlatincodec_p.h
|
||||
codecs/qsimplecodec.cpp codecs/qsimplecodec_p.h
|
||||
codecs/qtextcodec.cpp codecs/qtextcodec.h
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_codecs AND QT_FEATURE_textcodec
|
||||
SOURCES
|
||||
codecs/qisciicodec.cpp codecs/qisciicodec_p.h
|
||||
codecs/qtsciicodec.cpp codecs/qtsciicodec_p.h
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_icu AND QT_FEATURE_textcodec
|
||||
SOURCES
|
||||
codecs/qicucodec.cpp codecs/qicucodec_p.h
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_big_codecs AND QT_FEATURE_textcodec AND NOT QT_FEATURE_icu
|
||||
SOURCES
|
||||
codecs/qbig5codec.cpp codecs/qbig5codec_p.h
|
||||
codecs/qeucjpcodec.cpp codecs/qeucjpcodec_p.h
|
||||
codecs/qeuckrcodec.cpp codecs/qeuckrcodec_p.h
|
||||
codecs/qgb18030codec.cpp codecs/qgb18030codec_p.h
|
||||
codecs/qjiscodec.cpp codecs/qjiscodec_p.h
|
||||
codecs/qjpunicode.cpp
|
||||
codecs/qsjiscodec.cpp codecs/qsjiscodec_p.h
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_iconv AND QT_FEATURE_textcodec AND NOT QT_FEATURE_icu
|
||||
SOURCES
|
||||
codecs/qiconvcodec.cpp codecs/qiconvcodec_p.h
|
||||
LIBRARIES
|
||||
iconv
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_textcodec AND WIN32 AND NOT QT_FEATURE_icu
|
||||
SOURCES
|
||||
codecs/qwindowscodec.cpp codecs/qwindowscodec_p.h
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_cborstreamreader
|
||||
SOURCES
|
||||
serialization/qcborstreamreader.cpp serialization/qcborstreamreader.h
|
||||
@ -1058,7 +1017,7 @@ qt_extend_target(Core CONDITION QT_FEATURE_mimetype
|
||||
mimetypes/qmimetypeparser.cpp mimetypes/qmimetypeparser_p.h
|
||||
)
|
||||
|
||||
#### Keys ignored in scope 188:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_mimetype:
|
||||
#### Keys ignored in scope 180:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_mimetype:
|
||||
# MIME_DATABASE = "mimetypes/mime/packages/freedesktop.org.xml"
|
||||
# OTHER_FILES = "$$MIME_DATABASE"
|
||||
|
||||
@ -1067,7 +1026,7 @@ qt_extend_target(Core CONDITION QT_FEATURE_mimetype AND QT_FEATURE_mimetype_data
|
||||
.rcc
|
||||
)
|
||||
|
||||
#### Keys ignored in scope 189:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_mimetype_database:
|
||||
#### Keys ignored in scope 181:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_mimetype_database:
|
||||
# QMAKE_EXTRA_COMPILERS = "mimedb"
|
||||
# mimedb.commands = "${QMAKE_FILE_IN}" ">" "${QMAKE_FILE_OUT}"
|
||||
# mimedb.depends = "$$PWD/mime/generate.pl"
|
||||
@ -1075,23 +1034,23 @@ qt_extend_target(Core CONDITION QT_FEATURE_mimetype AND QT_FEATURE_mimetype_data
|
||||
# mimedb.output = "$$outpath/qmimeprovider_database.cpp"
|
||||
# mimedb.variable_out = "INCLUDED_SOURCES"
|
||||
|
||||
#### Keys ignored in scope 190:.:mimetypes:mimetypes/mimetypes.pri:ANDROID:
|
||||
#### Keys ignored in scope 182:.:mimetypes:mimetypes/mimetypes.pri:ANDROID:
|
||||
# outpath = "$$outpath/$${QT_ARCH}"
|
||||
|
||||
#### Keys ignored in scope 192:.:mimetypes:mimetypes/mimetypes.pri:(CMAKE_BUILD_TYPE STREQUAL Debug):
|
||||
#### Keys ignored in scope 184:.:mimetypes:mimetypes/mimetypes.pri:(CMAKE_BUILD_TYPE STREQUAL Debug):
|
||||
# outpath = "$$outpath/debug"
|
||||
|
||||
#### Keys ignored in scope 193:.:mimetypes:mimetypes/mimetypes.pri:else:
|
||||
#### Keys ignored in scope 185:.:mimetypes:mimetypes/mimetypes.pri:else:
|
||||
# outpath = "$$outpath/release"
|
||||
|
||||
#### Keys ignored in scope 194:.:mimetypes:mimetypes/mimetypes.pri:MAKEFILE_GENERATOR___equals___MSVC.NET OR MAKEFILE_GENERATOR___equals___MSBUILD OR QMAKE_SH_ISEMPTY:
|
||||
#### Keys ignored in scope 186:.:mimetypes:mimetypes/mimetypes.pri:MAKEFILE_GENERATOR___equals___MSVC.NET OR MAKEFILE_GENERATOR___equals___MSBUILD OR QMAKE_SH_ISEMPTY:
|
||||
# mimedb.commands = "cmd" "/c" "$$shell_path($$PWD/mime/generate.bat)"
|
||||
# mimedb.depends = "$$PWD/mime/generate.bat" "$$PWD/mime/hexdump.ps1"
|
||||
|
||||
#### Keys ignored in scope 195:.:mimetypes:mimetypes/mimetypes.pri:else:
|
||||
#### Keys ignored in scope 187:.:mimetypes:mimetypes/mimetypes.pri:else:
|
||||
# mimedb.commands = "perl" "$${mimedb.depends}"
|
||||
|
||||
#### Keys ignored in scope 196:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_zstd:
|
||||
#### Keys ignored in scope 188:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_zstd:
|
||||
# mimedb.commands = "--zstd"
|
||||
|
||||
qt_extend_target(Core CONDITION WASM
|
||||
|
@ -27,8 +27,6 @@ qt_add_module(Core
|
||||
QMAKE_MODULE_CONFIG moc resources
|
||||
EXCEPTIONS
|
||||
SOURCES
|
||||
codecs/qtextcodec_p.h
|
||||
codecs/qutfcodec.cpp codecs/qutfcodec_p.h
|
||||
global/archdetect.cpp
|
||||
global/qcompilerdetection.h
|
||||
global/qendian.cpp global/qendian.h global/qendian_p.h
|
||||
@ -175,6 +173,7 @@ qt_add_module(Core
|
||||
text/qstringlist.cpp text/qstringlist.h
|
||||
text/qstringliteral.h
|
||||
text/qstringmatcher.h
|
||||
text/qstringtokenizer.cpp text/qstringtokenizer.h
|
||||
text/qstringview.cpp text/qstringview.h
|
||||
text/qtextboundaryfinder.cpp text/qtextboundaryfinder.h
|
||||
text/qunicodetables_p.h
|
||||
@ -1085,47 +1084,6 @@ qt_extend_target(Core CONDITION QNX AND QT_FEATURE_qqnx_pps
|
||||
PPS::PPS
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_textcodec
|
||||
SOURCES
|
||||
codecs/qlatincodec.cpp codecs/qlatincodec_p.h
|
||||
codecs/qsimplecodec.cpp codecs/qsimplecodec_p.h
|
||||
codecs/qtextcodec.cpp codecs/qtextcodec.h
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_codecs AND QT_FEATURE_textcodec
|
||||
SOURCES
|
||||
codecs/qisciicodec.cpp codecs/qisciicodec_p.h
|
||||
codecs/qtsciicodec.cpp codecs/qtsciicodec_p.h
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_icu AND QT_FEATURE_textcodec
|
||||
SOURCES
|
||||
codecs/qicucodec.cpp codecs/qicucodec_p.h
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_big_codecs AND QT_FEATURE_textcodec AND NOT QT_FEATURE_icu
|
||||
SOURCES
|
||||
codecs/qbig5codec.cpp codecs/qbig5codec_p.h
|
||||
codecs/qeucjpcodec.cpp codecs/qeucjpcodec_p.h
|
||||
codecs/qeuckrcodec.cpp codecs/qeuckrcodec_p.h
|
||||
codecs/qgb18030codec.cpp codecs/qgb18030codec_p.h
|
||||
codecs/qjiscodec.cpp codecs/qjiscodec_p.h
|
||||
codecs/qjpunicode.cpp
|
||||
codecs/qsjiscodec.cpp codecs/qsjiscodec_p.h
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_iconv AND QT_FEATURE_textcodec AND NOT QT_FEATURE_icu
|
||||
SOURCES
|
||||
codecs/qiconvcodec.cpp codecs/qiconvcodec_p.h
|
||||
LIBRARIES
|
||||
iconv
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_textcodec AND WIN32 AND NOT QT_FEATURE_icu
|
||||
SOURCES
|
||||
codecs/qwindowscodec.cpp codecs/qwindowscodec_p.h
|
||||
)
|
||||
|
||||
qt_extend_target(Core CONDITION QT_FEATURE_cborstreamreader
|
||||
SOURCES
|
||||
serialization/qcborstreamreader.cpp serialization/qcborstreamreader.h
|
||||
@ -1160,7 +1118,7 @@ qt_extend_target(Core CONDITION QT_FEATURE_mimetype
|
||||
mimetypes/qmimetypeparser.cpp mimetypes/qmimetypeparser_p.h
|
||||
)
|
||||
|
||||
#### Keys ignored in scope 188:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_mimetype:
|
||||
#### Keys ignored in scope 180:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_mimetype:
|
||||
# MIME_DATABASE = "mimetypes/mime/packages/freedesktop.org.xml"
|
||||
# OTHER_FILES = "$$MIME_DATABASE"
|
||||
|
||||
@ -1171,7 +1129,7 @@ qt_extend_target(Core CONDITION QT_FEATURE_mimetype
|
||||
#)
|
||||
# special case end
|
||||
|
||||
#### Keys ignored in scope 189:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_mimetype_database:
|
||||
#### Keys ignored in scope 181:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_mimetype_database:
|
||||
# QMAKE_EXTRA_COMPILERS = "mimedb"
|
||||
# mimedb.commands = "${QMAKE_FILE_IN}" ">" "${QMAKE_FILE_OUT}"
|
||||
# mimedb.depends = "$$PWD/mime/generate.pl"
|
||||
@ -1179,23 +1137,23 @@ qt_extend_target(Core CONDITION QT_FEATURE_mimetype
|
||||
# mimedb.output = "$$outpath/qmimeprovider_database.cpp"
|
||||
# mimedb.variable_out = "INCLUDED_SOURCES"
|
||||
|
||||
#### Keys ignored in scope 190:.:mimetypes:mimetypes/mimetypes.pri:ANDROID:
|
||||
#### Keys ignored in scope 182:.:mimetypes:mimetypes/mimetypes.pri:ANDROID:
|
||||
# outpath = "$$outpath/$${QT_ARCH}"
|
||||
|
||||
#### Keys ignored in scope 192:.:mimetypes:mimetypes/mimetypes.pri:(CMAKE_BUILD_TYPE STREQUAL Debug):
|
||||
#### Keys ignored in scope 184:.:mimetypes:mimetypes/mimetypes.pri:(CMAKE_BUILD_TYPE STREQUAL Debug):
|
||||
# outpath = "$$outpath/debug"
|
||||
|
||||
#### Keys ignored in scope 193:.:mimetypes:mimetypes/mimetypes.pri:else:
|
||||
#### Keys ignored in scope 185:.:mimetypes:mimetypes/mimetypes.pri:else:
|
||||
# outpath = "$$outpath/release"
|
||||
|
||||
#### Keys ignored in scope 194:.:mimetypes:mimetypes/mimetypes.pri:MAKEFILE_GENERATOR___equals___MSVC.NET OR MAKEFILE_GENERATOR___equals___MSBUILD OR QMAKE_SH_ISEMPTY:
|
||||
#### Keys ignored in scope 186:.:mimetypes:mimetypes/mimetypes.pri:MAKEFILE_GENERATOR___equals___MSVC.NET OR MAKEFILE_GENERATOR___equals___MSBUILD OR QMAKE_SH_ISEMPTY:
|
||||
# mimedb.commands = "cmd" "/c" "$$shell_path($$PWD/mime/generate.bat)"
|
||||
# mimedb.depends = "$$PWD/mime/generate.bat" "$$PWD/mime/hexdump.ps1"
|
||||
|
||||
#### Keys ignored in scope 195:.:mimetypes:mimetypes/mimetypes.pri:else:
|
||||
#### Keys ignored in scope 187:.:mimetypes:mimetypes/mimetypes.pri:else:
|
||||
# mimedb.commands = "perl" "$${mimedb.depends}"
|
||||
|
||||
#### Keys ignored in scope 196:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_zstd:
|
||||
#### Keys ignored in scope 188:.:mimetypes:mimetypes/mimetypes.pri:QT_FEATURE_zstd:
|
||||
# mimedb.commands = "--zstd"
|
||||
# Resources:
|
||||
# special case begin
|
||||
|
@ -1,25 +0,0 @@
|
||||
Copyright (C) 2000 Ming-Che Chuang
|
||||
Copyright (C) 2001, 2002 James Su, Turbolinux Inc.
|
||||
Copyright (C) 2002 WU Yi, HancomLinux Inc.
|
||||
Copyright (C) 2001, 2002 Anthony Fok, ThizLinux Laboratory Ltd.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
@ -1,24 +0,0 @@
|
||||
Copyright (C) 2000 TurboLinux, Inc. Written by Justin Yu and Sean Chen.
|
||||
Copyright (C) 2001, 2002 Turbolinux, Inc. Written by James Su.
|
||||
Copyright (C) 2001, 2002 ThizLinux Laboratory Ltd. Written by Anthony Fok.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
@ -1,22 +0,0 @@
|
||||
Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
@ -1,22 +0,0 @@
|
||||
Copyright (C) 1999-2000 Mizi Research Inc. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
@ -1,22 +0,0 @@
|
||||
Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
@ -1,22 +0,0 @@
|
||||
Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
@ -1,22 +0,0 @@
|
||||
Copyright (C) 2000 Hans Petter Bieker. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
@ -1,67 +0,0 @@
|
||||
# Qt core library codecs module
|
||||
|
||||
HEADERS += \
|
||||
codecs/qtextcodec_p.h \
|
||||
codecs/qutfcodec_p.h
|
||||
|
||||
SOURCES += \
|
||||
codecs/qutfcodec.cpp
|
||||
|
||||
qtConfig(textcodec) {
|
||||
HEADERS += \
|
||||
codecs/qlatincodec_p.h \
|
||||
codecs/qsimplecodec_p.h \
|
||||
codecs/qtextcodec.h
|
||||
|
||||
SOURCES += \
|
||||
codecs/qlatincodec.cpp \
|
||||
codecs/qsimplecodec.cpp \
|
||||
codecs/qtextcodec.cpp
|
||||
|
||||
qtConfig(codecs) {
|
||||
HEADERS += \
|
||||
codecs/qisciicodec_p.h \
|
||||
codecs/qtsciicodec_p.h
|
||||
|
||||
SOURCES += \
|
||||
codecs/qisciicodec.cpp \
|
||||
codecs/qtsciicodec.cpp
|
||||
}
|
||||
|
||||
qtConfig(icu) {
|
||||
HEADERS += \
|
||||
codecs/qicucodec_p.h
|
||||
SOURCES += \
|
||||
codecs/qicucodec.cpp
|
||||
} else {
|
||||
qtConfig(big_codecs) {
|
||||
HEADERS += \
|
||||
codecs/qgb18030codec_p.h \
|
||||
codecs/qeucjpcodec_p.h \
|
||||
codecs/qjiscodec_p.h \
|
||||
codecs/qsjiscodec_p.h \
|
||||
codecs/qeuckrcodec_p.h \
|
||||
codecs/qbig5codec_p.h
|
||||
|
||||
SOURCES += \
|
||||
codecs/qgb18030codec.cpp \
|
||||
codecs/qjpunicode.cpp \
|
||||
codecs/qeucjpcodec.cpp \
|
||||
codecs/qjiscodec.cpp \
|
||||
codecs/qsjiscodec.cpp \
|
||||
codecs/qeuckrcodec.cpp \
|
||||
codecs/qbig5codec.cpp
|
||||
}
|
||||
|
||||
qtConfig(iconv) {
|
||||
HEADERS += codecs/qiconvcodec_p.h
|
||||
SOURCES += codecs/qiconvcodec.cpp
|
||||
QMAKE_USE_PRIVATE += iconv
|
||||
}
|
||||
|
||||
win32 {
|
||||
SOURCES += codecs/qwindowscodec.cpp
|
||||
HEADERS += codecs/qwindowscodec_p.h
|
||||
}
|
||||
}
|
||||
}
|
@ -1,290 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:FDL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Free Documentation License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Free
|
||||
** Documentation License version 1.3 as published by the Free Software
|
||||
** Foundation and appearing in the file included in the packaging of
|
||||
** this file. Please review the following information to ensure
|
||||
** the GNU Free Documentation License version 1.3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
/*!
|
||||
\page codec-big5.html
|
||||
\title Big5 Text Codec
|
||||
\ingroup codecs
|
||||
|
||||
The Big5 codec provides conversion to and from the Big5 encoding.
|
||||
The code was originally contributed by Ming-Che Chuang
|
||||
\<mingche@cobra.ee.ntu.edu.tw\> for the Big-5+ encoding, and was
|
||||
included in Qt with the author's permission, and the grateful
|
||||
thanks of the Qt team. (Note: Ming-Che's code is QPL'd, as
|
||||
per an mail to qt-info@nokia.com.)
|
||||
|
||||
However, since Big-5+ was never formally approved, and was never
|
||||
used by anyone, the Taiwan Free Software community and the Li18nux
|
||||
Big5 Standard Subgroup agree that the de-facto standard Big5-ETen
|
||||
(zh_TW.Big5 or zh_TW.TW-Big5) be used instead.
|
||||
|
||||
The Big5 is currently implemented as a pure subset of the
|
||||
Big5-HKSCS codec, so more fine-tuning is needed to make it
|
||||
identical to the standard Big5 mapping as determined by
|
||||
Li18nux-Big5. See \l{http://www.autrijus.org/xml/} for the draft
|
||||
Big5 (2002) standard.
|
||||
|
||||
James Su \<suzhe@turbolinux.com.cn\> \<suzhe@gnuchina.org\>
|
||||
generated the Big5-HKSCS-to-Unicode tables with a very
|
||||
space-efficient algorithm. He generously donated his code to glibc
|
||||
in May 2002. Subsequently, James has kindly allowed Anthony Fok
|
||||
\<anthony@thizlinux.com\> \<foka@debian.org\> to adapt the code
|
||||
for Qt.
|
||||
|
||||
\sa{Text Codecs: Big5, Big5-HKSCS}
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page codec-big5hkscs.html
|
||||
\title Big5-HKSCS Text Codec
|
||||
\ingroup codecs
|
||||
|
||||
The Big5-HKSCS codec provides conversion to and from the
|
||||
Big5-HKSCS encoding.
|
||||
|
||||
The codec grew out of the QBig5Codec originally contributed by
|
||||
Ming-Che Chuang \<mingche@cobra.ee.ntu.edu.tw\>. James Su
|
||||
\<suzhe@turbolinux.com.cn\> \<suzhe@gnuchina.org\> and Anthony Fok
|
||||
\<anthony@thizlinux.com\> \<foka@debian.org\> implemented HKSCS-1999
|
||||
QBig5hkscsCodec for Qt-2.3.x, but it was too late in Qt development
|
||||
schedule to be officially included in the Qt-2.3.x series.
|
||||
|
||||
Wu Yi \<wuyi@hancom.com\> ported the HKSCS-1999 QBig5hkscsCodec to
|
||||
Qt-3.0.1 in March 2002.
|
||||
|
||||
With the advent of the new HKSCS-2001 standard, James Su
|
||||
\<suzhe@turbolinux.com.cn\> \<suzhe@gnuchina.org\> generated the
|
||||
Big5-HKSCS<->Unicode tables with a very space-efficient algorithm.
|
||||
He generously donated his code to glibc in May 2002. Subsequently,
|
||||
James has generously allowed Anthony Fok to adapt the code for
|
||||
Qt-3.0.5.
|
||||
|
||||
Currently, the Big5-HKSCS tables are generated from the following
|
||||
sources, and with the Euro character added:
|
||||
\list 1
|
||||
\li \l{http://www.microsoft.com/typography/unicode/950.txt}
|
||||
\li \l{http://www.info.gov.hk/digital21/chi/hkscs/download/big5-iso.txt}
|
||||
\li \l{http://www.info.gov.hk/digital21/chi/hkscs/download/big5cmp.txt}
|
||||
\endlist
|
||||
|
||||
There may be more fine-tuning to the QBig5hkscsCodec to maximize its
|
||||
compatibility with the standard Big5 (2002) mapping as determined by
|
||||
Li18nux Big5 Standard Subgroup. See \l{http://www.autrijus.org/xml/}
|
||||
for the various Big5 CharMapML tables.
|
||||
|
||||
\sa{Text Codecs: Big5, Big5-HKSCS}
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page codec-eucjp.html
|
||||
\title EUC-JP Text Codec
|
||||
\ingroup codecs
|
||||
|
||||
The EUC-JP codec provides conversion to and from EUC-JP, the main
|
||||
legacy encoding for Unix machines in Japan.
|
||||
|
||||
The environment variable \c UNICODEMAP_JP can be used to
|
||||
fine-tune the JIS, Shift-JIS, and EUC-JP codecs. The \l{ISO
|
||||
2022-JP (JIS) Text Codec} documentation describes how to use this
|
||||
variable.
|
||||
|
||||
Most of the code here was written by Serika Kurusugawa,
|
||||
a.k.a. Junji Takagi, and is included in Qt with the author's
|
||||
permission and the grateful thanks of the Qt team.
|
||||
|
||||
\sa{Text Codec: EUC-JP}
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page codec-euckr.html
|
||||
\title EUC-KR Text Codec
|
||||
\ingroup codecs
|
||||
|
||||
The EUC-KR codec provides conversion to and from EUC-KR, KR, the
|
||||
main legacy encoding for Unix machines in Korea.
|
||||
|
||||
It was largely written by Mizi Research Inc. Here is the
|
||||
copyright statement for the code as it was at the point of
|
||||
contribution. The subsequent modifications are covered by
|
||||
the usual copyright for Qt.
|
||||
|
||||
\sa{Text Codec: EUC-KR}
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page codec-gbk.html
|
||||
\title GBK Text Codec
|
||||
\ingroup codecs
|
||||
|
||||
The GBK codec provides conversion to and from the Chinese
|
||||
GB18030/GBK/GB2312 encoding.
|
||||
|
||||
GBK, formally the Chinese Internal Code Specification, is a commonly
|
||||
used extension of GB 2312-80. Microsoft Windows uses it under the
|
||||
name codepage 936.
|
||||
|
||||
GBK has been superseded by the new Chinese national standard
|
||||
GB 18030-2000, which added a 4-byte encoding while remaining
|
||||
compatible with GB2312 and GBK. The new GB 18030-2000 may be described
|
||||
as a special encoding of Unicode 3.x and ISO-10646-1.
|
||||
|
||||
Special thanks to charset gurus Markus Scherer (IBM),
|
||||
Dirk Meyer (Adobe Systems) and Ken Lunde (Adobe Systems) for publishing
|
||||
an excellent GB 18030-2000 summary and specification on the Internet.
|
||||
Some must-read documents are:
|
||||
|
||||
\list
|
||||
\li \l{ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/pdf/GB18030_Summary.pdf}
|
||||
\li \l{http://oss.software.ibm.com/cvs/icu/~checkout~/charset/source/gb18030/gb18030.html}
|
||||
\li \l{http://oss.software.ibm.com/cvs/icu/~checkout~/charset/data/xml/gb-18030-2000.xml}
|
||||
\endlist
|
||||
|
||||
The GBK codec was contributed to Qt by
|
||||
Justin Yu \<justiny@turbolinux.com.cn\> and
|
||||
Sean Chen \<seanc@turbolinux.com.cn\>. They may also be reached at
|
||||
Yu Mingjian \<yumj@sun.ihep.ac.cn\>, \<yumingjian@china.com\>
|
||||
Chen Xiangyang \<chenxy@sun.ihep.ac.cn\>
|
||||
|
||||
The GB18030 codec Qt functions were contributed to Qt by
|
||||
James Su \<suzhe@gnuchina.org\>, \<suzhe@turbolinux.com.cn\>
|
||||
who pioneered much of GB18030 development on GNU/Linux systems.
|
||||
|
||||
The GB18030 codec was contributed to Qt by
|
||||
Anthony Fok \<anthony@thizlinux.com\>, \<foka@debian.org\>
|
||||
using a Perl script to generate C++ tables from gb-18030-2000.xml
|
||||
while merging contributions from James Su, Justin Yu and Sean Chen.
|
||||
A copy of the source Perl script is available at
|
||||
\l{http://people.debian.org/~foka/gb18030/gen-qgb18030codec.pl}
|
||||
|
||||
\sa{Text Codec: GBK}
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page codecs-jis.html
|
||||
\title ISO 2022-JP (JIS) Text Codec
|
||||
\ingroup codecs
|
||||
|
||||
The JIS codec provides conversion to and from ISO 2022-JP.
|
||||
|
||||
The environment variable \c UNICODEMAP_JP can be used to
|
||||
fine-tune the JIS, Shift-JIS, and EUC-JP codecs. The mapping
|
||||
names are as for the Japanese XML working group's
|
||||
\l{XML Japanese Profile},
|
||||
because it names and explains all the
|
||||
widely used mappings. Here are brief descriptions, written by
|
||||
Serika Kurusugawa:
|
||||
|
||||
\list
|
||||
|
||||
\li "unicode-0.9" or "unicode-0201" for Unicode style. This assumes
|
||||
JISX0201 for 0x00-0x7f. (0.9 is a table version of jisx02xx mapping
|
||||
used for Unicode 1.1.)
|
||||
|
||||
\li "unicode-ascii" This assumes US-ASCII for 0x00-0x7f; some
|
||||
chars (JISX0208 0x2140 and JISX0212 0x2237) are different from
|
||||
Unicode 1.1 to avoid conflict.
|
||||
|
||||
\li "open-19970715-0201" ("open-0201" for convenience) or
|
||||
"jisx0221-1995" for JISX0221-JISX0201 style. JIS X 0221 is JIS
|
||||
version of Unicode, but a few chars (0x5c, 0x7e, 0x2140, 0x216f,
|
||||
0x2131) are different from Unicode 1.1. This is used when 0x5c is
|
||||
treated as YEN SIGN.
|
||||
|
||||
\li "open-19970715-ascii" ("open-ascii" for convenience) for
|
||||
JISX0221-ASCII style. This is used when 0x5c is treated as REVERSE
|
||||
SOLIDUS.
|
||||
|
||||
\li "open-19970715-ms" ("open-ms" for convenience) or "cp932" for
|
||||
Microsoft Windows style. Windows Code Page 932. Some chars (0x2140,
|
||||
0x2141, 0x2142, 0x215d, 0x2171, 0x2172) are different from Unicode
|
||||
1.1.
|
||||
|
||||
\li "jdk1.1.7" for Sun's JDK style. Same as Unicode 1.1, except that
|
||||
JIS 0x2140 is mapped to UFF3C. Either ASCII or JISX0201 can be used
|
||||
for 0x00-0x7f.
|
||||
|
||||
\endlist
|
||||
|
||||
In addition, the extensions "nec-vdc", "ibm-vdc" and "udc" are
|
||||
supported.
|
||||
|
||||
For example, if you want to use Unicode style conversion but with
|
||||
NEC's extension, set \c UNICODEMAP_JP to \c {unicode-0.9,
|
||||
nec-vdc}. (You will probably need to quote that in a shell
|
||||
command.)
|
||||
|
||||
Most of the code here was written by Serika Kurusugawa,
|
||||
a.k.a. Junji Takagi, and is included in Qt with the author's
|
||||
permission and the grateful thanks of the Qt team.
|
||||
|
||||
\sa{Text Codec: ISO 2022-JP (JIS)}
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page codec-sjis.html
|
||||
\title Shift-JIS Text Codec
|
||||
\ingroup codecs
|
||||
|
||||
The Shift-JIS codec provides conversion to and from Shift-JIS, an
|
||||
encoding of JIS X 0201 Latin, JIS X 0201 Kana and JIS X 0208.
|
||||
|
||||
The environment variable \c UNICODEMAP_JP can be used to
|
||||
fine-tune the codec. The \l{ISO 2022-JP (JIS) Text Codec}
|
||||
documentation describes how to use this variable.
|
||||
|
||||
Most of the code here was written by Serika Kurusugawa, a.k.a.
|
||||
Junji Takagi, and is included in Qt with the author's permission
|
||||
and the grateful thanks of the Qt team. Here is the
|
||||
copyright statement for the code as it was at the point of
|
||||
contribution. The subsequent modifications are covered by
|
||||
the usual copyright for Qt.
|
||||
|
||||
\sa{Text Codec: Shift-JIS}
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page codec-tscii.html
|
||||
\title TSCII Text Codec
|
||||
\ingroup codecs
|
||||
|
||||
The TSCII codec provides conversion to and from the Tamil TSCII
|
||||
encoding.
|
||||
|
||||
TSCII, formally the Tamil Standard Code Information Interchange
|
||||
specification, is a commonly used charset for Tamils. The
|
||||
official page for the standard is \l{Information Technology in Tamil}
|
||||
|
||||
Tamil uses composed Unicode which might cause some
|
||||
problems if you are using Unicode fonts instead of TSCII fonts.
|
||||
A Tamil codepage layout can be found on \l {Tamil Script Code}.
|
||||
|
||||
Most of the code was written by Hans Petter Bieker and is
|
||||
included in Qt with the author's permission and the grateful
|
||||
thanks of the Qt team.
|
||||
|
||||
\sa{Text Codec: TSCII}
|
||||
*/
|
@ -1,648 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CP949CODETBL_P_H
|
||||
#define CP949CODETBL_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists for the convenience
|
||||
// of other Qt classes. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
|
||||
static const unsigned short cp949_icode_to_unicode[] = {
|
||||
0xac02, 0xac03, 0xac05, 0xac06, 0xac0b, 0xac0c, 0xac0d, 0xac0e, 0xac0f, 0xac18, 0xac1e, 0xac1f, 0xac21, 0xac22, 0xac23,
|
||||
0xac25, 0xac26, 0xac27, 0xac28, 0xac29, 0xac2a, 0xac2b, 0xac2e, 0xac32, 0xac33, 0xac34, 0xac35, 0xac36, 0xac37, 0xac3a,
|
||||
0xac3b, 0xac3d, 0xac3e, 0xac3f, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, 0xac48, 0xac49, 0xac4a, 0xac4c,
|
||||
0xac4e, 0xac4f, 0xac50, 0xac51, 0xac52, 0xac53, 0xac55, 0xac56, 0xac57, 0xac59, 0xac5a, 0xac5b, 0xac5d, 0xac5e, 0xac5f,
|
||||
0xac60, 0xac61, 0xac62, 0xac63, 0xac64, 0xac65, 0xac66, 0xac67, 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c, 0xac6d, 0xac6e,
|
||||
0xac6f, 0xac72, 0xac73, 0xac75, 0xac76, 0xac79, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac7f, 0xac82, 0xac87, 0xac88, 0xac8d,
|
||||
0xac8e, 0xac8f, 0xac91, 0xac92, 0xac93, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99, 0xac9a, 0xac9b, 0xac9e, 0xaca2, 0xaca3,
|
||||
0xaca4, 0xaca5, 0xaca6, 0xaca7, 0xacab, 0xacad, 0xacae, 0xacb1, 0xacb2, 0xacb3, 0xacb4, 0xacb5, 0xacb6, 0xacb7, 0xacba,
|
||||
0xacbe, 0xacbf, 0xacc0, 0xacc2, 0xacc3, 0xacc5, 0xacc6, 0xacc7, 0xacc9, 0xacca, 0xaccb, 0xaccd, 0xacce, 0xaccf, 0xacd0,
|
||||
0xacd1, 0xacd2, 0xacd3, 0xacd4, 0xacd6, 0xacd8, 0xacd9, 0xacda, 0xacdb, 0xacdc, 0xacdd, 0xacde, 0xacdf, 0xace2, 0xace3,
|
||||
0xace5, 0xace6, 0xace9, 0xaceb, 0xaced, 0xacee, 0xacf2, 0xacf4, 0xacf7, 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0xacfe, 0xacff,
|
||||
0xad01, 0xad02, 0xad03, 0xad05, 0xad07, 0xad08, 0xad09, 0xad0a, 0xad0b, 0xad0e, 0xad10, 0xad12, 0xad13, 0xad14, 0xad15,
|
||||
0xad16, 0xad17, 0xad19, 0xad1a, 0xad1b, 0xad1d, 0xad1e, 0xad1f, 0xad21, 0xad22, 0xad23, 0xad24, 0xad25, 0xad26, 0xad27,
|
||||
0xad28, 0xad2a, 0xad2b, 0xad2e, 0xad2f, 0xad30, 0xad31, 0xad32, 0xad33, 0xad36, 0xad37, 0xad39, 0xad3a, 0xad3b, 0xad3d,
|
||||
0xad3e, 0xad3f, 0xad40, 0xad41, 0xad42, 0xad43, 0xad46, 0xad48, 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0xad51,
|
||||
0xad52, 0xad53, 0xad55, 0xad56, 0xad57, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, 0xad60, 0xad62, 0xad64,
|
||||
0xad65, 0xad66, 0xad67, 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6e, 0xad6f, 0xad71, 0xad72, 0xad77, 0xad78, 0xad79, 0xad7a,
|
||||
0xad7e, 0xad80, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, 0xad8a, 0xad8b, 0xad8d, 0xad8e, 0xad8f, 0xad91, 0xad92, 0xad93,
|
||||
0xad94, 0xad95, 0xad96, 0xad97, 0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9e, 0xad9f, 0xada0, 0xada1, 0xada2, 0xada3, 0xada5,
|
||||
0xada6, 0xada7, 0xada8, 0xada9, 0xadaa, 0xadab, 0xadac, 0xadad, 0xadae, 0xadaf, 0xadb0, 0xadb1, 0xadb2, 0xadb3, 0xadb4,
|
||||
0xadb5, 0xadb6, 0xadb8, 0xadb9, 0xadba, 0xadbb, 0xadbc, 0xadbd, 0xadbe, 0xadbf, 0xadc2, 0xadc3, 0xadc5, 0xadc6, 0xadc7,
|
||||
0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce, 0xadcf, 0xadd2, 0xadd4, 0xadd5, 0xadd6, 0xadd7, 0xadd8, 0xadd9, 0xadda,
|
||||
0xaddb, 0xaddd, 0xadde, 0xaddf, 0xade1, 0xade2, 0xade3, 0xade5, 0xade6, 0xade7, 0xade8, 0xade9, 0xadea, 0xadeb, 0xadec,
|
||||
0xaded, 0xadee, 0xadef, 0xadf0, 0xadf1, 0xadf2, 0xadf3, 0xadf4, 0xadf5, 0xadf6, 0xadf7, 0xadfa, 0xadfb, 0xadfd, 0xadfe,
|
||||
0xae02, 0xae03, 0xae04, 0xae05, 0xae06, 0xae07, 0xae0a, 0xae0c, 0xae0e, 0xae0f, 0xae10, 0xae11, 0xae12, 0xae13, 0xae15,
|
||||
0xae16, 0xae17, 0xae18, 0xae19, 0xae1a, 0xae1b, 0xae1c, 0xae1d, 0xae1e, 0xae1f, 0xae20, 0xae21, 0xae22, 0xae23, 0xae24,
|
||||
0xae25, 0xae26, 0xae27, 0xae28, 0xae29, 0xae2a, 0xae2b, 0xae2c, 0xae2d, 0xae2e, 0xae2f, 0xae32, 0xae33, 0xae35, 0xae36,
|
||||
0xae39, 0xae3b, 0xae3c, 0xae3d, 0xae3e, 0xae3f, 0xae42, 0xae44, 0xae47, 0xae48, 0xae49, 0xae4b, 0xae4f, 0xae51, 0xae52,
|
||||
0xae53, 0xae55, 0xae57, 0xae58, 0xae59, 0xae5a, 0xae5b, 0xae5e, 0xae62, 0xae63, 0xae64, 0xae66, 0xae67, 0xae6a, 0xae6b,
|
||||
0xae6d, 0xae6e, 0xae6f, 0xae71, 0xae72, 0xae73, 0xae74, 0xae75, 0xae76, 0xae77, 0xae7a, 0xae7e, 0xae7f, 0xae80, 0xae81,
|
||||
0xae82, 0xae83, 0xae86, 0xae87, 0xae88, 0xae89, 0xae8a, 0xae8b, 0xae8d, 0xae8e, 0xae8f, 0xae90, 0xae91, 0xae92, 0xae93,
|
||||
0xae94, 0xae95, 0xae96, 0xae97, 0xae98, 0xae99, 0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xae9e, 0xae9f, 0xaea0, 0xaea1, 0xaea2,
|
||||
0xaea3, 0xaea4, 0xaea5, 0xaea6, 0xaea7, 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac, 0xaead, 0xaeae, 0xaeaf, 0xaeb0, 0xaeb1,
|
||||
0xaeb2, 0xaeb3, 0xaeb4, 0xaeb5, 0xaeb6, 0xaeb7, 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0xaebf, 0xaec1, 0xaec2, 0xaec3, 0xaec5,
|
||||
0xaec6, 0xaec7, 0xaec8, 0xaec9, 0xaeca, 0xaecb, 0xaece, 0xaed2, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7, 0xaeda, 0xaedb,
|
||||
0xaedd, 0xaede, 0xaedf, 0xaee0, 0xaee1, 0xaee2, 0xaee3, 0xaee4, 0xaee5, 0xaee6, 0xaee7, 0xaee9, 0xaeea, 0xaeec, 0xaeee,
|
||||
0xaeef, 0xaef0, 0xaef1, 0xaef2, 0xaef3, 0xaef5, 0xaef6, 0xaef7, 0xaef9, 0xaefa, 0xaefb, 0xaefd, 0xaefe, 0xaeff, 0xaf00,
|
||||
0xaf01, 0xaf02, 0xaf03, 0xaf04, 0xaf05, 0xaf06, 0xaf09, 0xaf0a, 0xaf0b, 0xaf0c, 0xaf0e, 0xaf0f, 0xaf11, 0xaf12, 0xaf13,
|
||||
0xaf14, 0xaf15, 0xaf16, 0xaf17, 0xaf18, 0xaf19, 0xaf1a, 0xaf1b, 0xaf1c, 0xaf1d, 0xaf1e, 0xaf1f, 0xaf20, 0xaf21, 0xaf22,
|
||||
0xaf23, 0xaf24, 0xaf25, 0xaf26, 0xaf27, 0xaf28, 0xaf29, 0xaf2a, 0xaf2b, 0xaf2e, 0xaf2f, 0xaf31, 0xaf33, 0xaf35, 0xaf36,
|
||||
0xaf37, 0xaf38, 0xaf39, 0xaf3a, 0xaf3b, 0xaf3e, 0xaf40, 0xaf44, 0xaf45, 0xaf46, 0xaf47, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d,
|
||||
0xaf4e, 0xaf4f, 0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, 0xaf58, 0xaf59, 0xaf5a, 0xaf5b, 0xaf5e, 0xaf5f,
|
||||
0xaf60, 0xaf61, 0xaf62, 0xaf63, 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70,
|
||||
0xaf71, 0xaf72, 0xaf73, 0xaf74, 0xaf75, 0xaf76, 0xaf77, 0xaf78, 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, 0xaf7e, 0xaf7f, 0xaf81,
|
||||
0xaf82, 0xaf83, 0xaf85, 0xaf86, 0xaf87, 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f, 0xaf92, 0xaf93, 0xaf94,
|
||||
0xaf96, 0xaf97, 0xaf98, 0xaf99, 0xaf9a, 0xaf9b, 0xaf9d, 0xaf9e, 0xaf9f, 0xafa0, 0xafa1, 0xafa2, 0xafa3, 0xafa4, 0xafa5,
|
||||
0xafa6, 0xafa7, 0xafa8, 0xafa9, 0xafaa, 0xafab, 0xafac, 0xafad, 0xafae, 0xafaf, 0xafb0, 0xafb1, 0xafb2, 0xafb3, 0xafb4,
|
||||
0xafb5, 0xafb6, 0xafb7, 0xafba, 0xafbb, 0xafbd, 0xafbe, 0xafbf, 0xafc1, 0xafc2, 0xafc3, 0xafc4, 0xafc5, 0xafc6, 0xafca,
|
||||
0xafcc, 0xafcf, 0xafd0, 0xafd1, 0xafd2, 0xafd3, 0xafd5, 0xafd6, 0xafd7, 0xafd8, 0xafd9, 0xafda, 0xafdb, 0xafdd, 0xafde,
|
||||
0xafdf, 0xafe0, 0xafe1, 0xafe2, 0xafe3, 0xafe4, 0xafe5, 0xafe6, 0xafe7, 0xafea, 0xafeb, 0xafec, 0xafed, 0xafee, 0xafef,
|
||||
0xaff2, 0xaff3, 0xaff5, 0xaff6, 0xaff7, 0xaff9, 0xaffa, 0xaffb, 0xaffc, 0xaffd, 0xaffe, 0xafff, 0xb002, 0xb003, 0xb005,
|
||||
0xb006, 0xb007, 0xb008, 0xb009, 0xb00a, 0xb00b, 0xb00d, 0xb00e, 0xb00f, 0xb011, 0xb012, 0xb013, 0xb015, 0xb016, 0xb017,
|
||||
0xb018, 0xb019, 0xb01a, 0xb01b, 0xb01e, 0xb01f, 0xb020, 0xb021, 0xb022, 0xb023, 0xb024, 0xb025, 0xb026, 0xb027, 0xb029,
|
||||
0xb02a, 0xb02b, 0xb02c, 0xb02d, 0xb02e, 0xb02f, 0xb030, 0xb031, 0xb032, 0xb033, 0xb034, 0xb035, 0xb036, 0xb037, 0xb038,
|
||||
0xb039, 0xb03a, 0xb03b, 0xb03c, 0xb03d, 0xb03e, 0xb03f, 0xb040, 0xb041, 0xb042, 0xb043, 0xb046, 0xb047, 0xb049, 0xb04b,
|
||||
0xb04d, 0xb04f, 0xb050, 0xb051, 0xb052, 0xb056, 0xb058, 0xb05a, 0xb05b, 0xb05c, 0xb05e, 0xb05f, 0xb060, 0xb061, 0xb062,
|
||||
0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, 0xb06f, 0xb070, 0xb071,
|
||||
0xb072, 0xb073, 0xb074, 0xb075, 0xb076, 0xb077, 0xb078, 0xb079, 0xb07a, 0xb07b, 0xb07e, 0xb07f, 0xb081, 0xb082, 0xb083,
|
||||
0xb085, 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a, 0xb08b, 0xb08e, 0xb090, 0xb092, 0xb093, 0xb094, 0xb095, 0xb096, 0xb097,
|
||||
0xb09b, 0xb09d, 0xb09e, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7, 0xb0aa, 0xb0b0, 0xb0b2, 0xb0b6, 0xb0b7, 0xb0b9, 0xb0ba,
|
||||
0xb0bb, 0xb0bd, 0xb0be, 0xb0bf, 0xb0c0, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c6, 0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd, 0xb0ce, 0xb0cf,
|
||||
0xb0d2, 0xb0d3, 0xb0d5, 0xb0d6, 0xb0d7, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, 0xb0de, 0xb0df, 0xb0e1, 0xb0e2, 0xb0e3,
|
||||
0xb0e4, 0xb0e6, 0xb0e7, 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, 0xb0f0, 0xb0f1, 0xb0f2, 0xb0f3,
|
||||
0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9, 0xb0fa, 0xb0fb, 0xb0fc, 0xb0fd, 0xb0fe, 0xb0ff, 0xb100, 0xb101, 0xb102,
|
||||
0xb103, 0xb104, 0xb105, 0xb106, 0xb107, 0xb10a, 0xb10d, 0xb10e, 0xb10f, 0xb111, 0xb114, 0xb115, 0xb116, 0xb117, 0xb11a,
|
||||
0xb11e, 0xb11f, 0xb120, 0xb121, 0xb122, 0xb126, 0xb127, 0xb129, 0xb12a, 0xb12b, 0xb12d, 0xb12e, 0xb12f, 0xb130, 0xb131,
|
||||
0xb132, 0xb133, 0xb136, 0xb13a, 0xb13b, 0xb13c, 0xb13d, 0xb13e, 0xb13f, 0xb142, 0xb143, 0xb145, 0xb146, 0xb147, 0xb149,
|
||||
0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e, 0xb14f, 0xb152, 0xb153, 0xb156, 0xb157, 0xb159, 0xb15a, 0xb15b, 0xb15d, 0xb15e,
|
||||
0xb15f, 0xb161, 0xb162, 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, 0xb168, 0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e,
|
||||
0xb16f, 0xb170, 0xb171, 0xb172, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, 0xb17a, 0xb17b, 0xb17d, 0xb17e, 0xb17f, 0xb181,
|
||||
0xb183, 0xb184, 0xb185, 0xb186, 0xb187, 0xb18a, 0xb18c, 0xb18e, 0xb18f, 0xb190, 0xb191, 0xb195, 0xb196, 0xb197, 0xb199,
|
||||
0xb19a, 0xb19b, 0xb19d, 0xb19e, 0xb19f, 0xb1a0, 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xb1a5, 0xb1a6, 0xb1a7, 0xb1a9, 0xb1aa,
|
||||
0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, 0xb1b0, 0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7, 0xb1b8, 0xb1b9,
|
||||
0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, 0xb1bf, 0xb1c0, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, 0xb1c5, 0xb1c6, 0xb1c7, 0xb1c8,
|
||||
0xb1c9, 0xb1ca, 0xb1cb, 0xb1cd, 0xb1ce, 0xb1cf, 0xb1d1, 0xb1d2, 0xb1d3, 0xb1d5, 0xb1d6, 0xb1d7, 0xb1d8, 0xb1d9, 0xb1da,
|
||||
0xb1db, 0xb1de, 0xb1e0, 0xb1e1, 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0xb1ea, 0xb1eb, 0xb1ed, 0xb1ee, 0xb1ef,
|
||||
0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6, 0xb1f7, 0xb1f8, 0xb1fa, 0xb1fc, 0xb1fe, 0xb1ff, 0xb200, 0xb201, 0xb202,
|
||||
0xb203, 0xb206, 0xb207, 0xb209, 0xb20a, 0xb20d, 0xb20e, 0xb20f, 0xb210, 0xb211, 0xb212, 0xb213, 0xb216, 0xb218, 0xb21a,
|
||||
0xb21b, 0xb21c, 0xb21d, 0xb21e, 0xb21f, 0xb221, 0xb222, 0xb223, 0xb224, 0xb225, 0xb226, 0xb227, 0xb228, 0xb229, 0xb22a,
|
||||
0xb22b, 0xb22c, 0xb22d, 0xb22e, 0xb22f, 0xb230, 0xb231, 0xb232, 0xb233, 0xb235, 0xb236, 0xb237, 0xb238, 0xb239, 0xb23a,
|
||||
0xb23b, 0xb23d, 0xb23e, 0xb23f, 0xb240, 0xb241, 0xb242, 0xb243, 0xb244, 0xb245, 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a,
|
||||
0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb252, 0xb253, 0xb254, 0xb255, 0xb256, 0xb257, 0xb259, 0xb25a,
|
||||
0xb25b, 0xb25d, 0xb25e, 0xb25f, 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, 0xb267, 0xb26a, 0xb26b, 0xb26c, 0xb26d,
|
||||
0xb26e, 0xb26f, 0xb270, 0xb271, 0xb272, 0xb273, 0xb276, 0xb277, 0xb278, 0xb279, 0xb27a, 0xb27b, 0xb27d, 0xb27e, 0xb27f,
|
||||
0xb280, 0xb281, 0xb282, 0xb283, 0xb286, 0xb287, 0xb288, 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xb28f, 0xb292, 0xb293,
|
||||
0xb295, 0xb296, 0xb297, 0xb29b, 0xb29c, 0xb29d, 0xb29e, 0xb29f, 0xb2a2, 0xb2a4, 0xb2a7, 0xb2a8, 0xb2a9, 0xb2ab, 0xb2ad,
|
||||
0xb2ae, 0xb2af, 0xb2b1, 0xb2b2, 0xb2b3, 0xb2b5, 0xb2b6, 0xb2b7, 0xb2b8, 0xb2b9, 0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2be,
|
||||
0xb2bf, 0xb2c0, 0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6, 0xb2c7, 0xb2ca, 0xb2cb, 0xb2cd, 0xb2ce, 0xb2cf, 0xb2d1,
|
||||
0xb2d3, 0xb2d4, 0xb2d5, 0xb2d6, 0xb2d7, 0xb2da, 0xb2dc, 0xb2de, 0xb2df, 0xb2e0, 0xb2e1, 0xb2e3, 0xb2e7, 0xb2e9, 0xb2ea,
|
||||
0xb2f0, 0xb2f1, 0xb2f2, 0xb2f6, 0xb2fc, 0xb2fd, 0xb2fe, 0xb302, 0xb303, 0xb305, 0xb306, 0xb307, 0xb309, 0xb30a, 0xb30b,
|
||||
0xb30c, 0xb30d, 0xb30e, 0xb30f, 0xb312, 0xb316, 0xb317, 0xb318, 0xb319, 0xb31a, 0xb31b, 0xb31d, 0xb31e, 0xb31f, 0xb320,
|
||||
0xb321, 0xb322, 0xb323, 0xb324, 0xb325, 0xb326, 0xb327, 0xb328, 0xb329, 0xb32a, 0xb32b, 0xb32c, 0xb32d, 0xb32e, 0xb32f,
|
||||
0xb330, 0xb331, 0xb332, 0xb333, 0xb334, 0xb335, 0xb336, 0xb337, 0xb338, 0xb339, 0xb33a, 0xb33b, 0xb33c, 0xb33d, 0xb33e,
|
||||
0xb33f, 0xb340, 0xb341, 0xb342, 0xb343, 0xb344, 0xb345, 0xb346, 0xb347, 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c, 0xb34d,
|
||||
0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, 0xb353, 0xb357, 0xb359, 0xb35a, 0xb35d, 0xb360, 0xb361, 0xb362, 0xb363, 0xb366,
|
||||
0xb368, 0xb36a, 0xb36c, 0xb36d, 0xb36f, 0xb372, 0xb373, 0xb375, 0xb376, 0xb377, 0xb379, 0xb37a, 0xb37b, 0xb37c, 0xb37d,
|
||||
0xb37e, 0xb37f, 0xb382, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0xb38d, 0xb38e, 0xb38f, 0xb391, 0xb392, 0xb393,
|
||||
0xb395, 0xb396, 0xb397, 0xb398, 0xb399, 0xb39a, 0xb39b, 0xb39c, 0xb39d, 0xb39e, 0xb39f, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5,
|
||||
0xb3a6, 0xb3a7, 0xb3a9, 0xb3aa, 0xb3ab, 0xb3ad, 0xb3ae, 0xb3af, 0xb3b0, 0xb3b1, 0xb3b2, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6,
|
||||
0xb3b7, 0xb3b8, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd, 0xb3be, 0xb3bf, 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0xb3c6, 0xb3c7,
|
||||
0xb3c9, 0xb3ca, 0xb3cd, 0xb3cf, 0xb3d1, 0xb3d2, 0xb3d3, 0xb3d6, 0xb3d8, 0xb3da, 0xb3dc, 0xb3de, 0xb3df, 0xb3e1, 0xb3e2,
|
||||
0xb3e3, 0xb3e5, 0xb3e6, 0xb3e7, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee, 0xb3ef, 0xb3f0, 0xb3f1, 0xb3f2, 0xb3f3,
|
||||
0xb3f4, 0xb3f5, 0xb3f6, 0xb3f7, 0xb3f8, 0xb3f9, 0xb3fa, 0xb3fb, 0xb3fd, 0xb3fe, 0xb3ff, 0xb400, 0xb401, 0xb402, 0xb403,
|
||||
0xb404, 0xb405, 0xb406, 0xb407, 0xb408, 0xb409, 0xb40a, 0xb40b, 0xb40c, 0xb40d, 0xb40e, 0xb40f, 0xb411, 0xb412, 0xb413,
|
||||
0xb414, 0xb415, 0xb416, 0xb417, 0xb419, 0xb41a, 0xb41b, 0xb41d, 0xb41e, 0xb41f, 0xb421, 0xb422, 0xb423, 0xb424, 0xb425,
|
||||
0xb426, 0xb427, 0xb42a, 0xb42c, 0xb42d, 0xb42e, 0xb42f, 0xb430, 0xb431, 0xb432, 0xb433, 0xb435, 0xb436, 0xb437, 0xb438,
|
||||
0xb439, 0xb43a, 0xb43b, 0xb43c, 0xb43d, 0xb43e, 0xb43f, 0xb440, 0xb441, 0xb442, 0xb443, 0xb444, 0xb445, 0xb446, 0xb447,
|
||||
0xb448, 0xb449, 0xb44a, 0xb44b, 0xb44c, 0xb44d, 0xb44e, 0xb44f, 0xb452, 0xb453, 0xb455, 0xb456, 0xb457, 0xb459, 0xb45a,
|
||||
0xb45b, 0xb45c, 0xb45d, 0xb45e, 0xb45f, 0xb462, 0xb464, 0xb466, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46d, 0xb46e,
|
||||
0xb46f, 0xb470, 0xb471, 0xb472, 0xb473, 0xb474, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xb47d,
|
||||
0xb47e, 0xb47f, 0xb481, 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e,
|
||||
0xb48f, 0xb490, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, 0xb496, 0xb497, 0xb498, 0xb499, 0xb49a, 0xb49b, 0xb49c, 0xb49e,
|
||||
0xb49f, 0xb4a0, 0xb4a1, 0xb4a2, 0xb4a3, 0xb4a5, 0xb4a6, 0xb4a7, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ad, 0xb4ae, 0xb4af, 0xb4b0,
|
||||
0xb4b1, 0xb4b2, 0xb4b3, 0xb4b4, 0xb4b6, 0xb4b8, 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf, 0xb4c1, 0xb4c2, 0xb4c3,
|
||||
0xb4c5, 0xb4c6, 0xb4c7, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce, 0xb4cf, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d6,
|
||||
0xb4d7, 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0xb4de, 0xb4df, 0xb4e1, 0xb4e2, 0xb4e5, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea, 0xb4eb,
|
||||
0xb4ee, 0xb4f0, 0xb4f2, 0xb4f3, 0xb4f4, 0xb4f5, 0xb4f6, 0xb4f7, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe, 0xb4ff,
|
||||
0xb500, 0xb501, 0xb502, 0xb503, 0xb504, 0xb505, 0xb506, 0xb507, 0xb508, 0xb509, 0xb50a, 0xb50b, 0xb50c, 0xb50d, 0xb50e,
|
||||
0xb50f, 0xb510, 0xb511, 0xb512, 0xb513, 0xb516, 0xb517, 0xb519, 0xb51a, 0xb51d, 0xb51e, 0xb51f, 0xb520, 0xb521, 0xb522,
|
||||
0xb523, 0xb526, 0xb52b, 0xb52c, 0xb52d, 0xb52e, 0xb52f, 0xb532, 0xb533, 0xb535, 0xb536, 0xb537, 0xb539, 0xb53a, 0xb53b,
|
||||
0xb53c, 0xb53d, 0xb53e, 0xb53f, 0xb542, 0xb546, 0xb547, 0xb548, 0xb549, 0xb54a, 0xb54e, 0xb54f, 0xb551, 0xb552, 0xb553,
|
||||
0xb555, 0xb556, 0xb557, 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55e, 0xb562, 0xb563, 0xb564, 0xb565, 0xb566, 0xb567, 0xb568,
|
||||
0xb569, 0xb56a, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xb56f, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, 0xb576, 0xb577,
|
||||
0xb578, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d, 0xb57e, 0xb57f, 0xb580, 0xb581, 0xb582, 0xb583, 0xb584, 0xb585, 0xb586,
|
||||
0xb587, 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, 0xb590, 0xb591, 0xb592, 0xb593, 0xb594, 0xb595,
|
||||
0xb596, 0xb597, 0xb598, 0xb599, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb59e, 0xb59f, 0xb5a2, 0xb5a3, 0xb5a5, 0xb5a6, 0xb5a7,
|
||||
0xb5a9, 0xb5ac, 0xb5ad, 0xb5ae, 0xb5af, 0xb5b2, 0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5be, 0xb5bf, 0xb5c1, 0xb5c2,
|
||||
0xb5c3, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8, 0xb5c9, 0xb5ca, 0xb5cb, 0xb5ce, 0xb5d2, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7,
|
||||
0xb5d9, 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5de, 0xb5df, 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6, 0xb5e7,
|
||||
0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ed, 0xb5ee, 0xb5ef, 0xb5f0, 0xb5f1, 0xb5f2, 0xb5f3, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7,
|
||||
0xb5f8, 0xb5f9, 0xb5fa, 0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb5ff, 0xb600, 0xb601, 0xb602, 0xb603, 0xb604, 0xb605, 0xb606,
|
||||
0xb607, 0xb608, 0xb609, 0xb60a, 0xb60b, 0xb60c, 0xb60d, 0xb60e, 0xb60f, 0xb612, 0xb613, 0xb615, 0xb616, 0xb617, 0xb619,
|
||||
0xb61a, 0xb61b, 0xb61c, 0xb61d, 0xb61e, 0xb61f, 0xb620, 0xb621, 0xb622, 0xb623, 0xb624, 0xb626, 0xb627, 0xb628, 0xb629,
|
||||
0xb62a, 0xb62b, 0xb62d, 0xb62e, 0xb62f, 0xb630, 0xb631, 0xb632, 0xb633, 0xb635, 0xb636, 0xb637, 0xb638, 0xb639, 0xb63a,
|
||||
0xb63b, 0xb63c, 0xb63d, 0xb63e, 0xb63f, 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, 0xb649, 0xb64a,
|
||||
0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, 0xb652, 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659,
|
||||
0xb65a, 0xb65b, 0xb65c, 0xb65d, 0xb65e, 0xb65f, 0xb660, 0xb661, 0xb662, 0xb663, 0xb665, 0xb666, 0xb667, 0xb669, 0xb66a,
|
||||
0xb66b, 0xb66c, 0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb672, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677, 0xb678, 0xb679,
|
||||
0xb67a, 0xb67b, 0xb67c, 0xb67d, 0xb67e, 0xb67f, 0xb680, 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688,
|
||||
0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, 0xb68f, 0xb690, 0xb691, 0xb692, 0xb693, 0xb694, 0xb695, 0xb696, 0xb697,
|
||||
0xb698, 0xb699, 0xb69a, 0xb69b, 0xb69e, 0xb69f, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a5, 0xb6a6, 0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa,
|
||||
0xb6ad, 0xb6ae, 0xb6af, 0xb6b0, 0xb6b2, 0xb6b3, 0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7, 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc,
|
||||
0xb6bd, 0xb6be, 0xb6bf, 0xb6c0, 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, 0xb6c7, 0xb6c8, 0xb6c9, 0xb6ca, 0xb6cb,
|
||||
0xb6cc, 0xb6cd, 0xb6ce, 0xb6cf, 0xb6d0, 0xb6d1, 0xb6d2, 0xb6d3, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8, 0xb6d9, 0xb6da, 0xb6db,
|
||||
0xb6dc, 0xb6dd, 0xb6de, 0xb6df, 0xb6e0, 0xb6e1, 0xb6e2, 0xb6e3, 0xb6e4, 0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9, 0xb6ea,
|
||||
0xb6eb, 0xb6ec, 0xb6ed, 0xb6ee, 0xb6ef, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f5, 0xb6f6, 0xb6f7, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc,
|
||||
0xb6fd, 0xb6fe, 0xb6ff, 0xb702, 0xb703, 0xb704, 0xb706, 0xb707, 0xb708, 0xb709, 0xb70a, 0xb70b, 0xb70c, 0xb70d, 0xb70e,
|
||||
0xb70f, 0xb710, 0xb711, 0xb712, 0xb713, 0xb714, 0xb715, 0xb716, 0xb717, 0xb718, 0xb719, 0xb71a, 0xb71b, 0xb71c, 0xb71d,
|
||||
0xb71e, 0xb71f, 0xb720, 0xb721, 0xb722, 0xb723, 0xb724, 0xb725, 0xb726, 0xb727, 0xb72a, 0xb72b, 0xb72d, 0xb72e, 0xb731,
|
||||
0xb732, 0xb733, 0xb734, 0xb735, 0xb736, 0xb737, 0xb73a, 0xb73c, 0xb73d, 0xb73e, 0xb73f, 0xb740, 0xb741, 0xb742, 0xb743,
|
||||
0xb745, 0xb746, 0xb747, 0xb749, 0xb74a, 0xb74b, 0xb74d, 0xb74e, 0xb74f, 0xb750, 0xb751, 0xb752, 0xb753, 0xb756, 0xb757,
|
||||
0xb758, 0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xb75f, 0xb761, 0xb762, 0xb763, 0xb765, 0xb766, 0xb767, 0xb769,
|
||||
0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xb76e, 0xb76f, 0xb772, 0xb774, 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77e,
|
||||
0xb77f, 0xb781, 0xb782, 0xb783, 0xb785, 0xb786, 0xb787, 0xb788, 0xb789, 0xb78a, 0xb78b, 0xb78e, 0xb793, 0xb794, 0xb795,
|
||||
0xb79a, 0xb79b, 0xb79d, 0xb79e, 0xb79f, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6, 0xb7a7, 0xb7aa, 0xb7ae, 0xb7af,
|
||||
0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, 0xb7b6, 0xb7b7, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, 0xb7be, 0xb7bf, 0xb7c0, 0xb7c1,
|
||||
0xb7c2, 0xb7c3, 0xb7c4, 0xb7c5, 0xb7c6, 0xb7c8, 0xb7ca, 0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf, 0xb7d0, 0xb7d1, 0xb7d2,
|
||||
0xb7d3, 0xb7d4, 0xb7d5, 0xb7d6, 0xb7d7, 0xb7d8, 0xb7d9, 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de, 0xb7df, 0xb7e0, 0xb7e1,
|
||||
0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5, 0xb7e6, 0xb7e7, 0xb7e8, 0xb7e9, 0xb7ea, 0xb7eb, 0xb7ee, 0xb7ef, 0xb7f1, 0xb7f2, 0xb7f3,
|
||||
0xb7f5, 0xb7f6, 0xb7f7, 0xb7f8, 0xb7f9, 0xb7fa, 0xb7fb, 0xb7fe, 0xb802, 0xb803, 0xb804, 0xb805, 0xb806, 0xb80a, 0xb80b,
|
||||
0xb80d, 0xb80e, 0xb80f, 0xb811, 0xb812, 0xb813, 0xb814, 0xb815, 0xb816, 0xb817, 0xb81a, 0xb81c, 0xb81e, 0xb81f, 0xb820,
|
||||
0xb821, 0xb822, 0xb823, 0xb826, 0xb827, 0xb829, 0xb82a, 0xb82b, 0xb82d, 0xb82e, 0xb82f, 0xb830, 0xb831, 0xb832, 0xb833,
|
||||
0xb836, 0xb83a, 0xb83b, 0xb83c, 0xb83d, 0xb83e, 0xb83f, 0xb841, 0xb842, 0xb843, 0xb845, 0xb846, 0xb847, 0xb848, 0xb849,
|
||||
0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e, 0xb84f, 0xb850, 0xb852, 0xb854, 0xb855, 0xb856, 0xb857, 0xb858, 0xb859, 0xb85a,
|
||||
0xb85b, 0xb85e, 0xb85f, 0xb861, 0xb862, 0xb863, 0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a, 0xb86b, 0xb86e, 0xb870,
|
||||
0xb872, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, 0xb879, 0xb87a, 0xb87b, 0xb87d, 0xb87e, 0xb87f, 0xb880, 0xb881, 0xb882,
|
||||
0xb883, 0xb884, 0xb885, 0xb886, 0xb887, 0xb888, 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88e, 0xb88f, 0xb890, 0xb891, 0xb892,
|
||||
0xb893, 0xb894, 0xb895, 0xb896, 0xb897, 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d, 0xb89e, 0xb89f, 0xb8a0, 0xb8a1,
|
||||
0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, 0xb8b1, 0xb8b2,
|
||||
0xb8b3, 0xb8b5, 0xb8b6, 0xb8b7, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8be, 0xb8bf, 0xb8c2, 0xb8c4, 0xb8c6, 0xb8c7,
|
||||
0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d1, 0xb8d2, 0xb8d3, 0xb8d5, 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9,
|
||||
0xb8da, 0xb8db, 0xb8dc, 0xb8de, 0xb8e0, 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, 0xb8ea, 0xb8eb, 0xb8ed, 0xb8ee,
|
||||
0xb8ef, 0xb8f1, 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, 0xb8fa, 0xb8fc, 0xb8fe, 0xb8ff, 0xb900, 0xb901, 0xb902,
|
||||
0xb903, 0xb905, 0xb906, 0xb907, 0xb908, 0xb909, 0xb90a, 0xb90b, 0xb90c, 0xb90d, 0xb90e, 0xb90f, 0xb910, 0xb911, 0xb912,
|
||||
0xb913, 0xb914, 0xb915, 0xb916, 0xb917, 0xb919, 0xb91a, 0xb91b, 0xb91c, 0xb91d, 0xb91e, 0xb91f, 0xb921, 0xb922, 0xb923,
|
||||
0xb924, 0xb925, 0xb926, 0xb927, 0xb928, 0xb929, 0xb92a, 0xb92b, 0xb92c, 0xb92d, 0xb92e, 0xb92f, 0xb930, 0xb931, 0xb932,
|
||||
0xb933, 0xb934, 0xb935, 0xb936, 0xb937, 0xb938, 0xb939, 0xb93a, 0xb93b, 0xb93e, 0xb93f, 0xb941, 0xb942, 0xb943, 0xb945,
|
||||
0xb946, 0xb947, 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94d, 0xb94e, 0xb950, 0xb952, 0xb953, 0xb954, 0xb955, 0xb956, 0xb957,
|
||||
0xb95a, 0xb95b, 0xb95d, 0xb95e, 0xb95f, 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xb96a, 0xb96c, 0xb96e,
|
||||
0xb96f, 0xb970, 0xb971, 0xb972, 0xb973, 0xb976, 0xb977, 0xb979, 0xb97a, 0xb97b, 0xb97d, 0xb97e, 0xb97f, 0xb980, 0xb981,
|
||||
0xb982, 0xb983, 0xb986, 0xb988, 0xb98b, 0xb98c, 0xb98f, 0xb990, 0xb991, 0xb992, 0xb993, 0xb994, 0xb995, 0xb996, 0xb997,
|
||||
0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, 0xb99e, 0xb99f, 0xb9a0, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5, 0xb9a6,
|
||||
0xb9a7, 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0xb9ae, 0xb9af, 0xb9b1, 0xb9b2, 0xb9b3, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8, 0xb9b9,
|
||||
0xb9ba, 0xb9bb, 0xb9be, 0xb9c0, 0xb9c2, 0xb9c3, 0xb9c4, 0xb9c5, 0xb9c6, 0xb9c7, 0xb9ca, 0xb9cb, 0xb9cd, 0xb9d3, 0xb9d4,
|
||||
0xb9d5, 0xb9d6, 0xb9d7, 0xb9da, 0xb9dc, 0xb9df, 0xb9e0, 0xb9e2, 0xb9e6, 0xb9e7, 0xb9e9, 0xb9ea, 0xb9eb, 0xb9ed, 0xb9ee,
|
||||
0xb9ef, 0xb9f0, 0xb9f1, 0xb9f2, 0xb9f3, 0xb9f6, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe, 0xb9ff, 0xba02, 0xba03, 0xba04, 0xba05,
|
||||
0xba06, 0xba07, 0xba09, 0xba0a, 0xba0b, 0xba0c, 0xba0d, 0xba0e, 0xba0f, 0xba10, 0xba11, 0xba12, 0xba13, 0xba14, 0xba16,
|
||||
0xba17, 0xba18, 0xba19, 0xba1a, 0xba1b, 0xba1c, 0xba1d, 0xba1e, 0xba1f, 0xba20, 0xba21, 0xba22, 0xba23, 0xba24, 0xba25,
|
||||
0xba26, 0xba27, 0xba28, 0xba29, 0xba2a, 0xba2b, 0xba2c, 0xba2d, 0xba2e, 0xba2f, 0xba30, 0xba31, 0xba32, 0xba33, 0xba34,
|
||||
0xba35, 0xba36, 0xba37, 0xba3a, 0xba3b, 0xba3d, 0xba3e, 0xba3f, 0xba41, 0xba43, 0xba44, 0xba45, 0xba46, 0xba47, 0xba4a,
|
||||
0xba4c, 0xba4f, 0xba50, 0xba51, 0xba52, 0xba56, 0xba57, 0xba59, 0xba5a, 0xba5b, 0xba5d, 0xba5e, 0xba5f, 0xba60, 0xba61,
|
||||
0xba62, 0xba63, 0xba66, 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba72, 0xba73, 0xba75, 0xba76, 0xba77, 0xba79,
|
||||
0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba7e, 0xba7f, 0xba80, 0xba81, 0xba82, 0xba86, 0xba88, 0xba89, 0xba8a, 0xba8b, 0xba8d,
|
||||
0xba8e, 0xba8f, 0xba90, 0xba91, 0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99, 0xba9a, 0xba9b, 0xba9c,
|
||||
0xba9d, 0xba9e, 0xba9f, 0xbaa0, 0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0xbaaa, 0xbaad, 0xbaae, 0xbaaf,
|
||||
0xbab1, 0xbab3, 0xbab4, 0xbab5, 0xbab6, 0xbab7, 0xbaba, 0xbabc, 0xbabe, 0xbabf, 0xbac0, 0xbac1, 0xbac2, 0xbac3, 0xbac5,
|
||||
0xbac6, 0xbac7, 0xbac9, 0xbaca, 0xbacb, 0xbacc, 0xbacd, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad2, 0xbad3, 0xbad4, 0xbad5,
|
||||
0xbad6, 0xbad7, 0xbada, 0xbadb, 0xbadc, 0xbadd, 0xbade, 0xbadf, 0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6,
|
||||
0xbae7, 0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef, 0xbaf0, 0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5,
|
||||
0xbaf6, 0xbaf7, 0xbaf8, 0xbaf9, 0xbafa, 0xbafb, 0xbafd, 0xbafe, 0xbaff, 0xbb01, 0xbb02, 0xbb03, 0xbb05, 0xbb06, 0xbb07,
|
||||
0xbb08, 0xbb09, 0xbb0a, 0xbb0b, 0xbb0c, 0xbb0e, 0xbb10, 0xbb12, 0xbb13, 0xbb14, 0xbb15, 0xbb16, 0xbb17, 0xbb19, 0xbb1a,
|
||||
0xbb1b, 0xbb1d, 0xbb1e, 0xbb1f, 0xbb21, 0xbb22, 0xbb23, 0xbb24, 0xbb25, 0xbb26, 0xbb27, 0xbb28, 0xbb2a, 0xbb2c, 0xbb2d,
|
||||
0xbb2e, 0xbb2f, 0xbb30, 0xbb31, 0xbb32, 0xbb33, 0xbb37, 0xbb39, 0xbb3a, 0xbb3f, 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb46,
|
||||
0xbb48, 0xbb4a, 0xbb4b, 0xbb4c, 0xbb4e, 0xbb51, 0xbb52, 0xbb53, 0xbb55, 0xbb56, 0xbb57, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c,
|
||||
0xbb5d, 0xbb5e, 0xbb5f, 0xbb60, 0xbb62, 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0xbb6d, 0xbb6e,
|
||||
0xbb6f, 0xbb70, 0xbb71, 0xbb72, 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d,
|
||||
0xbb7e, 0xbb7f, 0xbb80, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, 0xbb87, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8d, 0xbb8e,
|
||||
0xbb8f, 0xbb91, 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96, 0xbb97, 0xbb98, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, 0xbb9e,
|
||||
0xbb9f, 0xbba0, 0xbba1, 0xbba2, 0xbba3, 0xbba5, 0xbba6, 0xbba7, 0xbba9, 0xbbaa, 0xbbab, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0,
|
||||
0xbbb1, 0xbbb2, 0xbbb3, 0xbbb5, 0xbbb6, 0xbbb8, 0xbbb9, 0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, 0xbbc1, 0xbbc2,
|
||||
0xbbc3, 0xbbc5, 0xbbc6, 0xbbc7, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce, 0xbbcf, 0xbbd1, 0xbbd2, 0xbbd4, 0xbbd5,
|
||||
0xbbd6, 0xbbd7, 0xbbd8, 0xbbd9, 0xbbda, 0xbbdb, 0xbbdc, 0xbbdd, 0xbbde, 0xbbdf, 0xbbe0, 0xbbe1, 0xbbe2, 0xbbe3, 0xbbe4,
|
||||
0xbbe5, 0xbbe6, 0xbbe7, 0xbbe8, 0xbbe9, 0xbbea, 0xbbeb, 0xbbec, 0xbbed, 0xbbee, 0xbbef, 0xbbf0, 0xbbf1, 0xbbf2, 0xbbf3,
|
||||
0xbbf4, 0xbbf5, 0xbbf6, 0xbbf7, 0xbbfa, 0xbbfb, 0xbbfd, 0xbbfe, 0xbc01, 0xbc03, 0xbc04, 0xbc05, 0xbc06, 0xbc07, 0xbc0a,
|
||||
0xbc0e, 0xbc10, 0xbc12, 0xbc13, 0xbc19, 0xbc1a, 0xbc20, 0xbc21, 0xbc22, 0xbc23, 0xbc26, 0xbc28, 0xbc2a, 0xbc2b, 0xbc2c,
|
||||
0xbc2e, 0xbc2f, 0xbc32, 0xbc33, 0xbc35, 0xbc36, 0xbc37, 0xbc39, 0xbc3a, 0xbc3b, 0xbc3c, 0xbc3d, 0xbc3e, 0xbc3f, 0xbc42,
|
||||
0xbc46, 0xbc47, 0xbc48, 0xbc4a, 0xbc4b, 0xbc4e, 0xbc4f, 0xbc51, 0xbc52, 0xbc53, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58,
|
||||
0xbc59, 0xbc5a, 0xbc5b, 0xbc5c, 0xbc5e, 0xbc5f, 0xbc60, 0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0xbc68,
|
||||
0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, 0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, 0xbc77,
|
||||
0xbc78, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, 0xbc7e, 0xbc7f, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc86, 0xbc87, 0xbc89,
|
||||
0xbc8a, 0xbc8d, 0xbc8f, 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbc96, 0xbc98, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0xbca2,
|
||||
0xbca3, 0xbca5, 0xbca6, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, 0xbcad, 0xbcae, 0xbcaf, 0xbcb2, 0xbcb6, 0xbcb7, 0xbcb8, 0xbcb9,
|
||||
0xbcba, 0xbcbb, 0xbcbe, 0xbcbf, 0xbcc1, 0xbcc2, 0xbcc3, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, 0xbcc9, 0xbcca, 0xbccb, 0xbccc,
|
||||
0xbcce, 0xbcd2, 0xbcd3, 0xbcd4, 0xbcd6, 0xbcd7, 0xbcd9, 0xbcda, 0xbcdb, 0xbcdd, 0xbcde, 0xbcdf, 0xbce0, 0xbce1, 0xbce2,
|
||||
0xbce3, 0xbce4, 0xbce5, 0xbce6, 0xbce7, 0xbce8, 0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced, 0xbcee, 0xbcef, 0xbcf0, 0xbcf1,
|
||||
0xbcf2, 0xbcf3, 0xbcf7, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfd, 0xbcfe, 0xbcff, 0xbd00, 0xbd01, 0xbd02, 0xbd03, 0xbd06, 0xbd08,
|
||||
0xbd0a, 0xbd0b, 0xbd0c, 0xbd0d, 0xbd0e, 0xbd0f, 0xbd11, 0xbd12, 0xbd13, 0xbd15, 0xbd16, 0xbd17, 0xbd18, 0xbd19, 0xbd1a,
|
||||
0xbd1b, 0xbd1c, 0xbd1d, 0xbd1e, 0xbd1f, 0xbd20, 0xbd21, 0xbd22, 0xbd23, 0xbd25, 0xbd26, 0xbd27, 0xbd28, 0xbd29, 0xbd2a,
|
||||
0xbd2b, 0xbd2d, 0xbd2e, 0xbd2f, 0xbd30, 0xbd31, 0xbd32, 0xbd33, 0xbd34, 0xbd35, 0xbd36, 0xbd37, 0xbd38, 0xbd39, 0xbd3a,
|
||||
0xbd3b, 0xbd3c, 0xbd3d, 0xbd3e, 0xbd3f, 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd4a, 0xbd4b, 0xbd4d,
|
||||
0xbd4e, 0xbd4f, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f,
|
||||
0xbd60, 0xbd61, 0xbd62, 0xbd63, 0xbd65, 0xbd66, 0xbd67, 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70,
|
||||
0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xbd77, 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd7f,
|
||||
0xbd82, 0xbd83, 0xbd85, 0xbd86, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, 0xbd92, 0xbd94, 0xbd96, 0xbd97, 0xbd98, 0xbd9b,
|
||||
0xbd9d, 0xbd9e, 0xbd9f, 0xbda0, 0xbda1, 0xbda2, 0xbda3, 0xbda5, 0xbda6, 0xbda7, 0xbda8, 0xbda9, 0xbdaa, 0xbdab, 0xbdac,
|
||||
0xbdad, 0xbdae, 0xbdaf, 0xbdb1, 0xbdb2, 0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd,
|
||||
0xbdbe, 0xbdbf, 0xbdc0, 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, 0xbdc7, 0xbdc8, 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc,
|
||||
0xbdcd, 0xbdce, 0xbdcf, 0xbdd0, 0xbdd1, 0xbdd2, 0xbdd3, 0xbdd6, 0xbdd7, 0xbdd9, 0xbdda, 0xbddb, 0xbddd, 0xbdde, 0xbddf,
|
||||
0xbde0, 0xbde1, 0xbde2, 0xbde3, 0xbde4, 0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbdea, 0xbdeb, 0xbdec, 0xbded, 0xbdee, 0xbdef,
|
||||
0xbdf1, 0xbdf2, 0xbdf3, 0xbdf5, 0xbdf6, 0xbdf7, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe, 0xbdff, 0xbe01, 0xbe02,
|
||||
0xbe04, 0xbe06, 0xbe07, 0xbe08, 0xbe09, 0xbe0a, 0xbe0b, 0xbe0e, 0xbe0f, 0xbe11, 0xbe12, 0xbe13, 0xbe15, 0xbe16, 0xbe17,
|
||||
0xbe18, 0xbe19, 0xbe1a, 0xbe1b, 0xbe1e, 0xbe20, 0xbe21, 0xbe22, 0xbe23, 0xbe24, 0xbe25, 0xbe26, 0xbe27, 0xbe28, 0xbe29,
|
||||
0xbe2a, 0xbe2b, 0xbe2c, 0xbe2d, 0xbe2e, 0xbe2f, 0xbe30, 0xbe31, 0xbe32, 0xbe33, 0xbe34, 0xbe35, 0xbe36, 0xbe37, 0xbe38,
|
||||
0xbe39, 0xbe3a, 0xbe3b, 0xbe3c, 0xbe3d, 0xbe3e, 0xbe3f, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe46, 0xbe47, 0xbe49, 0xbe4a,
|
||||
0xbe4b, 0xbe4d, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xbe56, 0xbe58, 0xbe5c, 0xbe5d, 0xbe5e, 0xbe5f, 0xbe62, 0xbe63,
|
||||
0xbe65, 0xbe66, 0xbe67, 0xbe69, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e, 0xbe6f, 0xbe72, 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a,
|
||||
0xbe7e, 0xbe7f, 0xbe81, 0xbe82, 0xbe83, 0xbe85, 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8e, 0xbe92, 0xbe93,
|
||||
0xbe94, 0xbe95, 0xbe96, 0xbe97, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e, 0xbe9f, 0xbea0, 0xbea1, 0xbea2, 0xbea3, 0xbea4,
|
||||
0xbea5, 0xbea6, 0xbea7, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead, 0xbeae, 0xbeaf, 0xbeb0, 0xbeb1, 0xbeb2, 0xbeb3, 0xbeb4,
|
||||
0xbeb5, 0xbeb6, 0xbeb7, 0xbeb8, 0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, 0xbebe, 0xbebf, 0xbec0, 0xbec1, 0xbec2, 0xbec3,
|
||||
0xbec4, 0xbec5, 0xbec6, 0xbec7, 0xbec8, 0xbec9, 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf, 0xbed2, 0xbed3, 0xbed5,
|
||||
0xbed6, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede, 0xbedf, 0xbee1, 0xbee2, 0xbee6, 0xbee7, 0xbee8, 0xbee9, 0xbeea,
|
||||
0xbeeb, 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef2, 0xbef3, 0xbef4, 0xbef5, 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa,
|
||||
0xbefb, 0xbefc, 0xbefd, 0xbefe, 0xbeff, 0xbf00, 0xbf02, 0xbf03, 0xbf04, 0xbf05, 0xbf06, 0xbf07, 0xbf0a, 0xbf0b, 0xbf0c,
|
||||
0xbf0d, 0xbf0e, 0xbf0f, 0xbf10, 0xbf11, 0xbf12, 0xbf13, 0xbf14, 0xbf15, 0xbf16, 0xbf17, 0xbf1a, 0xbf1e, 0xbf1f, 0xbf20,
|
||||
0xbf21, 0xbf22, 0xbf23, 0xbf24, 0xbf25, 0xbf26, 0xbf27, 0xbf28, 0xbf29, 0xbf2a, 0xbf2b, 0xbf2c, 0xbf2d, 0xbf2e, 0xbf2f,
|
||||
0xbf30, 0xbf31, 0xbf32, 0xbf33, 0xbf34, 0xbf35, 0xbf36, 0xbf37, 0xbf38, 0xbf39, 0xbf3a, 0xbf3b, 0xbf3c, 0xbf3d, 0xbf3e,
|
||||
0xbf3f, 0xbf42, 0xbf43, 0xbf45, 0xbf46, 0xbf47, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, 0xbf52, 0xbf53,
|
||||
0xbf54, 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c, 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, 0xbf63,
|
||||
0xbf64, 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf72,
|
||||
0xbf73, 0xbf74, 0xbf75, 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, 0xbf7e, 0xbf7f, 0xbf80, 0xbf81,
|
||||
0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, 0xbf88, 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90,
|
||||
0xbf91, 0xbf92, 0xbf93, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a, 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0,
|
||||
0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4, 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9, 0xbfaa, 0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf,
|
||||
0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4, 0xbfb5, 0xbfb6, 0xbfb7, 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe, 0xbfbf,
|
||||
0xbfc0, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc6, 0xbfc7, 0xbfc8, 0xbfc9, 0xbfca, 0xbfcb, 0xbfce, 0xbfcf, 0xbfd1, 0xbfd2,
|
||||
0xbfd3, 0xbfd5, 0xbfd6, 0xbfd7, 0xbfd8, 0xbfd9, 0xbfda, 0xbfdb, 0xbfdd, 0xbfde, 0xbfe0, 0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5,
|
||||
0xbfe6, 0xbfe7, 0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee, 0xbfef, 0xbff0, 0xbff1, 0xbff2, 0xbff3, 0xbff4,
|
||||
0xbff5, 0xbff6, 0xbff7, 0xbff8, 0xbff9, 0xbffa, 0xbffb, 0xbffc, 0xbffd, 0xbffe, 0xbfff, 0xc000, 0xc001, 0xc002, 0xc003,
|
||||
0xc004, 0xc005, 0xc006, 0xc007, 0xc008, 0xc009, 0xc00a, 0xc00b, 0xc00c, 0xc00d, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc012,
|
||||
0xc013, 0xc014, 0xc015, 0xc016, 0xc017, 0xc018, 0xc019, 0xc01a, 0xc01b, 0xc01c, 0xc01d, 0xc01e, 0xc01f, 0xc020, 0xc021,
|
||||
0xc022, 0xc023, 0xc024, 0xc025, 0xc026, 0xc027, 0xc028, 0xc029, 0xc02a, 0xc02b, 0xc02c, 0xc02d, 0xc02e, 0xc02f, 0xc030,
|
||||
0xc031, 0xc032, 0xc033, 0xc034, 0xc035, 0xc036, 0xc037, 0xc038, 0xc039, 0xc03a, 0xc03b, 0xc03d, 0xc03e, 0xc03f, 0xc040,
|
||||
0xc041, 0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f,
|
||||
0xc050, 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0xc059, 0xc05a, 0xc05b, 0xc05d, 0xc05e, 0xc05f, 0xc061, 0xc062,
|
||||
0xc063, 0xc064, 0xc065, 0xc066, 0xc067, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070, 0xc071, 0xc072, 0xc073,
|
||||
0xc074, 0xc075, 0xc076, 0xc077, 0xc078, 0xc079, 0xc07a, 0xc07b, 0xc07c, 0xc07d, 0xc07e, 0xc07f, 0xc080, 0xc081, 0xc082,
|
||||
0xc083, 0xc084, 0xc085, 0xc086, 0xc087, 0xc088, 0xc089, 0xc08a, 0xc08b, 0xc08c, 0xc08d, 0xc08e, 0xc08f, 0xc092, 0xc093,
|
||||
0xc095, 0xc096, 0xc097, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, 0xc09f, 0xc0a2, 0xc0a4, 0xc0a6, 0xc0a7, 0xc0a8,
|
||||
0xc0a9, 0xc0aa, 0xc0ab, 0xc0ae, 0xc0b1, 0xc0b2, 0xc0b7, 0xc0b8, 0xc0b9, 0xc0ba, 0xc0bb, 0xc0be, 0xc0c2, 0xc0c3, 0xc0c4,
|
||||
0xc0c6, 0xc0c7, 0xc0ca, 0xc0cb, 0xc0cd, 0xc0ce, 0xc0cf, 0xc0d1, 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6, 0xc0d7, 0xc0da,
|
||||
0xc0de, 0xc0df, 0xc0e0, 0xc0e1, 0xc0e2, 0xc0e3, 0xc0e6, 0xc0e7, 0xc0e9, 0xc0ea, 0xc0eb, 0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0,
|
||||
0xc0f1, 0xc0f2, 0xc0f3, 0xc0f6, 0xc0f8, 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc0ff, 0xc101, 0xc102, 0xc103, 0xc105,
|
||||
0xc106, 0xc107, 0xc109, 0xc10a, 0xc10b, 0xc10c, 0xc10d, 0xc10e, 0xc10f, 0xc111, 0xc112, 0xc113, 0xc114, 0xc116, 0xc117,
|
||||
0xc118, 0xc119, 0xc11a, 0xc11b, 0xc121, 0xc122, 0xc125, 0xc128, 0xc129, 0xc12a, 0xc12b, 0xc12e, 0xc132, 0xc133, 0xc134,
|
||||
0xc135, 0xc137, 0xc13a, 0xc13b, 0xc13d, 0xc13e, 0xc13f, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145, 0xc146, 0xc147, 0xc14a,
|
||||
0xc14e, 0xc14f, 0xc150, 0xc151, 0xc152, 0xc153, 0xc156, 0xc157, 0xc159, 0xc15a, 0xc15b, 0xc15d, 0xc15e, 0xc15f, 0xc160,
|
||||
0xc161, 0xc162, 0xc163, 0xc166, 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, 0xc171, 0xc172, 0xc173, 0xc175, 0xc176,
|
||||
0xc177, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc17e, 0xc17f, 0xc180, 0xc181, 0xc182, 0xc183, 0xc184, 0xc186, 0xc187,
|
||||
0xc188, 0xc189, 0xc18a, 0xc18b, 0xc18f, 0xc191, 0xc192, 0xc193, 0xc195, 0xc197, 0xc198, 0xc199, 0xc19a, 0xc19b, 0xc19e,
|
||||
0xc1a0, 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a6, 0xc1a7, 0xc1aa, 0xc1ab, 0xc1ad, 0xc1ae, 0xc1af, 0xc1b1, 0xc1b2, 0xc1b3, 0xc1b4,
|
||||
0xc1b5, 0xc1b6, 0xc1b7, 0xc1b8, 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1be, 0xc1bf, 0xc1c0, 0xc1c1, 0xc1c2, 0xc1c3, 0xc1c5,
|
||||
0xc1c6, 0xc1c7, 0xc1c9, 0xc1ca, 0xc1cb, 0xc1cd, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d2, 0xc1d3, 0xc1d5, 0xc1d6, 0xc1d9,
|
||||
0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de, 0xc1df, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e5, 0xc1e6, 0xc1e7, 0xc1e9, 0xc1ea, 0xc1eb,
|
||||
0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef, 0xc1f2, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7, 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0xc1fe, 0xc1ff,
|
||||
0xc201, 0xc202, 0xc203, 0xc205, 0xc206, 0xc207, 0xc208, 0xc209, 0xc20a, 0xc20b, 0xc20e, 0xc210, 0xc212, 0xc213, 0xc214,
|
||||
0xc215, 0xc216, 0xc217, 0xc21a, 0xc21b, 0xc21d, 0xc21e, 0xc221, 0xc222, 0xc223, 0xc224, 0xc225, 0xc226, 0xc227, 0xc22a,
|
||||
0xc22c, 0xc22e, 0xc230, 0xc233, 0xc235, 0xc236, 0xc237, 0xc238, 0xc239, 0xc23a, 0xc23b, 0xc23c, 0xc23d, 0xc23e, 0xc23f,
|
||||
0xc240, 0xc241, 0xc242, 0xc243, 0xc244, 0xc245, 0xc246, 0xc247, 0xc249, 0xc24a, 0xc24b, 0xc24c, 0xc24d, 0xc24e, 0xc24f,
|
||||
0xc252, 0xc253, 0xc255, 0xc256, 0xc257, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e, 0xc25f, 0xc261, 0xc262, 0xc263,
|
||||
0xc264, 0xc266, 0xc267, 0xc268, 0xc269, 0xc26a, 0xc26b, 0xc26e, 0xc26f, 0xc271, 0xc272, 0xc273, 0xc275, 0xc276, 0xc277,
|
||||
0xc278, 0xc279, 0xc27a, 0xc27b, 0xc27e, 0xc280, 0xc282, 0xc283, 0xc284, 0xc285, 0xc286, 0xc287, 0xc28a, 0xc28b, 0xc28c,
|
||||
0xc28d, 0xc28e, 0xc28f, 0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296, 0xc297, 0xc299, 0xc29a, 0xc29c, 0xc29e, 0xc29f,
|
||||
0xc2a0, 0xc2a1, 0xc2a2, 0xc2a3, 0xc2a6, 0xc2a7, 0xc2a9, 0xc2aa, 0xc2ab, 0xc2ae, 0xc2af, 0xc2b0, 0xc2b1, 0xc2b2, 0xc2b3,
|
||||
0xc2b6, 0xc2b8, 0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2be, 0xc2bf, 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6,
|
||||
0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce, 0xc2cf, 0xc2d0, 0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5,
|
||||
0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0xc2de, 0xc2df, 0xc2e1, 0xc2e2, 0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, 0xc2e9,
|
||||
0xc2ea, 0xc2ee, 0xc2f0, 0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f7, 0xc2fa, 0xc2fd, 0xc2fe, 0xc2ff, 0xc301, 0xc302, 0xc303,
|
||||
0xc304, 0xc305, 0xc306, 0xc307, 0xc30a, 0xc30b, 0xc30e, 0xc30f, 0xc310, 0xc311, 0xc312, 0xc316, 0xc317, 0xc319, 0xc31a,
|
||||
0xc31b, 0xc31d, 0xc31e, 0xc31f, 0xc320, 0xc321, 0xc322, 0xc323, 0xc326, 0xc327, 0xc32a, 0xc32b, 0xc32c, 0xc32d, 0xc32e,
|
||||
0xc32f, 0xc330, 0xc331, 0xc332, 0xc333, 0xc334, 0xc335, 0xc336, 0xc337, 0xc338, 0xc339, 0xc33a, 0xc33b, 0xc33c, 0xc33d,
|
||||
0xc33e, 0xc33f, 0xc340, 0xc341, 0xc342, 0xc343, 0xc344, 0xc346, 0xc347, 0xc348, 0xc349, 0xc34a, 0xc34b, 0xc34c, 0xc34d,
|
||||
0xc34e, 0xc34f, 0xc350, 0xc351, 0xc352, 0xc353, 0xc354, 0xc355, 0xc356, 0xc357, 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c,
|
||||
0xc35d, 0xc35e, 0xc35f, 0xc360, 0xc361, 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, 0xc36a, 0xc36b, 0xc36d, 0xc36e,
|
||||
0xc36f, 0xc371, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, 0xc37a, 0xc37b, 0xc37e, 0xc37f, 0xc380, 0xc381, 0xc382, 0xc383,
|
||||
0xc385, 0xc386, 0xc387, 0xc389, 0xc38a, 0xc38b, 0xc38d, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc392, 0xc393, 0xc394, 0xc395,
|
||||
0xc396, 0xc397, 0xc398, 0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0xc3a0, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4,
|
||||
0xc3a5, 0xc3a6, 0xc3a7, 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, 0xc3af, 0xc3b0, 0xc3b1, 0xc3b2, 0xc3b3,
|
||||
0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7, 0xc3b8, 0xc3b9, 0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf, 0xc3c1, 0xc3c2, 0xc3c3,
|
||||
0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, 0xc3c8, 0xc3c9, 0xc3ca, 0xc3cb, 0xc3cc, 0xc3cd, 0xc3ce, 0xc3cf, 0xc3d0, 0xc3d1, 0xc3d2,
|
||||
0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6, 0xc3d7, 0xc3da, 0xc3db, 0xc3dd, 0xc3de, 0xc3e1, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6, 0xc3e7,
|
||||
0xc3ea, 0xc3eb, 0xc3ec, 0xc3ee, 0xc3ef, 0xc3f0, 0xc3f1, 0xc3f2, 0xc3f3, 0xc3f6, 0xc3f7, 0xc3f9, 0xc3fa, 0xc3fb, 0xc3fc,
|
||||
0xc3fd, 0xc3fe, 0xc3ff, 0xc400, 0xc401, 0xc402, 0xc403, 0xc404, 0xc405, 0xc406, 0xc407, 0xc409, 0xc40a, 0xc40b, 0xc40c,
|
||||
0xc40d, 0xc40e, 0xc40f, 0xc411, 0xc412, 0xc413, 0xc414, 0xc415, 0xc416, 0xc417, 0xc418, 0xc419, 0xc41a, 0xc41b, 0xc41c,
|
||||
0xc41d, 0xc41e, 0xc41f, 0xc420, 0xc421, 0xc422, 0xc423, 0xc425, 0xc426, 0xc427, 0xc428, 0xc429, 0xc42a, 0xc42b, 0xc42d,
|
||||
0xc42e, 0xc42f, 0xc431, 0xc432, 0xc433, 0xc435, 0xc436, 0xc437, 0xc438, 0xc439, 0xc43a, 0xc43b, 0xc43e, 0xc43f, 0xc440,
|
||||
0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xc446, 0xc447, 0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e, 0xc44f, 0xc450,
|
||||
0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456, 0xc457, 0xc458, 0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d, 0xc45e, 0xc45f,
|
||||
0xc460, 0xc461, 0xc462, 0xc463, 0xc466, 0xc467, 0xc469, 0xc46a, 0xc46b, 0xc46d, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc472,
|
||||
0xc473, 0xc476, 0xc477, 0xc478, 0xc47a, 0xc47b, 0xc47c, 0xc47d, 0xc47e, 0xc47f, 0xc481, 0xc482, 0xc483, 0xc484, 0xc485,
|
||||
0xc486, 0xc487, 0xc488, 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f, 0xc490, 0xc491, 0xc492, 0xc493, 0xc495,
|
||||
0xc496, 0xc497, 0xc498, 0xc499, 0xc49a, 0xc49b, 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4, 0xc4a5,
|
||||
0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa, 0xc4ab, 0xc4ac, 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1, 0xc4b2, 0xc4b3, 0xc4b4,
|
||||
0xc4b5, 0xc4b6, 0xc4b7, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bd, 0xc4be, 0xc4bf, 0xc4c0, 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5,
|
||||
0xc4c6, 0xc4c7, 0xc4c8, 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf, 0xc4d0, 0xc4d1, 0xc4d2, 0xc4d3, 0xc4d4,
|
||||
0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, 0xc4da, 0xc4db, 0xc4dc, 0xc4dd, 0xc4de, 0xc4df, 0xc4e0, 0xc4e1, 0xc4e2, 0xc4e3,
|
||||
0xc4e4, 0xc4e5, 0xc4e6, 0xc4e7, 0xc4e8, 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef, 0xc4f2, 0xc4f3, 0xc4f5, 0xc4f6,
|
||||
0xc4f7, 0xc4f9, 0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe, 0xc502, 0xc503, 0xc504, 0xc505, 0xc506, 0xc507, 0xc508, 0xc509, 0xc50a,
|
||||
0xc50b, 0xc50d, 0xc50e, 0xc50f, 0xc511, 0xc512, 0xc513, 0xc515, 0xc516, 0xc517, 0xc518, 0xc519, 0xc51a, 0xc51b, 0xc51d,
|
||||
0xc51e, 0xc51f, 0xc520, 0xc521, 0xc522, 0xc523, 0xc524, 0xc525, 0xc526, 0xc527, 0xc52a, 0xc52b, 0xc52d, 0xc52e, 0xc52f,
|
||||
0xc531, 0xc532, 0xc533, 0xc534, 0xc535, 0xc536, 0xc537, 0xc53a, 0xc53c, 0xc53e, 0xc53f, 0xc540, 0xc541, 0xc542, 0xc543,
|
||||
0xc546, 0xc547, 0xc54b, 0xc54f, 0xc550, 0xc551, 0xc552, 0xc556, 0xc55a, 0xc55b, 0xc55c, 0xc55f, 0xc562, 0xc563, 0xc565,
|
||||
0xc566, 0xc567, 0xc569, 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e, 0xc56f, 0xc572, 0xc576, 0xc577, 0xc578, 0xc579, 0xc57a,
|
||||
0xc57b, 0xc57e, 0xc57f, 0xc581, 0xc582, 0xc583, 0xc585, 0xc586, 0xc588, 0xc589, 0xc58a, 0xc58b, 0xc58e, 0xc590, 0xc592,
|
||||
0xc593, 0xc594, 0xc596, 0xc599, 0xc59a, 0xc59b, 0xc59d, 0xc59e, 0xc59f, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6,
|
||||
0xc5a7, 0xc5a8, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad, 0xc5ae, 0xc5af, 0xc5b0, 0xc5b1, 0xc5b2, 0xc5b3, 0xc5b6, 0xc5b7, 0xc5ba,
|
||||
0xc5bf, 0xc5c0, 0xc5c1, 0xc5c2, 0xc5c3, 0xc5cb, 0xc5cd, 0xc5cf, 0xc5d2, 0xc5d3, 0xc5d5, 0xc5d6, 0xc5d7, 0xc5d9, 0xc5da,
|
||||
0xc5db, 0xc5dc, 0xc5dd, 0xc5de, 0xc5df, 0xc5e2, 0xc5e4, 0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ef, 0xc5f1,
|
||||
0xc5f2, 0xc5f3, 0xc5f5, 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc602, 0xc603, 0xc604, 0xc609, 0xc60a, 0xc60b, 0xc60d, 0xc60e,
|
||||
0xc60f, 0xc611, 0xc612, 0xc613, 0xc614, 0xc615, 0xc616, 0xc617, 0xc61a, 0xc61d, 0xc61e, 0xc61f, 0xc620, 0xc621, 0xc622,
|
||||
0xc623, 0xc626, 0xc627, 0xc629, 0xc62a, 0xc62b, 0xc62f, 0xc631, 0xc632, 0xc636, 0xc638, 0xc63a, 0xc63c, 0xc63d, 0xc63e,
|
||||
0xc63f, 0xc642, 0xc643, 0xc645, 0xc646, 0xc647, 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, 0xc64f, 0xc652, 0xc656,
|
||||
0xc657, 0xc658, 0xc659, 0xc65a, 0xc65b, 0xc65e, 0xc65f, 0xc661, 0xc662, 0xc663, 0xc664, 0xc665, 0xc666, 0xc667, 0xc668,
|
||||
0xc669, 0xc66a, 0xc66b, 0xc66d, 0xc66e, 0xc670, 0xc672, 0xc673, 0xc674, 0xc675, 0xc676, 0xc677, 0xc67a, 0xc67b, 0xc67d,
|
||||
0xc67e, 0xc67f, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, 0xc687, 0xc68a, 0xc68c, 0xc68e, 0xc68f, 0xc690, 0xc691,
|
||||
0xc692, 0xc693, 0xc696, 0xc697, 0xc699, 0xc69a, 0xc69b, 0xc69d, 0xc69e, 0xc69f, 0xc6a0, 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a6,
|
||||
0xc6a8, 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b2, 0xc6b3, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6bb, 0xc6bc, 0xc6bd,
|
||||
0xc6be, 0xc6bf, 0xc6c2, 0xc6c4, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb, 0xc6ce, 0xc6cf, 0xc6d1, 0xc6d2, 0xc6d3,
|
||||
0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db, 0xc6de, 0xc6df, 0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7,
|
||||
0xc6ea, 0xc6eb, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6fa, 0xc6fb, 0xc6fc,
|
||||
0xc6fe, 0xc6ff, 0xc700, 0xc701, 0xc702, 0xc703, 0xc706, 0xc707, 0xc709, 0xc70a, 0xc70b, 0xc70d, 0xc70e, 0xc70f, 0xc710,
|
||||
0xc711, 0xc712, 0xc713, 0xc716, 0xc718, 0xc71a, 0xc71b, 0xc71c, 0xc71d, 0xc71e, 0xc71f, 0xc722, 0xc723, 0xc725, 0xc726,
|
||||
0xc727, 0xc729, 0xc72a, 0xc72b, 0xc72c, 0xc72d, 0xc72e, 0xc72f, 0xc732, 0xc734, 0xc736, 0xc738, 0xc739, 0xc73a, 0xc73b,
|
||||
0xc73e, 0xc73f, 0xc741, 0xc742, 0xc743, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74b, 0xc74e, 0xc750, 0xc759, 0xc75a,
|
||||
0xc75b, 0xc75d, 0xc75e, 0xc75f, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc769, 0xc76a, 0xc76c, 0xc76d,
|
||||
0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc776, 0xc777, 0xc779, 0xc77a, 0xc77b, 0xc77f, 0xc780, 0xc781, 0xc782,
|
||||
0xc786, 0xc78b, 0xc78c, 0xc78d, 0xc78f, 0xc792, 0xc793, 0xc795, 0xc799, 0xc79b, 0xc79c, 0xc79d, 0xc79e, 0xc79f, 0xc7a2,
|
||||
0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ae, 0xc7af, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9,
|
||||
0xc7ba, 0xc7bb, 0xc7be, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7ca, 0xc7cb, 0xc7cd, 0xc7cf, 0xc7d1, 0xc7d2,
|
||||
0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3,
|
||||
0xc7e5, 0xc7e6, 0xc7e7, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5,
|
||||
0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc7ff, 0xc802, 0xc803, 0xc805, 0xc806, 0xc807,
|
||||
0xc809, 0xc80b, 0xc80c, 0xc80d, 0xc80e, 0xc80f, 0xc812, 0xc814, 0xc817, 0xc818, 0xc819, 0xc81a, 0xc81b, 0xc81e, 0xc81f,
|
||||
0xc821, 0xc822, 0xc823, 0xc825, 0xc826, 0xc827, 0xc828, 0xc829, 0xc82a, 0xc82b, 0xc82e, 0xc830, 0xc832, 0xc833, 0xc834,
|
||||
0xc835, 0xc836, 0xc837, 0xc839, 0xc83a, 0xc83b, 0xc83d, 0xc83e, 0xc83f, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846,
|
||||
0xc847, 0xc84a, 0xc84b, 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852, 0xc853, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a,
|
||||
0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869,
|
||||
0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc872, 0xc873, 0xc875, 0xc876, 0xc877, 0xc879, 0xc87b, 0xc87c, 0xc87d,
|
||||
0xc87e, 0xc87f, 0xc882, 0xc884, 0xc888, 0xc889, 0xc88a, 0xc88e, 0xc88f, 0xc890, 0xc891, 0xc892, 0xc893, 0xc895, 0xc896,
|
||||
0xc897, 0xc898, 0xc899, 0xc89a, 0xc89b, 0xc89c, 0xc89e, 0xc8a0, 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0xc8a9,
|
||||
0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8,
|
||||
0xc8b9, 0xc8ba, 0xc8bb, 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1, 0xc8c2, 0xc8c3, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c9, 0xc8ca, 0xc8cb,
|
||||
0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d2, 0xc8d3, 0xc8d6, 0xc8d8, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df,
|
||||
0xc8e2, 0xc8e3, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1,
|
||||
0xc8f2, 0xc8f3, 0xc8f4, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0xc8fe, 0xc8ff, 0xc901, 0xc902, 0xc903, 0xc907,
|
||||
0xc908, 0xc909, 0xc90a, 0xc90b, 0xc90e, 0xc910, 0xc912, 0xc913, 0xc914, 0xc915, 0xc916, 0xc917, 0xc919, 0xc91a, 0xc91b,
|
||||
0xc91c, 0xc91d, 0xc91e, 0xc91f, 0xc920, 0xc921, 0xc922, 0xc923, 0xc924, 0xc925, 0xc926, 0xc927, 0xc928, 0xc929, 0xc92a,
|
||||
0xc92b, 0xc92d, 0xc92e, 0xc92f, 0xc930, 0xc931, 0xc932, 0xc933, 0xc935, 0xc936, 0xc937, 0xc938, 0xc939, 0xc93a, 0xc93b,
|
||||
0xc93c, 0xc93d, 0xc93e, 0xc93f, 0xc940, 0xc941, 0xc942, 0xc943, 0xc944, 0xc945, 0xc946, 0xc947, 0xc948, 0xc949, 0xc94a,
|
||||
0xc94b, 0xc94c, 0xc94d, 0xc94e, 0xc94f, 0xc952, 0xc953, 0xc955, 0xc956, 0xc957, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d,
|
||||
0xc95e, 0xc95f, 0xc962, 0xc964, 0xc965, 0xc966, 0xc967, 0xc968, 0xc969, 0xc96a, 0xc96b, 0xc96d, 0xc96e, 0xc96f, 0xc971,
|
||||
0xc972, 0xc973, 0xc975, 0xc976, 0xc977, 0xc978, 0xc979, 0xc97a, 0xc97b, 0xc97d, 0xc97e, 0xc97f, 0xc980, 0xc981, 0xc982,
|
||||
0xc983, 0xc984, 0xc985, 0xc986, 0xc987, 0xc98a, 0xc98b, 0xc98d, 0xc98e, 0xc98f, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995,
|
||||
0xc996, 0xc997, 0xc99a, 0xc99c, 0xc99e, 0xc99f, 0xc9a0, 0xc9a1, 0xc9a2, 0xc9a3, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8,
|
||||
0xc9a9, 0xc9aa, 0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, 0xc9b0, 0xc9b1, 0xc9b2, 0xc9b3, 0xc9b4, 0xc9b5, 0xc9b6, 0xc9b7,
|
||||
0xc9b8, 0xc9b9, 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9be, 0xc9bf, 0xc9c2, 0xc9c3, 0xc9c5, 0xc9c6, 0xc9c9, 0xc9cb, 0xc9cc,
|
||||
0xc9cd, 0xc9ce, 0xc9cf, 0xc9d2, 0xc9d4, 0xc9d7, 0xc9d8, 0xc9db, 0xc9de, 0xc9df, 0xc9e1, 0xc9e3, 0xc9e5, 0xc9e6, 0xc9e8,
|
||||
0xc9e9, 0xc9ea, 0xc9eb, 0xc9ee, 0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0xc9fa, 0xc9fb, 0xc9fd, 0xc9fe, 0xc9ff,
|
||||
0xca01, 0xca02, 0xca03, 0xca04, 0xca05, 0xca06, 0xca07, 0xca0a, 0xca0e, 0xca0f, 0xca10, 0xca11, 0xca12, 0xca13, 0xca15,
|
||||
0xca16, 0xca17, 0xca19, 0xca1a, 0xca1b, 0xca1c, 0xca1d, 0xca1e, 0xca1f, 0xca20, 0xca21, 0xca22, 0xca23, 0xca24, 0xca25,
|
||||
0xca26, 0xca27, 0xca28, 0xca2a, 0xca2b, 0xca2c, 0xca2d, 0xca2e, 0xca2f, 0xca30, 0xca31, 0xca32, 0xca33, 0xca34, 0xca35,
|
||||
0xca36, 0xca37, 0xca38, 0xca39, 0xca3a, 0xca3b, 0xca3c, 0xca3d, 0xca3e, 0xca3f, 0xca40, 0xca41, 0xca42, 0xca43, 0xca44,
|
||||
0xca45, 0xca46, 0xca47, 0xca48, 0xca49, 0xca4a, 0xca4b, 0xca4e, 0xca4f, 0xca51, 0xca52, 0xca53, 0xca55, 0xca56, 0xca57,
|
||||
0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5e, 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, 0xca69, 0xca6a, 0xca6b, 0xca6c,
|
||||
0xca6d, 0xca6e, 0xca6f, 0xca70, 0xca71, 0xca72, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, 0xca79, 0xca7a, 0xca7b,
|
||||
0xca7c, 0xca7e, 0xca7f, 0xca80, 0xca81, 0xca82, 0xca83, 0xca85, 0xca86, 0xca87, 0xca88, 0xca89, 0xca8a, 0xca8b, 0xca8c,
|
||||
0xca8d, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, 0xca95, 0xca96, 0xca97, 0xca99, 0xca9a, 0xca9b, 0xca9c,
|
||||
0xca9d, 0xca9e, 0xca9f, 0xcaa0, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6, 0xcaa7, 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab,
|
||||
0xcaac, 0xcaad, 0xcaae, 0xcaaf, 0xcab0, 0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7, 0xcab8, 0xcab9, 0xcaba,
|
||||
0xcabb, 0xcabe, 0xcabf, 0xcac1, 0xcac2, 0xcac3, 0xcac5, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcace, 0xcad0,
|
||||
0xcad2, 0xcad4, 0xcad5, 0xcad6, 0xcad7, 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade, 0xcadf, 0xcae1, 0xcae2, 0xcae3, 0xcae4,
|
||||
0xcae5, 0xcae6, 0xcae7, 0xcae8, 0xcae9, 0xcaea, 0xcaeb, 0xcaed, 0xcaee, 0xcaef, 0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0xcaf5,
|
||||
0xcaf6, 0xcaf7, 0xcaf8, 0xcaf9, 0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcaff, 0xcb00, 0xcb01, 0xcb02, 0xcb03, 0xcb04,
|
||||
0xcb05, 0xcb06, 0xcb07, 0xcb09, 0xcb0a, 0xcb0b, 0xcb0c, 0xcb0d, 0xcb0e, 0xcb0f, 0xcb11, 0xcb12, 0xcb13, 0xcb15, 0xcb16,
|
||||
0xcb17, 0xcb19, 0xcb1a, 0xcb1b, 0xcb1c, 0xcb1d, 0xcb1e, 0xcb1f, 0xcb22, 0xcb23, 0xcb24, 0xcb25, 0xcb26, 0xcb27, 0xcb28,
|
||||
0xcb29, 0xcb2a, 0xcb2b, 0xcb2c, 0xcb2d, 0xcb2e, 0xcb2f, 0xcb30, 0xcb31, 0xcb32, 0xcb33, 0xcb34, 0xcb35, 0xcb36, 0xcb37,
|
||||
0xcb38, 0xcb39, 0xcb3a, 0xcb3b, 0xcb3c, 0xcb3d, 0xcb3e, 0xcb3f, 0xcb40, 0xcb42, 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47,
|
||||
0xcb4a, 0xcb4b, 0xcb4d, 0xcb4e, 0xcb4f, 0xcb51, 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56, 0xcb57, 0xcb5a, 0xcb5b, 0xcb5c,
|
||||
0xcb5e, 0xcb5f, 0xcb60, 0xcb61, 0xcb62, 0xcb63, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xcb69, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d,
|
||||
0xcb6e, 0xcb6f, 0xcb70, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76, 0xcb77, 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb7e,
|
||||
0xcb7f, 0xcb80, 0xcb81, 0xcb82, 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xcb87, 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d,
|
||||
0xcb8e, 0xcb8f, 0xcb90, 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97, 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9d,
|
||||
0xcb9e, 0xcb9f, 0xcba0, 0xcba1, 0xcba2, 0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8, 0xcba9, 0xcbaa, 0xcbab, 0xcbac,
|
||||
0xcbad, 0xcbae, 0xcbaf, 0xcbb0, 0xcbb1, 0xcbb2, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc,
|
||||
0xcbbd, 0xcbbe, 0xcbbf, 0xcbc0, 0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6, 0xcbc7, 0xcbc8, 0xcbc9, 0xcbca, 0xcbcb,
|
||||
0xcbcc, 0xcbcd, 0xcbce, 0xcbcf, 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0xcbd5, 0xcbd6, 0xcbd7, 0xcbd8, 0xcbd9, 0xcbda, 0xcbdb,
|
||||
0xcbdc, 0xcbdd, 0xcbde, 0xcbdf, 0xcbe0, 0xcbe1, 0xcbe2, 0xcbe3, 0xcbe5, 0xcbe6, 0xcbe8, 0xcbea, 0xcbeb, 0xcbec, 0xcbed,
|
||||
0xcbee, 0xcbef, 0xcbf0, 0xcbf1, 0xcbf2, 0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6, 0xcbf7, 0xcbf8, 0xcbf9, 0xcbfa, 0xcbfb, 0xcbfc,
|
||||
0xcbfd, 0xcbfe, 0xcbff, 0xcc00, 0xcc01, 0xcc02, 0xcc03, 0xcc04, 0xcc05, 0xcc06, 0xcc07, 0xcc08, 0xcc09, 0xcc0a, 0xcc0b,
|
||||
0xcc0e, 0xcc0f, 0xcc11, 0xcc12, 0xcc13, 0xcc15, 0xcc16, 0xcc17, 0xcc18, 0xcc19, 0xcc1a, 0xcc1b, 0xcc1e, 0xcc1f, 0xcc20,
|
||||
0xcc23, 0xcc24, 0xcc25, 0xcc26, 0xcc2a, 0xcc2b, 0xcc2d, 0xcc2f, 0xcc31, 0xcc32, 0xcc33, 0xcc34, 0xcc35, 0xcc36, 0xcc37,
|
||||
0xcc3a, 0xcc3f, 0xcc40, 0xcc41, 0xcc42, 0xcc43, 0xcc46, 0xcc47, 0xcc49, 0xcc4a, 0xcc4b, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50,
|
||||
0xcc51, 0xcc52, 0xcc53, 0xcc56, 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0xcc61, 0xcc62, 0xcc63, 0xcc65, 0xcc67,
|
||||
0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc76, 0xcc77, 0xcc78, 0xcc79,
|
||||
0xcc7a, 0xcc7b, 0xcc7c, 0xcc7d, 0xcc7e, 0xcc7f, 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, 0xcc88,
|
||||
0xcc89, 0xcc8a, 0xcc8b, 0xcc8c, 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90, 0xcc91, 0xcc92, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97,
|
||||
0xcc9a, 0xcc9b, 0xcc9d, 0xcc9e, 0xcc9f, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6, 0xcca7, 0xccaa, 0xccae, 0xccaf,
|
||||
0xccb0, 0xccb1, 0xccb2, 0xccb3, 0xccb6, 0xccb7, 0xccb9, 0xccba, 0xccbb, 0xccbd, 0xccbe, 0xccbf, 0xccc0, 0xccc1, 0xccc2,
|
||||
0xccc3, 0xccc6, 0xccc8, 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0xccd1, 0xccd2, 0xccd3, 0xccd5, 0xccd6, 0xccd7,
|
||||
0xccd8, 0xccd9, 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xccde, 0xccdf, 0xcce0, 0xcce1, 0xcce2, 0xcce3, 0xcce5, 0xcce6, 0xcce7,
|
||||
0xcce8, 0xcce9, 0xccea, 0xcceb, 0xcced, 0xccee, 0xccef, 0xccf1, 0xccf2, 0xccf3, 0xccf4, 0xccf5, 0xccf6, 0xccf7, 0xccf8,
|
||||
0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xccfd, 0xccfe, 0xccff, 0xcd00, 0xcd02, 0xcd03, 0xcd04, 0xcd05, 0xcd06, 0xcd07, 0xcd0a,
|
||||
0xcd0b, 0xcd0d, 0xcd0e, 0xcd0f, 0xcd11, 0xcd12, 0xcd13, 0xcd14, 0xcd15, 0xcd16, 0xcd17, 0xcd1a, 0xcd1c, 0xcd1e, 0xcd1f,
|
||||
0xcd20, 0xcd21, 0xcd22, 0xcd23, 0xcd25, 0xcd26, 0xcd27, 0xcd29, 0xcd2a, 0xcd2b, 0xcd2d, 0xcd2e, 0xcd2f, 0xcd30, 0xcd31,
|
||||
0xcd32, 0xcd33, 0xcd34, 0xcd35, 0xcd36, 0xcd37, 0xcd38, 0xcd3a, 0xcd3b, 0xcd3c, 0xcd3d, 0xcd3e, 0xcd3f, 0xcd40, 0xcd41,
|
||||
0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48, 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, 0xcd4f, 0xcd50,
|
||||
0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55, 0xcd56, 0xcd57, 0xcd58, 0xcd59, 0xcd5a, 0xcd5b, 0xcd5d, 0xcd5e, 0xcd5f, 0xcd61,
|
||||
0xcd62, 0xcd63, 0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, 0xcd6a, 0xcd6b, 0xcd6e, 0xcd70, 0xcd72, 0xcd73, 0xcd74, 0xcd75,
|
||||
0xcd76, 0xcd77, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e, 0xcd7f, 0xcd80, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85,
|
||||
0xcd86, 0xcd87, 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xcd96, 0xcd97,
|
||||
0xcd99, 0xcd9a, 0xcd9b, 0xcd9d, 0xcd9e, 0xcd9f, 0xcda0, 0xcda1, 0xcda2, 0xcda3, 0xcda6, 0xcda8, 0xcdaa, 0xcdab, 0xcdac,
|
||||
0xcdad, 0xcdae, 0xcdaf, 0xcdb1, 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6, 0xcdb7, 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc,
|
||||
0xcdbd, 0xcdbe, 0xcdbf, 0xcdc0, 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc5, 0xcdc6, 0xcdc7, 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0xcdcd,
|
||||
0xcdce, 0xcdcf, 0xcdd1, 0xcdd2, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, 0xcdd8, 0xcdd9, 0xcdda, 0xcddb, 0xcddc, 0xcddd,
|
||||
0xcdde, 0xcddf, 0xcde0, 0xcde1, 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, 0xcde9, 0xcdea, 0xcdeb, 0xcded, 0xcdee,
|
||||
0xcdef, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4, 0xcdf5, 0xcdf6, 0xcdf7, 0xcdfa, 0xcdfc, 0xcdfe, 0xcdff, 0xce00, 0xce01, 0xce02,
|
||||
0xce03, 0xce05, 0xce06, 0xce07, 0xce09, 0xce0a, 0xce0b, 0xce0d, 0xce0e, 0xce0f, 0xce10, 0xce11, 0xce12, 0xce13, 0xce15,
|
||||
0xce16, 0xce17, 0xce18, 0xce1a, 0xce1b, 0xce1c, 0xce1d, 0xce1e, 0xce1f, 0xce22, 0xce23, 0xce25, 0xce26, 0xce27, 0xce29,
|
||||
0xce2a, 0xce2b, 0xce2c, 0xce2d, 0xce2e, 0xce2f, 0xce32, 0xce34, 0xce36, 0xce37, 0xce38, 0xce39, 0xce3a, 0xce3b, 0xce3c,
|
||||
0xce3d, 0xce3e, 0xce3f, 0xce40, 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, 0xce48, 0xce49, 0xce4a, 0xce4b,
|
||||
0xce4c, 0xce4d, 0xce4e, 0xce4f, 0xce50, 0xce51, 0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0xce5a, 0xce5b, 0xce5d,
|
||||
0xce5e, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66, 0xce67, 0xce6a, 0xce6c, 0xce6e, 0xce6f, 0xce70, 0xce71, 0xce72, 0xce73,
|
||||
0xce76, 0xce77, 0xce79, 0xce7a, 0xce7b, 0xce7d, 0xce7e, 0xce7f, 0xce80, 0xce81, 0xce82, 0xce83, 0xce86, 0xce88, 0xce8a,
|
||||
0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, 0xce92, 0xce93, 0xce95, 0xce96, 0xce97, 0xce99, 0xce9a, 0xce9b, 0xce9c, 0xce9d,
|
||||
0xce9e, 0xce9f, 0xcea2, 0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa, 0xceab, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb2, 0xceb3,
|
||||
0xceb4, 0xceb5, 0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xcebd, 0xcebe, 0xcebf, 0xcec0, 0xcec2, 0xcec3,
|
||||
0xcec4, 0xcec5, 0xcec6, 0xcec7, 0xcec8, 0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, 0xced0, 0xced1, 0xced2,
|
||||
0xced3, 0xced4, 0xced5, 0xced6, 0xced7, 0xced8, 0xced9, 0xceda, 0xcedb, 0xcedc, 0xcedd, 0xcede, 0xcedf, 0xcee0, 0xcee1,
|
||||
0xcee2, 0xcee3, 0xcee6, 0xcee7, 0xcee9, 0xceea, 0xceed, 0xceee, 0xceef, 0xcef0, 0xcef1, 0xcef2, 0xcef3, 0xcef6, 0xcefa,
|
||||
0xcefb, 0xcefc, 0xcefd, 0xcefe, 0xceff, 0xcf02, 0xcf03, 0xcf05, 0xcf06, 0xcf07, 0xcf09, 0xcf0a, 0xcf0b, 0xcf0c, 0xcf0d,
|
||||
0xcf0e, 0xcf0f, 0xcf12, 0xcf14, 0xcf16, 0xcf17, 0xcf18, 0xcf19, 0xcf1a, 0xcf1b, 0xcf1d, 0xcf1e, 0xcf1f, 0xcf21, 0xcf22,
|
||||
0xcf23, 0xcf25, 0xcf26, 0xcf27, 0xcf28, 0xcf29, 0xcf2a, 0xcf2b, 0xcf2e, 0xcf32, 0xcf33, 0xcf34, 0xcf35, 0xcf36, 0xcf37,
|
||||
0xcf39, 0xcf3a, 0xcf3b, 0xcf3c, 0xcf3d, 0xcf3e, 0xcf3f, 0xcf40, 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, 0xcf47,
|
||||
0xcf48, 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f, 0xcf50, 0xcf51, 0xcf52, 0xcf53, 0xcf56, 0xcf57, 0xcf59,
|
||||
0xcf5a, 0xcf5b, 0xcf5d, 0xcf5e, 0xcf5f, 0xcf60, 0xcf61, 0xcf62, 0xcf63, 0xcf66, 0xcf68, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d,
|
||||
0xcf6e, 0xcf6f, 0xcf72, 0xcf73, 0xcf75, 0xcf76, 0xcf77, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e, 0xcf7f, 0xcf81,
|
||||
0xcf82, 0xcf83, 0xcf84, 0xcf86, 0xcf87, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, 0xcf8d, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92,
|
||||
0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, 0xcf98, 0xcf99, 0xcf9a, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e, 0xcf9f, 0xcfa0, 0xcfa2,
|
||||
0xcfa3, 0xcfa4, 0xcfa5, 0xcfa6, 0xcfa7, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae, 0xcfaf, 0xcfb1, 0xcfb2, 0xcfb3,
|
||||
0xcfb4, 0xcfb5, 0xcfb6, 0xcfb7, 0xcfb8, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd, 0xcfbe, 0xcfbf, 0xcfc0, 0xcfc1, 0xcfc2,
|
||||
0xcfc3, 0xcfc5, 0xcfc6, 0xcfc7, 0xcfc8, 0xcfc9, 0xcfca, 0xcfcb, 0xcfcc, 0xcfcd, 0xcfce, 0xcfcf, 0xcfd0, 0xcfd1, 0xcfd2,
|
||||
0xcfd3, 0xcfd4, 0xcfd5, 0xcfd6, 0xcfd7, 0xcfd8, 0xcfd9, 0xcfda, 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, 0xcfe2, 0xcfe3,
|
||||
0xcfe5, 0xcfe6, 0xcfe7, 0xcfe9, 0xcfea, 0xcfeb, 0xcfec, 0xcfed, 0xcfee, 0xcfef, 0xcff2, 0xcff4, 0xcff6, 0xcff7, 0xcff8,
|
||||
0xcff9, 0xcffa, 0xcffb, 0xcffd, 0xcffe, 0xcfff, 0xd001, 0xd002, 0xd003, 0xd005, 0xd006, 0xd007, 0xd008, 0xd009, 0xd00a,
|
||||
0xd00b, 0xd00c, 0xd00d, 0xd00e, 0xd00f, 0xd010, 0xd012, 0xd013, 0xd014, 0xd015, 0xd016, 0xd017, 0xd019, 0xd01a, 0xd01b,
|
||||
0xd01c, 0xd01d, 0xd01e, 0xd01f, 0xd020, 0xd021, 0xd022, 0xd023, 0xd024, 0xd025, 0xd026, 0xd027, 0xd028, 0xd029, 0xd02a,
|
||||
0xd02b, 0xd02c, 0xd02e, 0xd02f, 0xd030, 0xd031, 0xd032, 0xd033, 0xd036, 0xd037, 0xd039, 0xd03a, 0xd03b, 0xd03d, 0xd03e,
|
||||
0xd03f, 0xd040, 0xd041, 0xd042, 0xd043, 0xd046, 0xd048, 0xd04a, 0xd04b, 0xd04c, 0xd04d, 0xd04e, 0xd04f, 0xd051, 0xd052,
|
||||
0xd053, 0xd055, 0xd056, 0xd057, 0xd059, 0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e, 0xd05f, 0xd061, 0xd062, 0xd063, 0xd064,
|
||||
0xd065, 0xd066, 0xd067, 0xd068, 0xd069, 0xd06a, 0xd06b, 0xd06e, 0xd06f, 0xd071, 0xd072, 0xd073, 0xd075, 0xd076, 0xd077,
|
||||
0xd078, 0xd079, 0xd07a, 0xd07b, 0xd07e, 0xd07f, 0xd080, 0xd082, 0xd083, 0xd084, 0xd085, 0xd086, 0xd087, 0xd088, 0xd089,
|
||||
0xd08a, 0xd08b, 0xd08c, 0xd08d, 0xd08e, 0xd08f, 0xd090, 0xd091, 0xd092, 0xd093, 0xd094, 0xd095, 0xd096, 0xd097, 0xd098,
|
||||
0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d, 0xd09e, 0xd09f, 0xd0a0, 0xd0a1, 0xd0a2, 0xd0a3, 0xd0a6, 0xd0a7, 0xd0a9, 0xd0aa,
|
||||
0xd0ab, 0xd0ad, 0xd0ae, 0xd0af, 0xd0b0, 0xd0b1, 0xd0b2, 0xd0b3, 0xd0b6, 0xd0b8, 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0be,
|
||||
0xd0bf, 0xd0c2, 0xd0c3, 0xd0c5, 0xd0c6, 0xd0c7, 0xd0ca, 0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce, 0xd0cf, 0xd0d2, 0xd0d6, 0xd0d7,
|
||||
0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xd0de, 0xd0df, 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8, 0xd0e9, 0xd0ea,
|
||||
0xd0eb, 0xd0ee, 0xd0f2, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0xd0f9, 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd0fe, 0xd0ff,
|
||||
0xd100, 0xd101, 0xd102, 0xd103, 0xd104, 0xd105, 0xd106, 0xd107, 0xd108, 0xd109, 0xd10a, 0xd10b, 0xd10c, 0xd10e, 0xd10f,
|
||||
0xd110, 0xd111, 0xd112, 0xd113, 0xd114, 0xd115, 0xd116, 0xd117, 0xd118, 0xd119, 0xd11a, 0xd11b, 0xd11c, 0xd11d, 0xd11e,
|
||||
0xd11f, 0xd120, 0xd121, 0xd122, 0xd123, 0xd124, 0xd125, 0xd126, 0xd127, 0xd128, 0xd129, 0xd12a, 0xd12b, 0xd12c, 0xd12d,
|
||||
0xd12e, 0xd12f, 0xd132, 0xd133, 0xd135, 0xd136, 0xd137, 0xd139, 0xd13b, 0xd13c, 0xd13d, 0xd13e, 0xd13f, 0xd142, 0xd146,
|
||||
0xd147, 0xd148, 0xd149, 0xd14a, 0xd14b, 0xd14e, 0xd14f, 0xd151, 0xd152, 0xd153, 0xd155, 0xd156, 0xd157, 0xd158, 0xd159,
|
||||
0xd15a, 0xd15b, 0xd15e, 0xd160, 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0xd169, 0xd16a, 0xd16b, 0xd16d, 0xd16e,
|
||||
0xd16f, 0xd170, 0xd171, 0xd172, 0xd173, 0xd174, 0xd175, 0xd176, 0xd177, 0xd178, 0xd179, 0xd17a, 0xd17b, 0xd17d, 0xd17e,
|
||||
0xd17f, 0xd180, 0xd181, 0xd182, 0xd183, 0xd185, 0xd186, 0xd187, 0xd189, 0xd18a, 0xd18b, 0xd18c, 0xd18d, 0xd18e, 0xd18f,
|
||||
0xd190, 0xd191, 0xd192, 0xd193, 0xd194, 0xd195, 0xd196, 0xd197, 0xd198, 0xd199, 0xd19a, 0xd19b, 0xd19c, 0xd19d, 0xd19e,
|
||||
0xd19f, 0xd1a2, 0xd1a3, 0xd1a5, 0xd1a6, 0xd1a7, 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af, 0xd1b2, 0xd1b4,
|
||||
0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9, 0xd1bb, 0xd1bd, 0xd1be, 0xd1bf, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6, 0xd1c7,
|
||||
0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, 0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0, 0xd1d1, 0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6,
|
||||
0xd1d7, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, 0xd1de, 0xd1df, 0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6,
|
||||
0xd1e7, 0xd1e8, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee, 0xd1ef, 0xd1f0, 0xd1f1, 0xd1f2, 0xd1f3, 0xd1f5, 0xd1f6,
|
||||
0xd1f7, 0xd1f9, 0xd1fa, 0xd1fb, 0xd1fc, 0xd1fd, 0xd1fe, 0xd1ff, 0xd200, 0xd201, 0xd202, 0xd203, 0xd204, 0xd205, 0xd206,
|
||||
0xd208, 0xd20a, 0xd20b, 0xd20c, 0xd20d, 0xd20e, 0xd20f, 0xd211, 0xd212, 0xd213, 0xd214, 0xd215, 0xd216, 0xd217, 0xd218,
|
||||
0xd219, 0xd21a, 0xd21b, 0xd21c, 0xd21d, 0xd21e, 0xd21f, 0xd220, 0xd221, 0xd222, 0xd223, 0xd224, 0xd225, 0xd226, 0xd227,
|
||||
0xd228, 0xd229, 0xd22a, 0xd22b, 0xd22e, 0xd22f, 0xd231, 0xd232, 0xd233, 0xd235, 0xd236, 0xd237, 0xd238, 0xd239, 0xd23a,
|
||||
0xd23b, 0xd23e, 0xd240, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, 0xd249, 0xd24a, 0xd24b, 0xd24c, 0xd24d, 0xd24e,
|
||||
0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, 0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25d, 0xd25e,
|
||||
0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, 0xd26e,
|
||||
0xd26f, 0xd270, 0xd271, 0xd272, 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, 0xd27a, 0xd27b, 0xd27c, 0xd27d,
|
||||
0xd27e, 0xd27f, 0xd282, 0xd283, 0xd285, 0xd286, 0xd287, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, 0xd28f, 0xd292,
|
||||
0xd293, 0xd294, 0xd296, 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29d, 0xd29e, 0xd29f, 0xd2a1, 0xd2a2, 0xd2a3, 0xd2a5,
|
||||
0xd2a6, 0xd2a7, 0xd2a8, 0xd2a9, 0xd2aa, 0xd2ab, 0xd2ad, 0xd2ae, 0xd2af, 0xd2b0, 0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6,
|
||||
0xd2b7, 0xd2ba, 0xd2bb, 0xd2bd, 0xd2be, 0xd2c1, 0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6, 0xd2c7, 0xd2ca, 0xd2cc, 0xd2cd, 0xd2ce,
|
||||
0xd2cf, 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0xd2d5, 0xd2d6, 0xd2d7, 0xd2d9, 0xd2da, 0xd2db, 0xd2dd, 0xd2de, 0xd2df, 0xd2e0,
|
||||
0xd2e1, 0xd2e2, 0xd2e3, 0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9, 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, 0xd2f2, 0xd2f3,
|
||||
0xd2f5, 0xd2f6, 0xd2f7, 0xd2f9, 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe, 0xd2ff, 0xd302, 0xd304, 0xd306, 0xd307, 0xd308,
|
||||
0xd309, 0xd30a, 0xd30b, 0xd30f, 0xd311, 0xd312, 0xd313, 0xd315, 0xd317, 0xd318, 0xd319, 0xd31a, 0xd31b, 0xd31e, 0xd322,
|
||||
0xd323, 0xd324, 0xd326, 0xd327, 0xd32a, 0xd32b, 0xd32d, 0xd32e, 0xd32f, 0xd331, 0xd332, 0xd333, 0xd334, 0xd335, 0xd336,
|
||||
0xd337, 0xd33a, 0xd33e, 0xd33f, 0xd340, 0xd341, 0xd342, 0xd343, 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c,
|
||||
0xd34d, 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355, 0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b,
|
||||
0xd35c, 0xd35d, 0xd35e, 0xd35f, 0xd360, 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367, 0xd368, 0xd369, 0xd36a,
|
||||
0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f, 0xd370, 0xd371, 0xd372, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377, 0xd378, 0xd379,
|
||||
0xd37a, 0xd37b, 0xd37e, 0xd37f, 0xd381, 0xd382, 0xd383, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38e,
|
||||
0xd392, 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0xd39a, 0xd39b, 0xd39d, 0xd39e, 0xd39f, 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4,
|
||||
0xd3a5, 0xd3a6, 0xd3a7, 0xd3aa, 0xd3ac, 0xd3ae, 0xd3af, 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0xd3b5, 0xd3b6, 0xd3b7, 0xd3b9,
|
||||
0xd3ba, 0xd3bb, 0xd3bd, 0xd3be, 0xd3bf, 0xd3c0, 0xd3c1, 0xd3c2, 0xd3c3, 0xd3c6, 0xd3c7, 0xd3ca, 0xd3cb, 0xd3cc, 0xd3cd,
|
||||
0xd3ce, 0xd3cf, 0xd3d1, 0xd3d2, 0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6, 0xd3d7, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc, 0xd3dd, 0xd3de,
|
||||
0xd3df, 0xd3e0, 0xd3e2, 0xd3e4, 0xd3e5, 0xd3e6, 0xd3e7, 0xd3e8, 0xd3e9, 0xd3ea, 0xd3eb, 0xd3ee, 0xd3ef, 0xd3f1, 0xd3f2,
|
||||
0xd3f3, 0xd3f5, 0xd3f6, 0xd3f7, 0xd3f8, 0xd3f9, 0xd3fa, 0xd3fb, 0xd3fe, 0xd400, 0xd402, 0xd403, 0xd404, 0xd405, 0xd406,
|
||||
0xd407, 0xd409, 0xd40a, 0xd40b, 0xd40c, 0xd40d, 0xd40e, 0xd40f, 0xd410, 0xd411, 0xd412, 0xd413, 0xd414, 0xd415, 0xd416,
|
||||
0xd417, 0xd418, 0xd419, 0xd41a, 0xd41b, 0xd41c, 0xd41e, 0xd41f, 0xd420, 0xd421, 0xd422, 0xd423, 0xd424, 0xd425, 0xd426,
|
||||
0xd427, 0xd428, 0xd429, 0xd42a, 0xd42b, 0xd42c, 0xd42d, 0xd42e, 0xd42f, 0xd430, 0xd431, 0xd432, 0xd433, 0xd434, 0xd435,
|
||||
0xd436, 0xd437, 0xd438, 0xd439, 0xd43a, 0xd43b, 0xd43c, 0xd43d, 0xd43e, 0xd43f, 0xd441, 0xd442, 0xd443, 0xd445, 0xd446,
|
||||
0xd447, 0xd448, 0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, 0xd450, 0xd451, 0xd452, 0xd453, 0xd454, 0xd455,
|
||||
0xd456, 0xd457, 0xd458, 0xd459, 0xd45a, 0xd45b, 0xd45d, 0xd45e, 0xd45f, 0xd461, 0xd462, 0xd463, 0xd465, 0xd466, 0xd467,
|
||||
0xd468, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46e, 0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, 0xd47a,
|
||||
0xd47b, 0xd47d, 0xd47e, 0xd481, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, 0xd48a, 0xd48c, 0xd48e, 0xd48f, 0xd490, 0xd491,
|
||||
0xd492, 0xd493, 0xd495, 0xd496, 0xd497, 0xd498, 0xd499, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, 0xd4a0, 0xd4a1,
|
||||
0xd4a2, 0xd4a3, 0xd4a4, 0xd4a5, 0xd4a6, 0xd4a7, 0xd4a8, 0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad, 0xd4ae, 0xd4af, 0xd4b0, 0xd4b1,
|
||||
0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6, 0xd4b7, 0xd4b8, 0xd4b9, 0xd4ba, 0xd4bb, 0xd4bc, 0xd4bd, 0xd4be, 0xd4bf, 0xd4c0,
|
||||
0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4, 0xd4c5, 0xd4c6, 0xd4c7, 0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0xd4cd, 0xd4ce, 0xd4cf, 0xd4d1,
|
||||
0xd4d2, 0xd4d3, 0xd4d5, 0xd4d6, 0xd4d7, 0xd4d8, 0xd4d9, 0xd4da, 0xd4db, 0xd4dd, 0xd4de, 0xd4e0, 0xd4e1, 0xd4e2, 0xd4e3,
|
||||
0xd4e4, 0xd4e5, 0xd4e6, 0xd4e7, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ed, 0xd4ee, 0xd4ef, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5,
|
||||
0xd4f6, 0xd4f7, 0xd4f9, 0xd4fa, 0xd4fc, 0xd4fe, 0xd4ff, 0xd500, 0xd501, 0xd502, 0xd503, 0xd505, 0xd506, 0xd507, 0xd509,
|
||||
0xd50a, 0xd50b, 0xd50d, 0xd50e, 0xd50f, 0xd510, 0xd511, 0xd512, 0xd513, 0xd516, 0xd518, 0xd519, 0xd51a, 0xd51b, 0xd51c,
|
||||
0xd51d, 0xd51e, 0xd51f, 0xd520, 0xd521, 0xd522, 0xd523, 0xd524, 0xd525, 0xd526, 0xd527, 0xd528, 0xd529, 0xd52a, 0xd52b,
|
||||
0xd52c, 0xd52d, 0xd52e, 0xd52f, 0xd530, 0xd531, 0xd532, 0xd533, 0xd534, 0xd535, 0xd536, 0xd537, 0xd538, 0xd539, 0xd53a,
|
||||
0xd53b, 0xd53e, 0xd53f, 0xd541, 0xd542, 0xd543, 0xd545, 0xd546, 0xd547, 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54e, 0xd550,
|
||||
0xd552, 0xd553, 0xd554, 0xd555, 0xd556, 0xd557, 0xd55a, 0xd55b, 0xd55d, 0xd55e, 0xd55f, 0xd561, 0xd562, 0xd563, 0xd564,
|
||||
0xd566, 0xd567, 0xd56a, 0xd56c, 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, 0xd576, 0xd577, 0xd579, 0xd57a, 0xd57b,
|
||||
0xd57d, 0xd57e, 0xd57f, 0xd580, 0xd581, 0xd582, 0xd583, 0xd586, 0xd58a, 0xd58b, 0xd58c, 0xd58d, 0xd58e, 0xd58f, 0xd591,
|
||||
0xd592, 0xd593, 0xd594, 0xd595, 0xd596, 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, 0xd59d, 0xd59e, 0xd59f, 0xd5a0,
|
||||
0xd5a1, 0xd5a2, 0xd5a3, 0xd5a4, 0xd5a6, 0xd5a7, 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0xd5ac, 0xd5ad, 0xd5ae, 0xd5af, 0xd5b0,
|
||||
0xd5b1, 0xd5b2, 0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6, 0xd5b7, 0xd5b8, 0xd5b9, 0xd5ba, 0xd5bb, 0xd5bc, 0xd5bd, 0xd5be, 0xd5bf,
|
||||
0xd5c0, 0xd5c1, 0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6, 0xd5c7, 0xd5ca, 0xd5cb, 0xd5cd, 0xd5ce, 0xd5cf, 0xd5d1, 0xd5d3,
|
||||
0xd5d4, 0xd5d5, 0xd5d6, 0xd5d7, 0xd5da, 0xd5dc, 0xd5de, 0xd5df, 0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0xd5e6, 0xd5e7, 0xd5e9,
|
||||
0xd5ea, 0xd5eb, 0xd5ed, 0xd5ee, 0xd5ef, 0xd5f0, 0xd5f1, 0xd5f2, 0xd5f3, 0xd5f6, 0xd5f8, 0xd5fa, 0xd5fb, 0xd5fc, 0xd5fd,
|
||||
0xd5fe, 0xd5ff, 0xd602, 0xd603, 0xd605, 0xd606, 0xd607, 0xd609, 0xd60a, 0xd60b, 0xd60c, 0xd60d, 0xd60e, 0xd60f, 0xd612,
|
||||
0xd616, 0xd617, 0xd618, 0xd619, 0xd61a, 0xd61b, 0xd61d, 0xd61e, 0xd61f, 0xd621, 0xd622, 0xd623, 0xd625, 0xd626, 0xd627,
|
||||
0xd628, 0xd629, 0xd62a, 0xd62b, 0xd62c, 0xd62e, 0xd62f, 0xd630, 0xd631, 0xd632, 0xd633, 0xd634, 0xd635, 0xd636, 0xd637,
|
||||
0xd63a, 0xd63b, 0xd63d, 0xd63e, 0xd63f, 0xd641, 0xd642, 0xd643, 0xd644, 0xd646, 0xd647, 0xd64a, 0xd64c, 0xd64e, 0xd64f,
|
||||
0xd650, 0xd652, 0xd653, 0xd656, 0xd657, 0xd659, 0xd65a, 0xd65b, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662, 0xd663,
|
||||
0xd664, 0xd665, 0xd666, 0xd668, 0xd66a, 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0xd672, 0xd673, 0xd675, 0xd676, 0xd677,
|
||||
0xd678, 0xd679, 0xd67a, 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd67f, 0xd680, 0xd681, 0xd682, 0xd684, 0xd686, 0xd687, 0xd688,
|
||||
0xd689, 0xd68a, 0xd68b, 0xd68e, 0xd68f, 0xd691, 0xd692, 0xd693, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a, 0xd69b,
|
||||
0xd69c, 0xd69e, 0xd6a0, 0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, 0xd6a9, 0xd6aa, 0xd6ab, 0xd6ad, 0xd6ae, 0xd6af,
|
||||
0xd6b1, 0xd6b2, 0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6, 0xd6b7, 0xd6b8, 0xd6ba, 0xd6bc, 0xd6bd, 0xd6be, 0xd6bf, 0xd6c0, 0xd6c1,
|
||||
0xd6c2, 0xd6c3, 0xd6c6, 0xd6c7, 0xd6c9, 0xd6ca, 0xd6cb, 0xd6cd, 0xd6ce, 0xd6cf, 0xd6d0, 0xd6d2, 0xd6d3, 0xd6d5, 0xd6d6,
|
||||
0xd6d8, 0xd6da, 0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df, 0xd6e1, 0xd6e2, 0xd6e3, 0xd6e5, 0xd6e6, 0xd6e7, 0xd6e9, 0xd6ea,
|
||||
0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee, 0xd6ef, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f6, 0xd6f7, 0xd6f8, 0xd6f9, 0xd6fa, 0xd6fb,
|
||||
0xd6fe, 0xd6ff, 0xd701, 0xd702, 0xd703, 0xd705, 0xd706, 0xd707, 0xd708, 0xd709, 0xd70a, 0xd70b, 0xd70c, 0xd70d, 0xd70e,
|
||||
0xd70f, 0xd710, 0xd712, 0xd713, 0xd714, 0xd715, 0xd716, 0xd717, 0xd71a, 0xd71b, 0xd71d, 0xd71e, 0xd71f, 0xd721, 0xd722,
|
||||
0xd723, 0xd724, 0xd725, 0xd726, 0xd727, 0xd72a, 0xd72c, 0xd72e, 0xd72f, 0xd730, 0xd731, 0xd732, 0xd733, 0xd736, 0xd737,
|
||||
0xd739, 0xd73a, 0xd73b, 0xd73d, 0xd73e, 0xd73f, 0xd740, 0xd741, 0xd742, 0xd743, 0xd745, 0xd746, 0xd748, 0xd74a, 0xd74b,
|
||||
0xd74c, 0xd74d, 0xd74e, 0xd74f, 0xd752, 0xd753, 0xd755, 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, 0xd762, 0xd764,
|
||||
0xd766, 0xd767, 0xd768, 0xd76a, 0xd76b, 0xd76d, 0xd76e, 0xd76f, 0xd771, 0xd772, 0xd773, 0xd775, 0xd776, 0xd777, 0xd778,
|
||||
0xd779, 0xd77a, 0xd77b, 0xd77e, 0xd77f, 0xd780, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0xd78a, 0xd78b, 0xd78d,
|
||||
0xd78e, 0xd78f, 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, 0xd79a, 0xd79c, 0xd79e, 0xd79f, 0xd7a0, 0xd7a1,
|
||||
0xd7a2, 0xd7a3
|
||||
};
|
||||
|
||||
#endif // CP949CODETBL_P_H
|
File diff suppressed because it is too large
Load Diff
@ -1,96 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// Most of the code here was originally written by Ming-Che Chuang and
|
||||
// is included in Qt with the author's permission, and the grateful
|
||||
// thanks of the Qt team.
|
||||
|
||||
#ifndef QBIG5CODEC_P_H
|
||||
#define QBIG5CODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists for the convenience
|
||||
// of other Qt classes. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
#include <QtCore/qtextcodec.h>
|
||||
#include <QtCore/qlist.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(big_codecs);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QBig5Codec : public QTextCodec {
|
||||
public:
|
||||
static QByteArray _name();
|
||||
static QList<QByteArray> _aliases();
|
||||
static int _mibEnum();
|
||||
|
||||
QByteArray name() const override { return _name(); }
|
||||
QList<QByteArray> aliases() const override { return _aliases(); }
|
||||
int mibEnum() const override { return _mibEnum(); }
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
};
|
||||
|
||||
class QBig5hkscsCodec : public QTextCodec {
|
||||
public:
|
||||
static QByteArray _name();
|
||||
static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
|
||||
static int _mibEnum();
|
||||
|
||||
QByteArray name() const override { return _name(); }
|
||||
QList<QByteArray> aliases() const override { return _aliases(); }
|
||||
int mibEnum() const override { return _mibEnum(); }
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QBIG5CODEC_P_H
|
@ -1,257 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// Most of the code here was originally written by Serika Kurusugawa
|
||||
// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
|
||||
// and the grateful thanks of the Qt team.
|
||||
|
||||
/*! \class QEucJpCodec
|
||||
\inmodule QtCore
|
||||
\reentrant
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "qeucjpcodec_p.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
static const uchar Ss2 = 0x8e; // Single Shift 2
|
||||
static const uchar Ss3 = 0x8f; // Single Shift 3
|
||||
|
||||
#define IsKana(c) (((c) >= 0xa1) && ((c) <= 0xdf))
|
||||
#define IsEucChar(c) (((c) >= 0xa1) && ((c) <= 0xfe))
|
||||
|
||||
#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
|
||||
|
||||
/*!
|
||||
Constructs a QEucJpCodec.
|
||||
*/
|
||||
QEucJpCodec::QEucJpCodec() : conv(QJpUnicodeConv::newConverter(QJpUnicodeConv::Default))
|
||||
{
|
||||
}
|
||||
|
||||
/*!
|
||||
Destroys the codec.
|
||||
*/
|
||||
QEucJpCodec::~QEucJpCodec()
|
||||
{
|
||||
delete (const QJpUnicodeConv*)conv;
|
||||
conv = 0;
|
||||
}
|
||||
|
||||
QByteArray QEucJpCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
|
||||
{
|
||||
char replacement = '?';
|
||||
if (state) {
|
||||
if (state->flags & ConvertInvalidToNull)
|
||||
replacement = 0;
|
||||
}
|
||||
int invalid = 0;
|
||||
|
||||
int rlen = 3*len + 1;
|
||||
QByteArray rstr;
|
||||
rstr.resize(rlen);
|
||||
uchar* cursor = (uchar*)rstr.data();
|
||||
for (int i = 0; i < len; i++) {
|
||||
QChar ch = uc[i];
|
||||
uint j;
|
||||
if (ch.unicode() < 0x80) {
|
||||
// ASCII
|
||||
*cursor++ = ch.cell();
|
||||
} else if ((j = conv->unicodeToJisx0201(ch.row(), ch.cell())) != 0) {
|
||||
if (j < 0x80) {
|
||||
// JIS X 0201 Latin ?
|
||||
*cursor++ = j;
|
||||
} else {
|
||||
// JIS X 0201 Kana
|
||||
*cursor++ = Ss2;
|
||||
*cursor++ = j;
|
||||
}
|
||||
} else if ((j = conv->unicodeToJisx0208(ch.row(), ch.cell())) != 0) {
|
||||
// JIS X 0208
|
||||
*cursor++ = (j >> 8) | 0x80;
|
||||
*cursor++ = (j & 0xff) | 0x80;
|
||||
} else if ((j = conv->unicodeToJisx0212(ch.row(), ch.cell())) != 0) {
|
||||
// JIS X 0212
|
||||
*cursor++ = Ss3;
|
||||
*cursor++ = (j >> 8) | 0x80;
|
||||
*cursor++ = (j & 0xff) | 0x80;
|
||||
} else {
|
||||
// Error
|
||||
*cursor++ = replacement;
|
||||
++invalid;
|
||||
}
|
||||
}
|
||||
rstr.resize(cursor - (const uchar*)rstr.constData());
|
||||
|
||||
if (state) {
|
||||
state->invalidChars += invalid;
|
||||
}
|
||||
return rstr;
|
||||
}
|
||||
|
||||
|
||||
QString QEucJpCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
|
||||
{
|
||||
uchar buf[2] = {0, 0};
|
||||
int nbuf = 0;
|
||||
QChar replacement = QChar::ReplacementCharacter;
|
||||
if (state) {
|
||||
if (state->flags & ConvertInvalidToNull)
|
||||
replacement = QChar::Null;
|
||||
nbuf = state->remainingChars;
|
||||
buf[0] = state->state_data[0];
|
||||
buf[1] = state->state_data[1];
|
||||
}
|
||||
int invalid = 0;
|
||||
|
||||
QString result;
|
||||
for (int i=0; i<len; i++) {
|
||||
uchar ch = chars[i];
|
||||
switch (nbuf) {
|
||||
case 0:
|
||||
if (ch < 0x80) {
|
||||
// ASCII
|
||||
result += QLatin1Char(ch);
|
||||
} else if (ch == Ss2 || ch == Ss3) {
|
||||
// JIS X 0201 Kana or JIS X 0212
|
||||
buf[0] = ch;
|
||||
nbuf = 1;
|
||||
} else if (IsEucChar(ch)) {
|
||||
// JIS X 0208
|
||||
buf[0] = ch;
|
||||
nbuf = 1;
|
||||
} else {
|
||||
// Invalid
|
||||
result += replacement;
|
||||
++invalid;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (buf[0] == Ss2) {
|
||||
// JIS X 0201 Kana
|
||||
if (IsKana(ch)) {
|
||||
uint u = conv->jisx0201ToUnicode(ch);
|
||||
result += QValidChar(u);
|
||||
} else {
|
||||
result += replacement;
|
||||
++invalid;
|
||||
}
|
||||
nbuf = 0;
|
||||
} else if (buf[0] == Ss3) {
|
||||
// JIS X 0212-1990
|
||||
if (IsEucChar(ch)) {
|
||||
buf[1] = ch;
|
||||
nbuf = 2;
|
||||
} else {
|
||||
// Error
|
||||
result += replacement;
|
||||
++invalid;
|
||||
nbuf = 0;
|
||||
}
|
||||
} else {
|
||||
// JIS X 0208-1990
|
||||
if (IsEucChar(ch)) {
|
||||
uint u = conv->jisx0208ToUnicode(buf[0] & 0x7f, ch & 0x7f);
|
||||
result += QValidChar(u);
|
||||
} else {
|
||||
// Error
|
||||
result += replacement;
|
||||
++invalid;
|
||||
}
|
||||
nbuf = 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
// JIS X 0212
|
||||
if (IsEucChar(ch)) {
|
||||
uint u = conv->jisx0212ToUnicode(buf[1] & 0x7f, ch & 0x7f);
|
||||
result += QValidChar(u);
|
||||
} else {
|
||||
result += replacement;
|
||||
++invalid;
|
||||
}
|
||||
nbuf = 0;
|
||||
}
|
||||
}
|
||||
if (state) {
|
||||
state->remainingChars = nbuf;
|
||||
state->state_data[0] = buf[0];
|
||||
state->state_data[1] = buf[1];
|
||||
state->invalidChars += invalid;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
int QEucJpCodec::_mibEnum()
|
||||
{
|
||||
return 18;
|
||||
}
|
||||
|
||||
QByteArray QEucJpCodec::_name()
|
||||
{
|
||||
return "EUC-JP";
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
@ -1,113 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// Most of the code here was originally written by Serika Kurusugawa
|
||||
// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
|
||||
// and the grateful thanks of the Qt team.
|
||||
|
||||
/*
|
||||
* Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef QEUCJPCODEC_P_H
|
||||
#define QEUCJPCODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists for the convenience
|
||||
// of other Qt classes. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include "qjpunicode_p.h"
|
||||
#include <QtCore/qtextcodec.h>
|
||||
#include <QtCore/qlist.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(big_codecs);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QEucJpCodec : public QTextCodec {
|
||||
public:
|
||||
static QByteArray _name();
|
||||
static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
|
||||
static int _mibEnum();
|
||||
|
||||
QByteArray name() const override { return _name(); }
|
||||
QList<QByteArray> aliases() const override { return _aliases(); }
|
||||
int mibEnum() const override { return _mibEnum(); }
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
|
||||
QEucJpCodec();
|
||||
~QEucJpCodec();
|
||||
|
||||
protected:
|
||||
const QJpUnicodeConv *conv;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QEUCJPCODEC_P_H
|
File diff suppressed because it is too large
Load Diff
@ -1,117 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 1999-2000 Mizi Research Inc. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef QEUCKRCODEC_P_H
|
||||
#define QEUCKRCODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists for the convenience
|
||||
// of other Qt classes. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
#include <QtCore/qtextcodec.h>
|
||||
#include <QtCore/qlist.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(big_codecs);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QEucKrCodec : public QTextCodec {
|
||||
public:
|
||||
static QByteArray _name();
|
||||
static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
|
||||
static int _mibEnum();
|
||||
|
||||
QByteArray name() const override { return _name(); }
|
||||
QList<QByteArray> aliases() const override { return _aliases(); }
|
||||
int mibEnum() const override { return _mibEnum(); }
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
};
|
||||
|
||||
class QCP949Codec : public QTextCodec {
|
||||
public:
|
||||
static QByteArray _name();
|
||||
static QList<QByteArray> _aliases();
|
||||
static int _mibEnum();
|
||||
|
||||
QByteArray name() const override { return _name(); }
|
||||
QList<QByteArray> aliases() const override { return _aliases(); }
|
||||
int mibEnum() const override { return _mibEnum(); }
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QEUCKRCODEC_P_H
|
File diff suppressed because it is too large
Load Diff
@ -1,113 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// Contributed by James Su <suzhe@gnuchina.org>
|
||||
|
||||
#ifndef QGB18030CODEC_P_H
|
||||
#define QGB18030CODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists for the convenience
|
||||
// of other Qt classes. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
#include <QtCore/qtextcodec.h>
|
||||
#include <QtCore/qlist.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(big_codecs);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QGb18030Codec : public QTextCodec {
|
||||
public:
|
||||
QGb18030Codec();
|
||||
|
||||
static QByteArray _name() { return "GB18030"; }
|
||||
static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
|
||||
static int _mibEnum() { return 114; }
|
||||
|
||||
QByteArray name() const override { return _name(); }
|
||||
QList<QByteArray> aliases() const override { return _aliases(); }
|
||||
int mibEnum() const override { return _mibEnum(); }
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
};
|
||||
|
||||
class QGbkCodec : public QGb18030Codec {
|
||||
public:
|
||||
QGbkCodec();
|
||||
|
||||
static QByteArray _name();
|
||||
static QList<QByteArray> _aliases();
|
||||
static int _mibEnum();
|
||||
|
||||
QByteArray name() const override { return _name(); }
|
||||
QList<QByteArray> aliases() const override { return _aliases(); }
|
||||
int mibEnum() const override { return _mibEnum(); }
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
};
|
||||
|
||||
class QGb2312Codec : public QGb18030Codec {
|
||||
public:
|
||||
QGb2312Codec();
|
||||
|
||||
static QByteArray _name();
|
||||
static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
|
||||
static int _mibEnum();
|
||||
|
||||
QByteArray name() const override { return _name(); }
|
||||
int mibEnum() const override { return _mibEnum(); }
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QGB18030CODEC_P_H
|
@ -1,522 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
|
||||
#include "qiconvcodec_p.h"
|
||||
#include "qtextcodec_p.h"
|
||||
#include <qdebug.h>
|
||||
#include <qthreadstorage.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <dlfcn.h>
|
||||
|
||||
// unistd.h is needed for the _XOPEN_UNIX macro
|
||||
#include <unistd.h>
|
||||
#if defined(_XOPEN_UNIX) && !defined(Q_OS_QNX)
|
||||
# include <langinfo.h>
|
||||
#endif
|
||||
|
||||
#if defined(Q_OS_HPUX)
|
||||
# define NO_BOM
|
||||
# define UTF16 "ucs2"
|
||||
#elif defined(Q_OS_AIX)
|
||||
# define NO_BOM
|
||||
# define UTF16 "UCS-2"
|
||||
#elif defined(Q_OS_FREEBSD)
|
||||
# define NO_BOM
|
||||
# if Q_BYTE_ORDER == Q_BIG_ENDIAN
|
||||
# define UTF16 "UTF-16BE"
|
||||
# else
|
||||
# define UTF16 "UTF-16LE"
|
||||
# endif
|
||||
#else
|
||||
# define UTF16 "UTF-16"
|
||||
#endif
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
QIconvCodec::QIconvCodec()
|
||||
: utf16Codec(0)
|
||||
{
|
||||
}
|
||||
|
||||
void QIconvCodec::init() const
|
||||
{
|
||||
utf16Codec = QTextCodec::codecForMib(1015);
|
||||
Q_ASSERT_X(utf16Codec != 0,
|
||||
"QIconvCodec::convertToUnicode",
|
||||
"internal error, UTF-16 codec not found");
|
||||
if (!utf16Codec) {
|
||||
fprintf(stderr, "QIconvCodec::convertToUnicode: internal error, UTF-16 codec not found\n");
|
||||
utf16Codec = reinterpret_cast<QTextCodec *>(~0);
|
||||
}
|
||||
}
|
||||
|
||||
QIconvCodec::~QIconvCodec()
|
||||
{
|
||||
}
|
||||
|
||||
QIconvCodec::IconvState::IconvState(iconv_t x)
|
||||
: buffer(array), bufferLen(sizeof array), cd(x)
|
||||
{
|
||||
}
|
||||
|
||||
QIconvCodec::IconvState::~IconvState()
|
||||
{
|
||||
if (cd != reinterpret_cast<iconv_t>(-1))
|
||||
iconv_close(cd);
|
||||
if (buffer != array)
|
||||
delete[] buffer;
|
||||
}
|
||||
|
||||
void QIconvCodec::IconvState::saveChars(const char *c, int count)
|
||||
{
|
||||
if (count > bufferLen) {
|
||||
if (buffer != array)
|
||||
delete[] buffer;
|
||||
buffer = new char[bufferLen = count];
|
||||
}
|
||||
|
||||
memcpy(buffer, c, count);
|
||||
}
|
||||
|
||||
static void qIconvCodecStateFree(QTextCodec::ConverterState *state)
|
||||
{
|
||||
delete reinterpret_cast<QIconvCodec::IconvState *>(state->d[0]);
|
||||
}
|
||||
|
||||
Q_GLOBAL_STATIC(QThreadStorage<QIconvCodec::IconvState *>, toUnicodeState)
|
||||
|
||||
QString QIconvCodec::convertToUnicode(const char* chars, int len, ConverterState *convState) const
|
||||
{
|
||||
if (utf16Codec == reinterpret_cast<QTextCodec *>(~0))
|
||||
return QString::fromLatin1(chars, len);
|
||||
|
||||
int invalidCount = 0;
|
||||
int remainingCount = 0;
|
||||
char *remainingBuffer = 0;
|
||||
IconvState *temporaryState = 0;
|
||||
IconvState **pstate;
|
||||
|
||||
if (convState) {
|
||||
// stateful conversion
|
||||
pstate = reinterpret_cast<IconvState **>(&convState->d[0]);
|
||||
if (convState->d[0]) {
|
||||
// restore state
|
||||
remainingCount = convState->remainingChars;
|
||||
remainingBuffer = (*pstate)->buffer;
|
||||
} else {
|
||||
// first time
|
||||
convState->clearFn = qIconvCodecStateFree;
|
||||
}
|
||||
} else {
|
||||
QThreadStorage<QIconvCodec::IconvState *> *ts = toUnicodeState();
|
||||
if (!ts) {
|
||||
// we're running after the Q_GLOBAL_STATIC has been deleted
|
||||
// or before the QCoreApplication initialization
|
||||
// bad programmer, no cookie for you
|
||||
pstate = &temporaryState;
|
||||
} else {
|
||||
// stateless conversion -- use thread-local data
|
||||
pstate = &toUnicodeState()->localData();
|
||||
}
|
||||
}
|
||||
|
||||
if (!*pstate) {
|
||||
// first time, create the state
|
||||
iconv_t cd = createIconv_t(UTF16, 0);
|
||||
if (cd == reinterpret_cast<iconv_t>(-1)) {
|
||||
static int reported = 0;
|
||||
if (!reported++) {
|
||||
fprintf(stderr,
|
||||
"QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed\n");
|
||||
}
|
||||
return QString::fromLatin1(chars, len);
|
||||
}
|
||||
|
||||
*pstate = new IconvState(cd);
|
||||
}
|
||||
|
||||
IconvState *state = *pstate;
|
||||
size_t inBytesLeft = len;
|
||||
// best case assumption, each byte is converted into one UTF-16 character, plus 2 bytes for the BOM
|
||||
#if !QT_CONFIG(posix_libiconv)
|
||||
// GNU doesn't disagree with POSIX :/
|
||||
const char *inBytes = chars;
|
||||
#else
|
||||
char *inBytes = const_cast<char *>(chars);
|
||||
#endif
|
||||
|
||||
QByteArray in;
|
||||
if (remainingCount) {
|
||||
// we have to prepend the remaining bytes from the previous conversion
|
||||
inBytesLeft += remainingCount;
|
||||
in.resize(inBytesLeft);
|
||||
inBytes = in.data();
|
||||
|
||||
memcpy(in.data(), remainingBuffer, remainingCount);
|
||||
memcpy(in.data() + remainingCount, chars, len);
|
||||
|
||||
remainingCount = 0;
|
||||
}
|
||||
|
||||
size_t outBytesLeft = len * 2 + 2;
|
||||
QByteArray ba(outBytesLeft, Qt::Uninitialized);
|
||||
char *outBytes = ba.data();
|
||||
do {
|
||||
size_t ret = iconv(state->cd, &inBytes, &inBytesLeft, &outBytes, &outBytesLeft);
|
||||
if (ret == (size_t) -1) {
|
||||
if (errno == E2BIG) {
|
||||
int offset = ba.size() - outBytesLeft;
|
||||
ba.resize(ba.size() * 2);
|
||||
outBytes = ba.data() + offset;
|
||||
outBytesLeft = ba.size() - offset;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (errno == EILSEQ) {
|
||||
// conversion stopped because of an invalid character in the sequence
|
||||
++invalidCount;
|
||||
} else if (errno == EINVAL && convState) {
|
||||
// conversion stopped because the remaining inBytesLeft make up
|
||||
// an incomplete multi-byte sequence; save them for later
|
||||
state->saveChars(inBytes, inBytesLeft);
|
||||
remainingCount = inBytesLeft;
|
||||
break;
|
||||
}
|
||||
|
||||
if (errno == EILSEQ || errno == EINVAL) {
|
||||
// skip the next character
|
||||
++inBytes;
|
||||
--inBytesLeft;
|
||||
continue;
|
||||
}
|
||||
|
||||
// some other error
|
||||
// note, cannot use qWarning() since we are implementing the codecForLocale :)
|
||||
perror("QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv failed");
|
||||
|
||||
if (!convState) {
|
||||
// reset state
|
||||
iconv(state->cd, 0, &inBytesLeft, 0, &outBytesLeft);
|
||||
}
|
||||
|
||||
delete temporaryState;
|
||||
return QString::fromLatin1(chars, len);
|
||||
}
|
||||
} while (inBytesLeft != 0);
|
||||
|
||||
QString s;
|
||||
|
||||
if (convState) {
|
||||
s = utf16Codec->toUnicode(ba.constData(), ba.size() - outBytesLeft, &state->internalState);
|
||||
|
||||
convState->invalidChars = invalidCount;
|
||||
convState->remainingChars = remainingCount;
|
||||
} else {
|
||||
s = utf16Codec->toUnicode(ba.constData(), ba.size() - outBytesLeft);
|
||||
|
||||
// reset state
|
||||
iconv(state->cd, 0, &inBytesLeft, 0, &outBytesLeft);
|
||||
}
|
||||
|
||||
delete temporaryState;
|
||||
return s;
|
||||
}
|
||||
|
||||
Q_GLOBAL_STATIC(QThreadStorage<QIconvCodec::IconvState *>, fromUnicodeState)
|
||||
|
||||
static bool setByteOrder(iconv_t cd)
|
||||
{
|
||||
#if !defined(NO_BOM)
|
||||
// give iconv() a BOM
|
||||
char buf[4];
|
||||
ushort bom[] = { QChar::ByteOrderMark };
|
||||
|
||||
char *outBytes = buf;
|
||||
char *inBytes = reinterpret_cast<char *>(bom);
|
||||
size_t outBytesLeft = sizeof buf;
|
||||
size_t inBytesLeft = sizeof bom;
|
||||
|
||||
#if !QT_CONFIG(posix_libiconv)
|
||||
const char **inBytesPtr = const_cast<const char **>(&inBytes);
|
||||
#else
|
||||
char **inBytesPtr = &inBytes;
|
||||
#endif
|
||||
|
||||
if (iconv(cd, inBytesPtr, &inBytesLeft, &outBytes, &outBytesLeft) == (size_t) -1) {
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
Q_UNUSED(cd);
|
||||
#endif // NO_BOM
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QByteArray QIconvCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *convState) const
|
||||
{
|
||||
char *inBytes;
|
||||
char *outBytes;
|
||||
size_t inBytesLeft;
|
||||
|
||||
#if !QT_CONFIG(posix_libiconv)
|
||||
const char **inBytesPtr = const_cast<const char **>(&inBytes);
|
||||
#else
|
||||
char **inBytesPtr = &inBytes;
|
||||
#endif
|
||||
|
||||
IconvState *temporaryState = 0;
|
||||
QThreadStorage<QIconvCodec::IconvState *> *ts = fromUnicodeState();
|
||||
IconvState *&state = ts ? ts->localData() : temporaryState;
|
||||
if (!state) {
|
||||
iconv_t cd = createIconv_t(0, UTF16);
|
||||
if (cd != reinterpret_cast<iconv_t>(-1)) {
|
||||
if (!setByteOrder(cd)) {
|
||||
perror("QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv failed for BOM");
|
||||
|
||||
iconv_close(cd);
|
||||
cd = reinterpret_cast<iconv_t>(-1);
|
||||
|
||||
return QString(uc, len).toLatin1();
|
||||
}
|
||||
}
|
||||
state = new IconvState(cd);
|
||||
}
|
||||
if (state->cd == reinterpret_cast<iconv_t>(-1)) {
|
||||
static int reported = 0;
|
||||
if (!reported++) {
|
||||
fprintf(stderr,
|
||||
"QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed\n");
|
||||
}
|
||||
delete temporaryState;
|
||||
return QString(uc, len).toLatin1();
|
||||
}
|
||||
|
||||
size_t outBytesLeft = len;
|
||||
QByteArray ba(outBytesLeft, Qt::Uninitialized);
|
||||
outBytes = ba.data();
|
||||
|
||||
// now feed iconv() the real data
|
||||
inBytes = const_cast<char *>(reinterpret_cast<const char *>(uc));
|
||||
inBytesLeft = len * sizeof(QChar);
|
||||
|
||||
QByteArray in;
|
||||
if (convState && convState->remainingChars) {
|
||||
// we have one surrogate char to be prepended
|
||||
in.resize(sizeof(QChar) + len);
|
||||
inBytes = in.data();
|
||||
|
||||
QChar remaining = convState->state_data[0];
|
||||
memcpy(in.data(), &remaining, sizeof(QChar));
|
||||
memcpy(in.data() + sizeof(QChar), uc, inBytesLeft);
|
||||
|
||||
inBytesLeft += sizeof(QChar);
|
||||
convState->remainingChars = 0;
|
||||
}
|
||||
|
||||
int invalidCount = 0;
|
||||
while (inBytesLeft != 0) {
|
||||
if (iconv(state->cd, inBytesPtr, &inBytesLeft, &outBytes, &outBytesLeft) == (size_t) -1) {
|
||||
if (errno == EINVAL && convState) {
|
||||
// buffer ends in a surrogate
|
||||
Q_ASSERT(inBytesLeft == 2);
|
||||
convState->remainingChars = 1;
|
||||
convState->state_data[0] = uc[len - 1].unicode();
|
||||
break;
|
||||
}
|
||||
|
||||
switch (errno) {
|
||||
case EILSEQ:
|
||||
++invalidCount;
|
||||
Q_FALLTHROUGH();
|
||||
case EINVAL:
|
||||
{
|
||||
inBytes += sizeof(QChar);
|
||||
inBytesLeft -= sizeof(QChar);
|
||||
break;
|
||||
}
|
||||
case E2BIG:
|
||||
{
|
||||
int offset = ba.size() - outBytesLeft;
|
||||
ba.resize(ba.size() * 2);
|
||||
outBytes = ba.data() + offset;
|
||||
outBytesLeft = ba.size() - offset;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
// note, cannot use qWarning() since we are implementing the codecForLocale :)
|
||||
perror("QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv failed");
|
||||
|
||||
// reset to initial state
|
||||
iconv(state->cd, 0, &inBytesLeft, 0, &outBytesLeft);
|
||||
|
||||
delete temporaryState;
|
||||
return QString(uc, len).toLatin1();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// reset to initial state
|
||||
iconv(state->cd, 0, &inBytesLeft, 0, &outBytesLeft);
|
||||
setByteOrder(state->cd);
|
||||
|
||||
ba.resize(ba.size() - outBytesLeft);
|
||||
|
||||
if (convState)
|
||||
convState->invalidChars = invalidCount;
|
||||
|
||||
delete temporaryState;
|
||||
return ba;
|
||||
}
|
||||
|
||||
QByteArray QIconvCodec::name() const
|
||||
{
|
||||
return "System";
|
||||
}
|
||||
|
||||
int QIconvCodec::mibEnum() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
iconv_t QIconvCodec::createIconv_t(const char *to, const char *from) const
|
||||
{
|
||||
Q_ASSERT((to == 0 && from != 0) || (to != 0 && from == 0));
|
||||
|
||||
if (!utf16Codec)
|
||||
init();
|
||||
|
||||
iconv_t cd = (iconv_t) -1;
|
||||
#if defined(__GLIBC__) || !QT_CONFIG(posix_libiconv) || defined(Q_OS_QNX)
|
||||
#if defined(Q_OS_QNX)
|
||||
// on QNX the default locale is UTF-8, and an empty string will cause iconv_open to fail
|
||||
static const char empty_codeset[] = "UTF-8";
|
||||
#else
|
||||
// both GLIBC and libgnuiconv will use the locale's encoding if from or to is an empty string
|
||||
static const char empty_codeset[] = "";
|
||||
#endif
|
||||
const char *codeset = empty_codeset;
|
||||
cd = iconv_open(to ? to : codeset, from ? from : codeset);
|
||||
#else
|
||||
char *codeset = 0;
|
||||
#endif
|
||||
|
||||
#if defined(_XOPEN_UNIX) && !defined(Q_OS_QNX)
|
||||
if (cd == (iconv_t) -1) {
|
||||
codeset = nl_langinfo(CODESET);
|
||||
if (codeset)
|
||||
cd = iconv_open(to ? to : codeset, from ? from : codeset);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (cd == (iconv_t) -1) {
|
||||
// Very poorly defined and followed standards causes lots of
|
||||
// code to try to get all the cases... This logic is
|
||||
// duplicated in QTextCodec, so if you change it here, change
|
||||
// it there too.
|
||||
|
||||
// Try to determine locale codeset from locale name assigned to
|
||||
// LC_CTYPE category.
|
||||
|
||||
// First part is getting that locale name. First try setlocale() which
|
||||
// definitely knows it, but since we cannot fully trust it, get ready
|
||||
// to fall back to environment variables.
|
||||
char * ctype = qstrdup(setlocale(LC_CTYPE, 0));
|
||||
|
||||
// Get the first nonempty value from $LC_ALL, $LC_CTYPE, and $LANG
|
||||
// environment variables.
|
||||
char * lang = qstrdup(qgetenv("LC_ALL").constData());
|
||||
if (!lang || lang[0] == 0 || strcmp(lang, "C") == 0) {
|
||||
if (lang) delete [] lang;
|
||||
lang = qstrdup(qgetenv("LC_CTYPE").constData());
|
||||
}
|
||||
if (!lang || lang[0] == 0 || strcmp(lang, "C") == 0) {
|
||||
if (lang) delete [] lang;
|
||||
lang = qstrdup(qgetenv("LANG").constData());
|
||||
}
|
||||
|
||||
// Now try these in order:
|
||||
// 1. CODESET from ctype if it contains a .CODESET part (e.g. en_US.ISO8859-15)
|
||||
// 2. CODESET from lang if it contains a .CODESET part
|
||||
// 3. ctype (maybe the locale is named "ISO-8859-1" or something)
|
||||
// 4. locale (ditto)
|
||||
// 5. check for "@euro"
|
||||
|
||||
// 1. CODESET from ctype if it contains a .CODESET part (e.g. en_US.ISO8859-15)
|
||||
codeset = ctype ? strchr(ctype, '.') : 0;
|
||||
if (codeset && *codeset == '.') {
|
||||
++codeset;
|
||||
cd = iconv_open(to ? to : codeset, from ? from : codeset);
|
||||
}
|
||||
|
||||
// 2. CODESET from lang if it contains a .CODESET part
|
||||
codeset = lang ? strchr(lang, '.') : 0;
|
||||
if (cd == (iconv_t) -1 && codeset && *codeset == '.') {
|
||||
++codeset;
|
||||
cd = iconv_open(to ? to : codeset, from ? from : codeset);
|
||||
}
|
||||
|
||||
// 3. ctype (maybe the locale is named "ISO-8859-1" or something)
|
||||
if (cd == (iconv_t) -1 && ctype && *ctype != 0 && strcmp (ctype, "C") != 0)
|
||||
cd = iconv_open(to ? to : ctype, from ? from : ctype);
|
||||
|
||||
|
||||
// 4. locale (ditto)
|
||||
if (cd == (iconv_t) -1 && lang && *lang != 0)
|
||||
cd = iconv_open(to ? to : lang, from ? from : lang);
|
||||
|
||||
// 5. "@euro"
|
||||
if ((cd == (iconv_t) -1 && ctype && strstr(ctype, "@euro")) || (lang && strstr(lang, "@euro")))
|
||||
cd = iconv_open(to ? to : "ISO8859-15", from ? from : "ISO8859-15");
|
||||
|
||||
delete [] ctype;
|
||||
delete [] lang;
|
||||
}
|
||||
|
||||
return cd;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
@ -1,99 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef QICONVCODEC_P_H
|
||||
#define QICONVCODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
#include "qtextcodec.h"
|
||||
|
||||
QT_REQUIRE_CONFIG(iconv);
|
||||
|
||||
#include <iconv.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QIconvCodec: public QTextCodec
|
||||
{
|
||||
private:
|
||||
mutable QTextCodec *utf16Codec;
|
||||
|
||||
public:
|
||||
QIconvCodec();
|
||||
~QIconvCodec();
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
|
||||
QByteArray name() const override;
|
||||
int mibEnum() const override;
|
||||
|
||||
void init() const;
|
||||
iconv_t createIconv_t(const char *to, const char *from) const;
|
||||
|
||||
class IconvState
|
||||
{
|
||||
public:
|
||||
IconvState(iconv_t x);
|
||||
~IconvState();
|
||||
ConverterState internalState;
|
||||
char *buffer;
|
||||
int bufferLen;
|
||||
iconv_t cd;
|
||||
|
||||
char array[8];
|
||||
|
||||
void saveChars(const char *c, int count);
|
||||
};
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QICONVCODEC_P_H
|
@ -1,706 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qicucodec_p.h"
|
||||
|
||||
#include "qtextcodec_p.h"
|
||||
#include "qutfcodec_p.h"
|
||||
#include "qlatincodec_p.h"
|
||||
#include "qsimplecodec_p.h"
|
||||
#include "qdebug.h"
|
||||
|
||||
#include "unicode/ucnv.h"
|
||||
|
||||
#if QT_CONFIG(codecs)
|
||||
#include "qtsciicodec_p.h"
|
||||
#include "qisciicodec_p.h"
|
||||
#endif
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
typedef QList<QTextCodec*>::ConstIterator TextCodecListConstIt;
|
||||
typedef QList<QByteArray>::ConstIterator ByteArrayListConstIt;
|
||||
|
||||
static void qIcuCodecStateFree(QTextCodec::ConverterState *state)
|
||||
{
|
||||
ucnv_close(static_cast<UConverter *>(state->d[0]));
|
||||
}
|
||||
|
||||
bool qTextCodecNameMatch(const char *n, const char *h)
|
||||
{
|
||||
return ucnv_compareNames(n, h) == 0;
|
||||
}
|
||||
|
||||
/* The list below is generated from http://www.iana.org/assignments/character-sets/
|
||||
using the snippet of code below:
|
||||
|
||||
#include <QtCore>
|
||||
#include <unicode/ucnv.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
QCoreApplication app(argc, argv);
|
||||
|
||||
QFile file("character-sets.txt");
|
||||
file.open(QFile::ReadOnly);
|
||||
QByteArray name;
|
||||
int mib = -1;
|
||||
QByteArray nameList;
|
||||
int pos = 0;
|
||||
while (!file.atEnd()) {
|
||||
QByteArray s = file.readLine().trimmed();
|
||||
if (s.isEmpty()) {
|
||||
if (mib != -1) {
|
||||
UErrorCode error = U_ZERO_ERROR;
|
||||
const char *standard_name = ucnv_getStandardName(name, "MIME", &error);
|
||||
if (U_FAILURE(error) || !standard_name) {
|
||||
error = U_ZERO_ERROR;
|
||||
standard_name = ucnv_getStandardName(name, "IANA", &error);
|
||||
}
|
||||
UConverter *conv = ucnv_open(standard_name, &error);
|
||||
if (!U_FAILURE(error) && conv && standard_name) {
|
||||
ucnv_close(conv);
|
||||
printf(" { %d, %d },\n", mib, pos);
|
||||
nameList += "\"";
|
||||
nameList += standard_name;
|
||||
nameList += "\\0\"\n";
|
||||
pos += strlen(standard_name) + 1;
|
||||
}
|
||||
}
|
||||
name = QByteArray();
|
||||
mib = -1;
|
||||
}
|
||||
if (s.startsWith("Name: ")) {
|
||||
name = s.mid(5).trimmed();
|
||||
if (name.indexOf(' ') > 0)
|
||||
name = name.left(name.indexOf(' '));
|
||||
}
|
||||
if (s.startsWith("MIBenum:"))
|
||||
mib = s.mid(8).trimmed().toInt();
|
||||
if (s.startsWith("Alias:") && s.contains("MIME")) {
|
||||
name = s.mid(6).trimmed();
|
||||
name = name.left(name.indexOf(' ')).trimmed();
|
||||
}
|
||||
}
|
||||
qDebug() << nameList;
|
||||
}
|
||||
*/
|
||||
|
||||
struct MibToName {
|
||||
short mib;
|
||||
short index;
|
||||
};
|
||||
|
||||
static const MibToName mibToName[] = {
|
||||
{ 3, 0 },
|
||||
{ 4, 9 },
|
||||
{ 5, 20 },
|
||||
{ 6, 31 },
|
||||
{ 7, 42 },
|
||||
{ 8, 53 },
|
||||
{ 9, 64 },
|
||||
{ 10, 75 },
|
||||
{ 11, 86 },
|
||||
{ 12, 97 },
|
||||
{ 13, 108 },
|
||||
{ 16, 120 },
|
||||
{ 17, 134 },
|
||||
{ 18, 144 },
|
||||
{ 30, 151 },
|
||||
{ 36, 160 },
|
||||
{ 37, 167 },
|
||||
{ 38, 179 },
|
||||
{ 39, 186 },
|
||||
{ 40, 198 },
|
||||
{ 57, 212 },
|
||||
{ 81, 223 },
|
||||
{ 82, 234 },
|
||||
{ 84, 245 },
|
||||
{ 85, 256 },
|
||||
{ 104, 267 },
|
||||
{ 105, 279 },
|
||||
{ 106, 295 },
|
||||
{ 109, 301 },
|
||||
{ 110, 313 },
|
||||
{ 111, 325 },
|
||||
{ 113, 337 },
|
||||
{ 114, 341 },
|
||||
{ 1000, 349 },
|
||||
{ 1001, 356 },
|
||||
{ 1011, 363 },
|
||||
{ 1012, 368 },
|
||||
{ 1013, 374 },
|
||||
{ 1014, 383 },
|
||||
{ 1015, 392 },
|
||||
{ 1016, 399 },
|
||||
{ 1017, 406 },
|
||||
{ 1018, 413 },
|
||||
{ 1019, 422 },
|
||||
{ 1020, 431 },
|
||||
{ 2004, 438 },
|
||||
{ 2005, 448 },
|
||||
{ 2009, 472 },
|
||||
{ 2013, 479 },
|
||||
{ 2016, 486 },
|
||||
{ 2024, 495 },
|
||||
{ 2025, 505 },
|
||||
{ 2026, 512 },
|
||||
{ 2027, 517 },
|
||||
{ 2028, 527 },
|
||||
{ 2030, 534 },
|
||||
{ 2033, 541 },
|
||||
{ 2034, 548 },
|
||||
{ 2035, 555 },
|
||||
{ 2037, 562 },
|
||||
{ 2038, 569 },
|
||||
{ 2039, 576 },
|
||||
{ 2040, 583 },
|
||||
{ 2041, 590 },
|
||||
{ 2043, 597 },
|
||||
{ 2011, 604 },
|
||||
{ 2044, 611 },
|
||||
{ 2045, 618 },
|
||||
{ 2010, 624 },
|
||||
{ 2046, 631 },
|
||||
{ 2047, 638 },
|
||||
{ 2048, 645 },
|
||||
{ 2049, 652 },
|
||||
{ 2050, 659 },
|
||||
{ 2051, 666 },
|
||||
{ 2052, 673 },
|
||||
{ 2053, 680 },
|
||||
{ 2054, 687 },
|
||||
{ 2055, 694 },
|
||||
{ 2056, 701 },
|
||||
{ 2062, 708 },
|
||||
{ 2063, 715 },
|
||||
{ 2084, 723 },
|
||||
{ 2085, 730 },
|
||||
{ 2086, 741 },
|
||||
{ 2087, 748 },
|
||||
{ 2088, 755 },
|
||||
{ 2089, 762 },
|
||||
{ 2091, 771 },
|
||||
{ 2092, 780 },
|
||||
{ 2093, 789 },
|
||||
{ 2094, 798 },
|
||||
{ 2095, 807 },
|
||||
{ 2096, 816 },
|
||||
{ 2097, 825 },
|
||||
{ 2098, 834 },
|
||||
{ 2099, 843 },
|
||||
{ 2100, 852 },
|
||||
{ 2101, 861 },
|
||||
{ 2102, 872 },
|
||||
{ 2250, 880 },
|
||||
{ 2251, 893 },
|
||||
{ 2252, 906 },
|
||||
{ 2253, 919 },
|
||||
{ 2254, 932 },
|
||||
{ 2255, 945 },
|
||||
{ 2256, 958 },
|
||||
{ 2257, 971 },
|
||||
{ 2258, 984 },
|
||||
{ 2259, 997 },
|
||||
};
|
||||
int mibToNameSize = sizeof(mibToName)/sizeof(MibToName);
|
||||
|
||||
static const char mibToNameTable[] =
|
||||
"US-ASCII\0"
|
||||
"ISO-8859-1\0"
|
||||
"ISO-8859-2\0"
|
||||
"ISO-8859-3\0"
|
||||
"ISO-8859-4\0"
|
||||
"ISO-8859-5\0"
|
||||
"ISO-8859-6\0"
|
||||
"ISO-8859-7\0"
|
||||
"ISO-8859-8\0"
|
||||
"ISO-8859-9\0"
|
||||
"ISO-8859-10\0"
|
||||
"ISO-2022-JP-1\0"
|
||||
"Shift_JIS\0"
|
||||
"EUC-JP\0"
|
||||
"US-ASCII\0"
|
||||
"EUC-KR\0"
|
||||
"ISO-2022-KR\0"
|
||||
"EUC-KR\0"
|
||||
"ISO-2022-JP\0"
|
||||
"ISO-2022-JP-2\0"
|
||||
"GB_2312-80\0"
|
||||
"ISO-8859-6\0"
|
||||
"ISO-8859-6\0"
|
||||
"ISO-8859-8\0"
|
||||
"ISO-8859-8\0"
|
||||
"ISO-2022-CN\0"
|
||||
"ISO-2022-CN-EXT\0"
|
||||
"UTF-8\0"
|
||||
"ISO-8859-13\0"
|
||||
"ISO-8859-14\0"
|
||||
"ISO-8859-15\0"
|
||||
"GBK\0"
|
||||
"GB18030\0"
|
||||
"UTF-16\0"
|
||||
"UTF-32\0"
|
||||
"SCSU\0"
|
||||
"UTF-7\0"
|
||||
"UTF-16BE\0"
|
||||
"UTF-16LE\0"
|
||||
"UTF-16\0"
|
||||
"CESU-8\0"
|
||||
"UTF-32\0"
|
||||
"UTF-32BE\0"
|
||||
"UTF-32LE\0"
|
||||
"BOCU-1\0"
|
||||
"hp-roman8\0"
|
||||
"Adobe-Standard-Encoding\0"
|
||||
"IBM850\0"
|
||||
"IBM862\0"
|
||||
"IBM-Thai\0"
|
||||
"Shift_JIS\0"
|
||||
"GB2312\0"
|
||||
"Big5\0"
|
||||
"macintosh\0"
|
||||
"IBM037\0"
|
||||
"IBM273\0"
|
||||
"IBM277\0"
|
||||
"IBM278\0"
|
||||
"IBM280\0"
|
||||
"IBM284\0"
|
||||
"IBM285\0"
|
||||
"IBM290\0"
|
||||
"IBM297\0"
|
||||
"IBM420\0"
|
||||
"IBM424\0"
|
||||
"IBM437\0"
|
||||
"IBM500\0"
|
||||
"cp851\0"
|
||||
"IBM852\0"
|
||||
"IBM855\0"
|
||||
"IBM857\0"
|
||||
"IBM860\0"
|
||||
"IBM861\0"
|
||||
"IBM863\0"
|
||||
"IBM864\0"
|
||||
"IBM865\0"
|
||||
"IBM868\0"
|
||||
"IBM869\0"
|
||||
"IBM870\0"
|
||||
"IBM871\0"
|
||||
"IBM918\0"
|
||||
"IBM1026\0"
|
||||
"KOI8-R\0"
|
||||
"HZ-GB-2312\0"
|
||||
"IBM866\0"
|
||||
"IBM775\0"
|
||||
"KOI8-U\0"
|
||||
"IBM00858\0"
|
||||
"IBM01140\0"
|
||||
"IBM01141\0"
|
||||
"IBM01142\0"
|
||||
"IBM01143\0"
|
||||
"IBM01144\0"
|
||||
"IBM01145\0"
|
||||
"IBM01146\0"
|
||||
"IBM01147\0"
|
||||
"IBM01148\0"
|
||||
"IBM01149\0"
|
||||
"Big5-HKSCS\0"
|
||||
"IBM1047\0"
|
||||
"windows-1250\0"
|
||||
"windows-1251\0"
|
||||
"windows-1252\0"
|
||||
"windows-1253\0"
|
||||
"windows-1254\0"
|
||||
"windows-1255\0"
|
||||
"windows-1256\0"
|
||||
"windows-1257\0"
|
||||
"windows-1258\0"
|
||||
"TIS-620\0";
|
||||
|
||||
static QTextCodec *loadQtCodec(const char *name)
|
||||
{
|
||||
if (!strcmp(name, "UTF-8"))
|
||||
return new QUtf8Codec;
|
||||
if (!strcmp(name, "UTF-16"))
|
||||
return new QUtf16Codec;
|
||||
if (!strcmp(name, "ISO-8859-1"))
|
||||
return new QLatin1Codec;
|
||||
if (!strcmp(name, "UTF-16BE"))
|
||||
return new QUtf16BECodec;
|
||||
if (!strcmp(name, "UTF-16LE"))
|
||||
return new QUtf16LECodec;
|
||||
if (!strcmp(name, "UTF-32"))
|
||||
return new QUtf32Codec;
|
||||
if (!strcmp(name, "UTF-32BE"))
|
||||
return new QUtf32BECodec;
|
||||
if (!strcmp(name, "UTF-32LE"))
|
||||
return new QUtf32LECodec;
|
||||
if (!strcmp(name, "ISO-8859-16") || !strcmp(name, "latin10") || !strcmp(name, "iso-ir-226"))
|
||||
return new QSimpleTextCodec(13 /* == 8859-16*/);
|
||||
#if QT_CONFIG(codecs)
|
||||
if (!strcmp(name, "TSCII"))
|
||||
return new QTsciiCodec;
|
||||
if (!qstrnicmp(name, "iscii", 5))
|
||||
return QIsciiCodec::create(name);
|
||||
#endif
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// \threadsafe
|
||||
QList<QByteArray> QIcuCodec::availableCodecs()
|
||||
{
|
||||
QList<QByteArray> codecs;
|
||||
int n = ucnv_countAvailable();
|
||||
for (int i = 0; i < n; ++i) {
|
||||
const char *name = ucnv_getAvailableName(i);
|
||||
|
||||
UErrorCode error = U_ZERO_ERROR;
|
||||
const char *standardName = ucnv_getStandardName(name, "MIME", &error);
|
||||
if (U_FAILURE(error) || !standardName) {
|
||||
error = U_ZERO_ERROR;
|
||||
standardName = ucnv_getStandardName(name, "IANA", &error);
|
||||
}
|
||||
if (U_FAILURE(error))
|
||||
continue;
|
||||
|
||||
error = U_ZERO_ERROR;
|
||||
int ac = ucnv_countAliases(standardName, &error);
|
||||
if (U_FAILURE(error))
|
||||
continue;
|
||||
for (int j = 0; j < ac; ++j) {
|
||||
error = U_ZERO_ERROR;
|
||||
const char *alias = ucnv_getAlias(standardName, j, &error);
|
||||
if (!U_SUCCESS(error))
|
||||
continue;
|
||||
codecs += alias;
|
||||
}
|
||||
}
|
||||
|
||||
// handled by Qt and not in ICU:
|
||||
codecs += "TSCII";
|
||||
|
||||
return codecs;
|
||||
}
|
||||
|
||||
/// \threadsafe
|
||||
QList<int> QIcuCodec::availableMibs()
|
||||
{
|
||||
QList<int> mibs;
|
||||
mibs.reserve(mibToNameSize + 1);
|
||||
for (int i = 0; i < mibToNameSize; ++i)
|
||||
mibs += mibToName[i].mib;
|
||||
|
||||
// handled by Qt and not in ICU:
|
||||
mibs += 2107; // TSCII
|
||||
|
||||
return mibs;
|
||||
}
|
||||
|
||||
QTextCodec *QIcuCodec::defaultCodecUnlocked()
|
||||
{
|
||||
QTextCodecData *globalData = QTextCodecData::instance();
|
||||
if (!globalData)
|
||||
return nullptr;
|
||||
QTextCodec *c = globalData->codecForLocale.loadAcquire();
|
||||
if (c)
|
||||
return c;
|
||||
|
||||
#if defined(QT_LOCALE_IS_UTF8)
|
||||
const char *name = "UTF-8";
|
||||
#else
|
||||
const char *name = ucnv_getDefaultName();
|
||||
#endif
|
||||
c = codecForNameUnlocked(name);
|
||||
globalData->codecForLocale.storeRelease(c);
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
QTextCodec *QIcuCodec::codecForNameUnlocked(const char *name)
|
||||
{
|
||||
// backwards compatibility with Qt 4.x
|
||||
if (!qstrcmp(name, "CP949"))
|
||||
name = "windows-949";
|
||||
else if (!qstrcmp(name, "Apple Roman"))
|
||||
name = "macintosh";
|
||||
// these are broken data in ICU 4.4, and can't be resolved even though they are aliases to tis-620
|
||||
if (!qstrcmp(name, "windows-874-2000")
|
||||
|| !qstrcmp(name, "windows-874")
|
||||
|| !qstrcmp(name, "MS874")
|
||||
|| !qstrcmp(name, "x-windows-874")
|
||||
|| !qstrcmp(name, "ISO 8859-11"))
|
||||
name = "TIS-620";
|
||||
|
||||
UErrorCode error = U_ZERO_ERROR;
|
||||
// MIME gives better default names
|
||||
const char *standardName = ucnv_getStandardName(name, "MIME", &error);
|
||||
if (U_FAILURE(error) || !standardName) {
|
||||
error = U_ZERO_ERROR;
|
||||
standardName = ucnv_getStandardName(name, "IANA", &error);
|
||||
}
|
||||
bool qt_only = false;
|
||||
if (U_FAILURE(error) || !standardName) {
|
||||
standardName = name;
|
||||
qt_only = true;
|
||||
} else {
|
||||
// correct some issues where the ICU data set contains duplicated entries.
|
||||
// Where this happens it's because one data set is a subset of another. We
|
||||
// always use the larger data set.
|
||||
|
||||
if (qstrcmp(standardName, "GB2312") == 0 || qstrcmp(standardName, "GB_2312-80") == 0)
|
||||
standardName = "GBK";
|
||||
else if (qstrcmp(standardName, "KSC_5601") == 0 || qstrcmp(standardName, "EUC-KR") == 0 || qstrcmp(standardName, "cp1363") == 0)
|
||||
standardName = "windows-949";
|
||||
}
|
||||
|
||||
QTextCodecData *globalData = QTextCodecData::instance();
|
||||
QTextCodecCache *cache = &globalData->codecCache;
|
||||
|
||||
QTextCodec *codec;
|
||||
if (cache) {
|
||||
codec = cache->value(standardName);
|
||||
if (codec)
|
||||
return codec;
|
||||
}
|
||||
|
||||
for (TextCodecListConstIt it = globalData->allCodecs.constBegin(), cend = globalData->allCodecs.constEnd(); it != cend; ++it) {
|
||||
QTextCodec *cursor = *it;
|
||||
if (qTextCodecNameMatch(cursor->name(), standardName)) {
|
||||
if (cache)
|
||||
cache->insert(standardName, cursor);
|
||||
return cursor;
|
||||
}
|
||||
QList<QByteArray> aliases = cursor->aliases();
|
||||
for (ByteArrayListConstIt ait = aliases.constBegin(), acend = aliases.constEnd(); ait != acend; ++ait) {
|
||||
if (qTextCodecNameMatch(*ait, standardName)) {
|
||||
if (cache)
|
||||
cache->insert(standardName, cursor);
|
||||
return cursor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QTextCodec *c = loadQtCodec(standardName);
|
||||
if (c)
|
||||
return c;
|
||||
|
||||
if (qt_only)
|
||||
return nullptr;
|
||||
|
||||
// check whether there is really a converter for the name available.
|
||||
UConverter *conv = ucnv_open(standardName, &error);
|
||||
if (!conv) {
|
||||
qDebug("codecForName: ucnv_open failed %s %s", standardName, u_errorName(error));
|
||||
return nullptr;
|
||||
}
|
||||
//qDebug() << "QIcuCodec: Standard name for " << name << "is" << standardName;
|
||||
ucnv_close(conv);
|
||||
|
||||
|
||||
c = new QIcuCodec(standardName);
|
||||
if (cache)
|
||||
cache->insert(standardName, c);
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
QTextCodec *QIcuCodec::codecForMibUnlocked(int mib)
|
||||
{
|
||||
for (int i = 0; i < mibToNameSize; ++i) {
|
||||
if (mibToName[i].mib == mib)
|
||||
return codecForNameUnlocked(mibToNameTable + mibToName[i].index);
|
||||
}
|
||||
|
||||
if (mib == 2107)
|
||||
return codecForNameUnlocked("TSCII");
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
QIcuCodec::QIcuCodec(const char *name)
|
||||
: m_name(name)
|
||||
{
|
||||
}
|
||||
|
||||
QIcuCodec::~QIcuCodec()
|
||||
{
|
||||
}
|
||||
|
||||
UConverter *QIcuCodec::getConverter(QTextCodec::ConverterState *state) const
|
||||
{
|
||||
UConverter *conv = nullptr;
|
||||
if (state) {
|
||||
if (!state->d[0]) {
|
||||
// first time
|
||||
state->clearFn = qIcuCodecStateFree;
|
||||
UErrorCode error = U_ZERO_ERROR;
|
||||
state->d[0] = ucnv_open(m_name, &error);
|
||||
ucnv_setSubstChars(static_cast<UConverter *>(state->d[0]),
|
||||
state->flags & QTextCodec::ConvertInvalidToNull ? "\0" : "?", 1, &error);
|
||||
if (U_FAILURE(error))
|
||||
qDebug("getConverter(state) ucnv_open failed %s %s", m_name, u_errorName(error));
|
||||
}
|
||||
conv = static_cast<UConverter *>(state->d[0]);
|
||||
}
|
||||
if (!conv) {
|
||||
// stateless conversion
|
||||
UErrorCode error = U_ZERO_ERROR;
|
||||
conv = ucnv_open(m_name, &error);
|
||||
ucnv_setSubstChars(conv, "?", 1, &error);
|
||||
if (U_FAILURE(error))
|
||||
qDebug("getConverter(no state) ucnv_open failed %s %s", m_name, u_errorName(error));
|
||||
}
|
||||
return conv;
|
||||
}
|
||||
|
||||
QString QIcuCodec::convertToUnicode(const char *chars, int length, QTextCodec::ConverterState *state) const
|
||||
{
|
||||
UConverter *conv = getConverter(state);
|
||||
|
||||
QString string(length + 2, Qt::Uninitialized);
|
||||
|
||||
const char *end = chars + length;
|
||||
int convertedChars = 0;
|
||||
while (1) {
|
||||
UChar *uc = (UChar *)string.data();
|
||||
UChar *ucEnd = uc + string.length();
|
||||
uc += convertedChars;
|
||||
UErrorCode error = U_ZERO_ERROR;
|
||||
ucnv_toUnicode(conv,
|
||||
&uc, ucEnd,
|
||||
&chars, end,
|
||||
nullptr, false, &error);
|
||||
if (!U_SUCCESS(error) && error != U_BUFFER_OVERFLOW_ERROR) {
|
||||
qDebug("convertToUnicode failed: %s", u_errorName(error));
|
||||
break;
|
||||
}
|
||||
// flag the state if we have incomplete input
|
||||
if (error == U_TRUNCATED_CHAR_FOUND)
|
||||
state->remainingChars = 1;
|
||||
|
||||
convertedChars = uc - (UChar *)string.data();
|
||||
if (chars >= end)
|
||||
break;
|
||||
string.resize(string.length()*2);
|
||||
}
|
||||
string.resize(convertedChars);
|
||||
|
||||
if (!state)
|
||||
ucnv_close(conv);
|
||||
return string;
|
||||
}
|
||||
|
||||
|
||||
QByteArray QIcuCodec::convertFromUnicode(const QChar *unicode, int length, QTextCodec::ConverterState *state) const
|
||||
{
|
||||
UConverter *conv = getConverter(state);
|
||||
|
||||
int requiredLength = UCNV_GET_MAX_BYTES_FOR_STRING(length, ucnv_getMaxCharSize(conv));
|
||||
QByteArray string(requiredLength, Qt::Uninitialized);
|
||||
|
||||
const UChar *uc = (const UChar *)unicode;
|
||||
const UChar *end = uc + length;
|
||||
int convertedChars = 0;
|
||||
while (1) {
|
||||
char *ch = (char *)string.data();
|
||||
char *chEnd = ch + string.length();
|
||||
ch += convertedChars;
|
||||
UErrorCode error = U_ZERO_ERROR;
|
||||
ucnv_fromUnicode(conv,
|
||||
&ch, chEnd,
|
||||
&uc, end,
|
||||
nullptr, false, &error);
|
||||
if (!U_SUCCESS(error))
|
||||
qDebug("convertFromUnicode failed: %s", u_errorName(error));
|
||||
// flag the state if we have incomplete input
|
||||
if (error == U_TRUNCATED_CHAR_FOUND)
|
||||
state->remainingChars = 1;
|
||||
|
||||
convertedChars = ch - string.data();
|
||||
if (uc >= end)
|
||||
break;
|
||||
string.resize(string.length()*2);
|
||||
}
|
||||
string.resize(convertedChars);
|
||||
|
||||
if (!state)
|
||||
ucnv_close(conv);
|
||||
|
||||
return string;
|
||||
}
|
||||
|
||||
|
||||
QByteArray QIcuCodec::name() const
|
||||
{
|
||||
return m_name;
|
||||
}
|
||||
|
||||
|
||||
QList<QByteArray> QIcuCodec::aliases() const
|
||||
{
|
||||
UErrorCode error = U_ZERO_ERROR;
|
||||
|
||||
int n = ucnv_countAliases(m_name, &error);
|
||||
|
||||
QList<QByteArray> aliases;
|
||||
for (int i = 0; i < n; ++i) {
|
||||
const char *a = ucnv_getAlias(m_name, i, &error);
|
||||
// skip the canonical name
|
||||
if (!a || !qstrcmp(a, m_name))
|
||||
continue;
|
||||
aliases += a;
|
||||
}
|
||||
|
||||
return aliases;
|
||||
}
|
||||
|
||||
|
||||
int QIcuCodec::mibEnum() const
|
||||
{
|
||||
for (int i = 0; i < mibToNameSize; ++i) {
|
||||
if (qTextCodecNameMatch(m_name, (mibToNameTable + mibToName[i].index)))
|
||||
return mibToName[i].mib;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
@ -1,95 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef QICUCODEC_P_H
|
||||
#define QICUCODEC_P_H
|
||||
|
||||
#include "QtCore/qtextcodec.h"
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
|
||||
extern "C" {
|
||||
typedef struct UConverter UConverter;
|
||||
}
|
||||
|
||||
QT_REQUIRE_CONFIG(textcodec);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QIcuCodec : public QTextCodec
|
||||
{
|
||||
public:
|
||||
static QList<QByteArray> availableCodecs();
|
||||
static QList<int> availableMibs();
|
||||
|
||||
static QTextCodec *defaultCodecUnlocked();
|
||||
|
||||
static QTextCodec *codecForNameUnlocked(const char *name);
|
||||
static QTextCodec *codecForMibUnlocked(int mib);
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
|
||||
QByteArray name() const override;
|
||||
QList<QByteArray> aliases() const override;
|
||||
int mibEnum() const override;
|
||||
|
||||
private:
|
||||
QIcuCodec(const char *name);
|
||||
~QIcuCodec();
|
||||
|
||||
UConverter *getConverter(QTextCodec::ConverterState *state) const;
|
||||
|
||||
const char *m_name;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif
|
@ -1,291 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
#include "qisciicodec_p.h"
|
||||
#include "qtextcodec_p.h"
|
||||
#include "qlist.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
/*!
|
||||
\class QIsciiCodec
|
||||
\inmodule QtCore
|
||||
\brief The QIsciiCodec class provides conversion to and from the ISCII encoding.
|
||||
|
||||
\internal
|
||||
*/
|
||||
|
||||
|
||||
struct Codecs {
|
||||
const char name[10];
|
||||
ushort base;
|
||||
};
|
||||
|
||||
static const Codecs codecs [] = {
|
||||
{ "iscii-dev", 0x900 },
|
||||
{ "iscii-bng", 0x980 },
|
||||
{ "iscii-pnj", 0xa00 },
|
||||
{ "iscii-gjr", 0xa80 },
|
||||
{ "iscii-ori", 0xb00 },
|
||||
{ "iscii-tml", 0xb80 },
|
||||
{ "iscii-tlg", 0xc00 },
|
||||
{ "iscii-knd", 0xc80 },
|
||||
{ "iscii-mlm", 0xd00 }
|
||||
};
|
||||
|
||||
QTextCodec *QIsciiCodec::create(const char *name)
|
||||
{
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
if (qTextCodecNameMatch(name, codecs[i].name))
|
||||
return new QIsciiCodec(i);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
QIsciiCodec::~QIsciiCodec()
|
||||
{
|
||||
}
|
||||
|
||||
QByteArray QIsciiCodec::name() const
|
||||
{
|
||||
return codecs[idx].name;
|
||||
}
|
||||
|
||||
int QIsciiCodec::mibEnum() const
|
||||
{
|
||||
/* There is no MIBEnum for Iscii */
|
||||
return -3000-idx;
|
||||
}
|
||||
|
||||
static const uchar inv = 0xFF;
|
||||
|
||||
/* iscii range from 0xa0 - 0xff */
|
||||
static const uchar iscii_to_uni_table[0x60] = {
|
||||
0x00, 0x01, 0x02, 0x03,
|
||||
0x05, 0x06, 0x07, 0x08,
|
||||
0x09, 0x0a, 0x0b, 0x0e,
|
||||
0x0f, 0x20, 0x0d, 0x12,
|
||||
|
||||
0x13, 0x14, 0x11, 0x15,
|
||||
0x16, 0x17, 0x18, 0x19,
|
||||
0x1a, 0x1b, 0x1c, 0x1d,
|
||||
0x1e, 0x1f, 0x20, 0x21,
|
||||
|
||||
0x22, 0x23, 0x24, 0x25,
|
||||
0x26, 0x27, 0x28, 0x29,
|
||||
0x2a, 0x2b, 0x2c, 0x2d,
|
||||
0x2e, 0x2f, 0x5f, 0x30,
|
||||
|
||||
0x31, 0x32, 0x33, 0x34,
|
||||
0x35, 0x36, 0x37, 0x38,
|
||||
0x39, inv, 0x3e, 0x3f,
|
||||
0x40, 0x41, 0x42, 0x43,
|
||||
|
||||
0x46, 0x47, 0x48, 0x45,
|
||||
0x4a, 0x4b, 0x4c, 0x49,
|
||||
0x4d, 0x3c, 0x64, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
0x00, 0x66, 0x67, 0x68,
|
||||
0x69, 0x6a, 0x6b, 0x6c,
|
||||
0x6d, 0x6e, 0x6f, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
static const uchar uni_to_iscii_table[0x80] = {
|
||||
0x00, 0xa1, 0xa2, 0xa3,
|
||||
0x00, 0xa4, 0xa5, 0xa6,
|
||||
0xa7, 0xa8, 0xa9, 0xaa,
|
||||
0x00, 0xae, 0xab, 0xac,
|
||||
|
||||
0xad, 0xb2, 0xaf, 0xb0,
|
||||
0xb1, 0xb3, 0xb4, 0xb5,
|
||||
0xb6, 0xb7, 0xb8, 0xb9,
|
||||
0xba, 0xbb, 0xbc, 0xbd,
|
||||
|
||||
0xbe, 0xbf, 0xc0, 0xc1,
|
||||
0xc2, 0xc3, 0xc4, 0xc5,
|
||||
0xc6, 0xc7, 0xc8, 0xc9,
|
||||
0xca, 0xcb, 0xcc, 0xcd,
|
||||
|
||||
0xcf, 0xd0, 0xd1, 0xd2,
|
||||
0xd3, 0xd4, 0xd5, 0xd6,
|
||||
0xd7, 0xd8, 0x00, 0x00,
|
||||
0xe9, 0x00, 0xda, 0xdb,
|
||||
|
||||
0xdc, 0xdd, 0xde, 0xdf,
|
||||
0x00, 0xe3, 0xe0, 0xe1,
|
||||
0xe2, 0xe7, 0xe4, 0xe5,
|
||||
0xe6, 0xe8, 0x00, 0x00,
|
||||
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x02, 0x03, 0x04, // decomposable into the uc codes listed here + nukta
|
||||
0x05, 0x06, 0x07, 0xce,
|
||||
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0xea, 0x08, 0xf1, 0xf2,
|
||||
0xf3, 0xf4, 0xf5, 0xf6,
|
||||
0xf7, 0xf8, 0xf9, 0xfa,
|
||||
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
static const uchar uni_to_iscii_pairs[] = {
|
||||
0x00, 0x00,
|
||||
0x15, 0x3c, // 0x958
|
||||
0x16, 0x3c, // 0x959
|
||||
0x17, 0x3c, // 0x95a
|
||||
0x1c, 0x3c, // 0x95b
|
||||
0x21, 0x3c, // 0x95c
|
||||
0x22, 0x3c, // 0x95d
|
||||
0x2b, 0x3c, // 0x95e
|
||||
0x64, 0x64 // 0x965
|
||||
};
|
||||
|
||||
|
||||
QByteArray QIsciiCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
|
||||
{
|
||||
char replacement = '?';
|
||||
bool halant = false;
|
||||
if (state) {
|
||||
if (state->flags & ConvertInvalidToNull)
|
||||
replacement = 0;
|
||||
halant = state->state_data[0];
|
||||
}
|
||||
int invalid = 0;
|
||||
|
||||
QByteArray result(2 * len, Qt::Uninitialized); //worst case
|
||||
|
||||
uchar *ch = reinterpret_cast<uchar *>(result.data());
|
||||
|
||||
const int base = codecs[idx].base;
|
||||
|
||||
for (int i =0; i < len; ++i) {
|
||||
const ushort codePoint = uc[i].unicode();
|
||||
|
||||
/* The low 7 bits of ISCII is plain ASCII. However, we go all the
|
||||
* way up to 0xA0 such that we can roundtrip with convertToUnicode()'s
|
||||
* behavior. */
|
||||
if(codePoint < 0xA0) {
|
||||
*ch++ = static_cast<uchar>(codePoint);
|
||||
continue;
|
||||
}
|
||||
|
||||
const int pos = codePoint - base;
|
||||
if (pos > 0 && pos < 0x80) {
|
||||
uchar iscii = uni_to_iscii_table[pos];
|
||||
if (iscii > 0x80) {
|
||||
*ch++ = iscii;
|
||||
} else if (iscii) {
|
||||
Q_ASSERT((2 * iscii) < (sizeof(uni_to_iscii_pairs) / sizeof(uni_to_iscii_pairs[0])));
|
||||
const uchar *pair = uni_to_iscii_pairs + 2*iscii;
|
||||
*ch++ = *pair++;
|
||||
*ch++ = *pair++;
|
||||
} else {
|
||||
*ch++ = replacement;
|
||||
++invalid;
|
||||
}
|
||||
} else {
|
||||
if (uc[i].unicode() == 0x200c) { // ZWNJ
|
||||
if (halant)
|
||||
// Consonant Halant ZWNJ -> Consonant Halant Halant
|
||||
*ch++ = 0xe8;
|
||||
} else if (uc[i].unicode() == 0x200d) { // ZWJ
|
||||
if (halant)
|
||||
// Consonant Halant ZWJ -> Consonant Halant Nukta
|
||||
*ch++ = 0xe9;
|
||||
} else {
|
||||
*ch++ = replacement;
|
||||
++invalid;
|
||||
}
|
||||
}
|
||||
halant = (pos == 0x4d);
|
||||
}
|
||||
result.truncate(ch - (uchar *)result.data());
|
||||
|
||||
if (state) {
|
||||
state->invalidChars += invalid;
|
||||
state->state_data[0] = halant;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
QString QIsciiCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
|
||||
{
|
||||
bool halant = false;
|
||||
if (state) {
|
||||
halant = state->state_data[0];
|
||||
}
|
||||
|
||||
QString result(len, Qt::Uninitialized);
|
||||
QChar *uc = result.data();
|
||||
|
||||
const int base = codecs[idx].base;
|
||||
|
||||
for (int i = 0; i < len; ++i) {
|
||||
char16_t ch = (uchar) chars[i];
|
||||
if (ch < 0xa0)
|
||||
*uc++ = ch;
|
||||
else {
|
||||
ushort c = iscii_to_uni_table[ch - 0xa0];
|
||||
if (halant && (c == inv || c == 0xe9)) {
|
||||
// Consonant Halant inv -> Consonant Halant ZWJ
|
||||
// Consonant Halant Nukta -> Consonant Halant ZWJ
|
||||
*uc++ = QChar(0x200d);
|
||||
} else if (halant && c == 0xe8) {
|
||||
// Consonant Halant Halant -> Consonant Halant ZWNJ
|
||||
*uc++ = QChar(0x200c);
|
||||
} else {
|
||||
*uc++ = QChar(c+base);
|
||||
}
|
||||
}
|
||||
halant = ((uchar)chars[i] == 0xe8);
|
||||
}
|
||||
result.resize(uc - result.unicode());
|
||||
|
||||
if (state) {
|
||||
state->state_data[0] = halant;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
@ -1,80 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef QISCIICODEC_P_H
|
||||
#define QISCIICODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
#include "QtCore/qtextcodec.h"
|
||||
|
||||
QT_REQUIRE_CONFIG(codecs);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QIsciiCodec : public QTextCodec {
|
||||
public:
|
||||
explicit QIsciiCodec(int i) : idx(i) {}
|
||||
~QIsciiCodec();
|
||||
|
||||
static QTextCodec *create(const char *name);
|
||||
|
||||
QByteArray name() const override;
|
||||
int mibEnum() const override;
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
|
||||
private:
|
||||
int idx;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QISCIICODEC_P_H
|
@ -1,371 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// Most of the code here was originally written by Serika Kurusugawa,
|
||||
// a.k.a. Junji Takagi, and is included in Qt with the author's permission
|
||||
// and the grateful thanks of the Qt team.
|
||||
|
||||
/*! \class QJisCodec
|
||||
\inmodule QtCore
|
||||
\reentrant
|
||||
\internal
|
||||
*/
|
||||
|
||||
#include "qjiscodec_p.h"
|
||||
#include "qlist.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
enum {
|
||||
Esc = 0x1b,
|
||||
So = 0x0e, // Shift Out
|
||||
Si = 0x0f, // Shift In
|
||||
|
||||
ReverseSolidus = 0x5c,
|
||||
YenSign = 0x5c,
|
||||
Tilde = 0x7e,
|
||||
Overline = 0x7e
|
||||
};
|
||||
|
||||
#define IsKana(c) (((c) >= 0xa1) && ((c) <= 0xdf))
|
||||
#define IsJisChar(c) (((c) >= 0x21) && ((c) <= 0x7e))
|
||||
|
||||
#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
|
||||
|
||||
enum Iso2022State{ Ascii, MinState = Ascii,
|
||||
JISX0201_Latin, JISX0201_Kana,
|
||||
JISX0208_1978, JISX0208_1983,
|
||||
JISX0212, MaxState = JISX0212,
|
||||
UnknownState };
|
||||
|
||||
static const char Esc_CHARS[] = "()*+-./";
|
||||
|
||||
static const char Esc_Ascii[] = {Esc, '(', 'B', 0 };
|
||||
static const char Esc_JISX0201_Latin[] = {Esc, '(', 'J', 0 };
|
||||
static const char Esc_JISX0201_Kana[] = {Esc, '(', 'I', 0 };
|
||||
static const char Esc_JISX0208_1978[] = {Esc, '$', '@', 0 };
|
||||
static const char Esc_JISX0208_1983[] = {Esc, '$', 'B', 0 };
|
||||
static const char Esc_JISX0212[] = {Esc, '$', '(', 'D', 0 };
|
||||
static const char * const Esc_SEQ[] = { Esc_Ascii,
|
||||
Esc_JISX0201_Latin,
|
||||
Esc_JISX0201_Kana,
|
||||
Esc_JISX0208_1978,
|
||||
Esc_JISX0208_1983,
|
||||
Esc_JISX0212 };
|
||||
|
||||
/*!
|
||||
\internal
|
||||
*/
|
||||
QJisCodec::QJisCodec() : conv(QJpUnicodeConv::newConverter(QJpUnicodeConv::Default))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
\internal
|
||||
*/
|
||||
QJisCodec::~QJisCodec()
|
||||
{
|
||||
delete (const QJpUnicodeConv*)conv;
|
||||
conv = 0;
|
||||
}
|
||||
|
||||
QByteArray QJisCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *cs) const
|
||||
{
|
||||
char replacement = '?';
|
||||
if (cs) {
|
||||
if (cs->flags & ConvertInvalidToNull)
|
||||
replacement = 0;
|
||||
}
|
||||
int invalid = 0;
|
||||
|
||||
QByteArray result;
|
||||
Iso2022State state = Ascii;
|
||||
Iso2022State prev = Ascii;
|
||||
for (int i = 0; i < len; i++) {
|
||||
QChar ch = uc[i];
|
||||
uint j;
|
||||
if (ch.row() == 0x00 && ch.cell() < 0x80) {
|
||||
// Ascii
|
||||
if (state != JISX0201_Latin ||
|
||||
ch.cell() == ReverseSolidus || ch.cell() == Tilde) {
|
||||
state = Ascii;
|
||||
}
|
||||
j = ch.cell();
|
||||
} else if ((j = conv->unicodeToJisx0201(ch.row(), ch.cell())) != 0) {
|
||||
if (j < 0x80) {
|
||||
// JIS X 0201 Latin
|
||||
if (state != Ascii ||
|
||||
ch.cell() == YenSign || ch.cell() == Overline) {
|
||||
state = JISX0201_Latin;
|
||||
}
|
||||
} else {
|
||||
// JIS X 0201 Kana
|
||||
state = JISX0201_Kana;
|
||||
j &= 0x7f;
|
||||
}
|
||||
} else if ((j = conv->unicodeToJisx0208(ch.row(), ch.cell())) != 0) {
|
||||
// JIS X 0208
|
||||
state = JISX0208_1983;
|
||||
} else if ((j = conv->unicodeToJisx0212(ch.row(), ch.cell())) != 0) {
|
||||
// JIS X 0212
|
||||
state = JISX0212;
|
||||
} else {
|
||||
// Invalid
|
||||
state = UnknownState;
|
||||
j = replacement;
|
||||
++invalid;
|
||||
}
|
||||
if (state != prev) {
|
||||
if (state == UnknownState) {
|
||||
result += Esc_Ascii;
|
||||
} else {
|
||||
result += Esc_SEQ[state - MinState];
|
||||
}
|
||||
prev = state;
|
||||
}
|
||||
if (j < 0x0100) {
|
||||
result += j & 0xff;
|
||||
} else {
|
||||
result += (j >> 8) & 0xff;
|
||||
result += j & 0xff;
|
||||
}
|
||||
}
|
||||
if (prev != Ascii) {
|
||||
result += Esc_Ascii;
|
||||
}
|
||||
|
||||
if (cs) {
|
||||
cs->invalidChars += invalid;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
QString QJisCodec::convertToUnicode(const char* chars, int len, ConverterState *cs) const
|
||||
{
|
||||
uchar buf[4] = {0, 0, 0, 0};
|
||||
int nbuf = 0;
|
||||
Iso2022State state = Ascii, prev = Ascii;
|
||||
bool esc = false;
|
||||
QChar replacement = QChar::ReplacementCharacter;
|
||||
if (cs) {
|
||||
if (cs->flags & ConvertInvalidToNull)
|
||||
replacement = QChar::Null;
|
||||
nbuf = cs->remainingChars;
|
||||
buf[0] = (cs->state_data[0] >> 24) & 0xff;
|
||||
buf[1] = (cs->state_data[0] >> 16) & 0xff;
|
||||
buf[2] = (cs->state_data[0] >> 8) & 0xff;
|
||||
buf[3] = (cs->state_data[0] >> 0) & 0xff;
|
||||
state = (Iso2022State)((cs->state_data[1] >> 0) & 0xff);
|
||||
prev = (Iso2022State)((cs->state_data[1] >> 8) & 0xff);
|
||||
esc = cs->state_data[2];
|
||||
}
|
||||
int invalid = 0;
|
||||
|
||||
QString result;
|
||||
for (int i=0; i<len; i++) {
|
||||
uchar ch = chars[i];
|
||||
if (esc) {
|
||||
// Escape sequence
|
||||
state = UnknownState;
|
||||
switch (nbuf) {
|
||||
case 0:
|
||||
if (ch == '$' || strchr(Esc_CHARS, ch)) {
|
||||
buf[nbuf++] = ch;
|
||||
} else {
|
||||
nbuf = 0;
|
||||
esc = false;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (buf[0] == '$') {
|
||||
if (strchr(Esc_CHARS, ch)) {
|
||||
buf[nbuf++] = ch;
|
||||
} else {
|
||||
switch (ch) {
|
||||
case '@':
|
||||
state = JISX0208_1978; // Esc $ @
|
||||
break;
|
||||
case 'B':
|
||||
state = JISX0208_1983; // Esc $ B
|
||||
break;
|
||||
}
|
||||
nbuf = 0;
|
||||
esc = false;
|
||||
}
|
||||
} else {
|
||||
if (buf[0] == '(') {
|
||||
switch (ch) {
|
||||
case 'B':
|
||||
state = Ascii; // Esc (B
|
||||
break;
|
||||
case 'I':
|
||||
state = JISX0201_Kana; // Esc (I
|
||||
break;
|
||||
case 'J':
|
||||
state = JISX0201_Latin; // Esc (J
|
||||
break;
|
||||
}
|
||||
}
|
||||
nbuf = 0;
|
||||
esc = false;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (buf[1] == '(') {
|
||||
switch (ch) {
|
||||
case 'D':
|
||||
state = JISX0212; // Esc $ (D
|
||||
break;
|
||||
}
|
||||
}
|
||||
nbuf = 0;
|
||||
esc = false;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (ch == Esc) {
|
||||
// Escape sequence
|
||||
nbuf = 0;
|
||||
esc = true;
|
||||
} else if (ch == So) {
|
||||
// Shift out
|
||||
prev = state;
|
||||
state = JISX0201_Kana;
|
||||
nbuf = 0;
|
||||
} else if (ch == Si) {
|
||||
// Shift in
|
||||
if (prev == Ascii || prev == JISX0201_Latin) {
|
||||
state = prev;
|
||||
} else {
|
||||
state = Ascii;
|
||||
}
|
||||
nbuf = 0;
|
||||
} else {
|
||||
uint u;
|
||||
switch (nbuf) {
|
||||
case 0:
|
||||
switch (state) {
|
||||
case Ascii:
|
||||
if (ch < 0x80) {
|
||||
result += QLatin1Char(ch);
|
||||
break;
|
||||
}
|
||||
Q_FALLTHROUGH();
|
||||
case JISX0201_Latin:
|
||||
u = conv->jisx0201ToUnicode(ch);
|
||||
result += QValidChar(u);
|
||||
break;
|
||||
case JISX0201_Kana:
|
||||
u = conv->jisx0201ToUnicode(ch | 0x80);
|
||||
result += QValidChar(u);
|
||||
break;
|
||||
case JISX0208_1978:
|
||||
case JISX0208_1983:
|
||||
case JISX0212:
|
||||
buf[nbuf++] = ch;
|
||||
break;
|
||||
default:
|
||||
result += QChar::ReplacementCharacter;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
switch (state) {
|
||||
case JISX0208_1978:
|
||||
case JISX0208_1983:
|
||||
u = conv->jisx0208ToUnicode(buf[0] & 0x7f, ch & 0x7f);
|
||||
result += QValidChar(u);
|
||||
break;
|
||||
case JISX0212:
|
||||
u = conv->jisx0212ToUnicode(buf[0] & 0x7f, ch & 0x7f);
|
||||
result += QValidChar(u);
|
||||
break;
|
||||
default:
|
||||
result += replacement;
|
||||
++invalid;
|
||||
break;
|
||||
}
|
||||
nbuf = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cs) {
|
||||
cs->remainingChars = nbuf;
|
||||
cs->invalidChars += invalid;
|
||||
cs->state_data[0] = (buf[0] << 24) + (buf[1] << 16) + (buf[2] << 8) + buf[3];
|
||||
cs->state_data[1] = (prev << 8) + state;
|
||||
cs->state_data[2] = esc;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*!
|
||||
\internal
|
||||
*/
|
||||
int QJisCodec::_mibEnum()
|
||||
{
|
||||
return 39;
|
||||
}
|
||||
|
||||
/*!
|
||||
\internal
|
||||
*/
|
||||
QByteArray QJisCodec::_name()
|
||||
{
|
||||
return "ISO-2022-JP";
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the codec's mime name.
|
||||
*/
|
||||
QList<QByteArray> QJisCodec::_aliases()
|
||||
{
|
||||
QList<QByteArray> list;
|
||||
list << "JIS7"; // Qt 3 compat
|
||||
return list;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
@ -1,113 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// Most of the code here was originally written by Serika Kurusugawa
|
||||
// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
|
||||
// and the grateful thanks of the Qt team.
|
||||
|
||||
/*
|
||||
* Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef QJISCODEC_P_H
|
||||
#define QJISCODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists for the convenience
|
||||
// of other Qt classes. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include "qjpunicode_p.h"
|
||||
#include <QtCore/qtextcodec.h>
|
||||
#include <QtCore/qlist.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(big_codecs);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QJisCodec : public QTextCodec {
|
||||
public:
|
||||
static QByteArray _name();
|
||||
static QList<QByteArray> _aliases();
|
||||
static int _mibEnum();
|
||||
|
||||
QByteArray name() const override { return _name(); }
|
||||
QList<QByteArray> aliases() const override { return _aliases(); }
|
||||
int mibEnum() const override { return _mibEnum(); }
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
|
||||
QJisCodec();
|
||||
~QJisCodec();
|
||||
|
||||
protected:
|
||||
const QJpUnicodeConv *conv;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QJISCODEC_P_H
|
File diff suppressed because it is too large
Load Diff
@ -1,185 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// Most of the code here was originally written by Serika Kurusugawa
|
||||
// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
|
||||
// and the grateful thanks of the Qt team.
|
||||
|
||||
/*
|
||||
* Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef QJPUNICODE_P_H
|
||||
#define QJPUNICODE_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists for the convenience
|
||||
// of other Qt classes. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(big_codecs);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QJpUnicodeConv {
|
||||
public:
|
||||
virtual ~QJpUnicodeConv() {}
|
||||
enum Rules {
|
||||
// "ASCII" is ANSI X.3.4-1986, a.k.a. US-ASCII here.
|
||||
Default = 0x0000,
|
||||
|
||||
Unicode = 0x0001,
|
||||
Unicode_JISX0201 = 0x0001,
|
||||
Unicode_ASCII = 0x0002,
|
||||
JISX0221_JISX0201 = 0x0003,
|
||||
JISX0221_ASCII = 0x0004,
|
||||
Sun_JDK117 = 0x0005,
|
||||
Microsoft_CP932 = 0x0006,
|
||||
|
||||
NEC_VDC = 0x0100, // NEC Vender Defined Char
|
||||
UDC = 0x0200, // User Defined Char
|
||||
IBM_VDC = 0x0400 // IBM Vender Defined Char
|
||||
};
|
||||
static QJpUnicodeConv *newConverter(int rule);
|
||||
|
||||
virtual uint asciiToUnicode(uint h, uint l) const;
|
||||
/*virtual*/ uint jisx0201ToUnicode(uint h, uint l) const;
|
||||
virtual uint jisx0201LatinToUnicode(uint h, uint l) const;
|
||||
/*virtual*/ uint jisx0201KanaToUnicode(uint h, uint l) const;
|
||||
virtual uint jisx0208ToUnicode(uint h, uint l) const;
|
||||
virtual uint jisx0212ToUnicode(uint h, uint l) const;
|
||||
|
||||
uint asciiToUnicode(uint ascii) const {
|
||||
return asciiToUnicode((ascii & 0xff00) >> 8, (ascii & 0x00ff));
|
||||
}
|
||||
uint jisx0201ToUnicode(uint jis) const {
|
||||
return jisx0201ToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
|
||||
}
|
||||
uint jisx0201LatinToUnicode(uint jis) const {
|
||||
return jisx0201LatinToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
|
||||
}
|
||||
uint jisx0201KanaToUnicode(uint jis) const {
|
||||
return jisx0201KanaToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
|
||||
}
|
||||
uint jisx0208ToUnicode(uint jis) const {
|
||||
return jisx0208ToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
|
||||
}
|
||||
uint jisx0212ToUnicode(uint jis) const {
|
||||
return jisx0212ToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
|
||||
}
|
||||
|
||||
virtual uint unicodeToAscii(uint h, uint l) const;
|
||||
/*virtual*/ uint unicodeToJisx0201(uint h, uint l) const;
|
||||
virtual uint unicodeToJisx0201Latin(uint h, uint l) const;
|
||||
/*virtual*/ uint unicodeToJisx0201Kana(uint h, uint l) const;
|
||||
virtual uint unicodeToJisx0208(uint h, uint l) const;
|
||||
virtual uint unicodeToJisx0212(uint h, uint l) const;
|
||||
|
||||
uint unicodeToAscii(uint unicode) const {
|
||||
return unicodeToAscii((unicode & 0xff00) >> 8, (unicode & 0x00ff));
|
||||
}
|
||||
uint unicodeToJisx0201(uint unicode) const {
|
||||
return unicodeToJisx0201((unicode & 0xff00) >> 8, (unicode & 0x00ff));
|
||||
}
|
||||
uint unicodeToJisx0201Latin(uint unicode) const {
|
||||
return unicodeToJisx0201Latin((unicode & 0xff00) >> 8, (unicode & 0x00ff));
|
||||
}
|
||||
uint unicodeToJisx0201Kana(uint unicode) const {
|
||||
return unicodeToJisx0201Kana((unicode & 0xff00) >> 8, (unicode & 0x00ff));
|
||||
}
|
||||
uint unicodeToJisx0208(uint unicode) const {
|
||||
return unicodeToJisx0208((unicode & 0xff00) >> 8, (unicode & 0x00ff));
|
||||
}
|
||||
uint unicodeToJisx0212(uint unicode) const {
|
||||
return unicodeToJisx0212((unicode & 0xff00) >> 8, (unicode & 0x00ff));
|
||||
}
|
||||
|
||||
uint sjisToUnicode(uint h, uint l) const;
|
||||
uint unicodeToSjis(uint h, uint l) const;
|
||||
uint sjisibmvdcToUnicode(uint h, uint l) const;
|
||||
uint unicodeToSjisibmvdc(uint h, uint l) const;
|
||||
uint cp932ToUnicode(uint h, uint l) const;
|
||||
uint unicodeToCp932(uint h, uint l) const;
|
||||
|
||||
uint sjisToUnicode(uint sjis) const {
|
||||
return sjisToUnicode((sjis & 0xff00) >> 8, (sjis & 0x00ff));
|
||||
}
|
||||
uint unicodeToSjis(uint unicode) const {
|
||||
return unicodeToSjis((unicode & 0xff00) >> 8, (unicode & 0x00ff));
|
||||
}
|
||||
|
||||
protected:
|
||||
explicit QJpUnicodeConv(int r) : rule(r) {}
|
||||
|
||||
private:
|
||||
int rule;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QJPUNICODE_P_H
|
@ -1,238 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qlatincodec_p.h"
|
||||
#include "qlist.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
QLatin1Codec::~QLatin1Codec()
|
||||
{
|
||||
}
|
||||
|
||||
QString QLatin1Codec::convertToUnicode(const char *chars, int len, ConverterState *) const
|
||||
{
|
||||
if (chars == nullptr)
|
||||
return QString();
|
||||
|
||||
return QString::fromLatin1(chars, len);
|
||||
}
|
||||
|
||||
|
||||
QByteArray QLatin1Codec::convertFromUnicode(const QChar *ch, int len, ConverterState *state) const
|
||||
{
|
||||
const char replacement = (state && state->flags & ConvertInvalidToNull) ? 0 : '?';
|
||||
QByteArray r(len, Qt::Uninitialized);
|
||||
char *d = r.data();
|
||||
int invalid = 0;
|
||||
for (int i = 0; i < len; ++i) {
|
||||
if (ch[i] > QChar(0xff)) {
|
||||
d[i] = replacement;
|
||||
++invalid;
|
||||
} else {
|
||||
d[i] = (char)ch[i].cell();
|
||||
}
|
||||
}
|
||||
if (state) {
|
||||
state->invalidChars += invalid;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
QByteArray QLatin1Codec::name() const
|
||||
{
|
||||
return "ISO-8859-1";
|
||||
}
|
||||
|
||||
QList<QByteArray> QLatin1Codec::aliases() const
|
||||
{
|
||||
QList<QByteArray> list;
|
||||
list << "latin1"
|
||||
<< "CP819"
|
||||
<< "IBM819"
|
||||
<< "iso-ir-100"
|
||||
<< "csISOLatin1";
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
int QLatin1Codec::mibEnum() const
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
|
||||
|
||||
QLatin15Codec::~QLatin15Codec()
|
||||
{
|
||||
}
|
||||
|
||||
QString QLatin15Codec::convertToUnicode(const char* chars, int len, ConverterState *) const
|
||||
{
|
||||
if (chars == nullptr)
|
||||
return QString();
|
||||
|
||||
QString str = QString::fromLatin1(chars, len);
|
||||
QChar *uc = str.data();
|
||||
while(len--) {
|
||||
switch(uc->unicode()) {
|
||||
case 0xa4:
|
||||
*uc = QChar(0x20ac);
|
||||
break;
|
||||
case 0xa6:
|
||||
*uc = QChar(0x0160);
|
||||
break;
|
||||
case 0xa8:
|
||||
*uc = QChar(0x0161);
|
||||
break;
|
||||
case 0xb4:
|
||||
*uc = QChar(0x017d);
|
||||
break;
|
||||
case 0xb8:
|
||||
*uc = QChar(0x017e);
|
||||
break;
|
||||
case 0xbc:
|
||||
*uc = QChar(0x0152);
|
||||
break;
|
||||
case 0xbd:
|
||||
*uc = QChar(0x0153);
|
||||
break;
|
||||
case 0xbe:
|
||||
*uc = QChar(0x0178);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
uc++;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
QByteArray QLatin15Codec::convertFromUnicode(const QChar *in, int length, ConverterState *state) const
|
||||
{
|
||||
const char replacement = (state && state->flags & ConvertInvalidToNull) ? 0 : '?';
|
||||
QByteArray r(length, Qt::Uninitialized);
|
||||
char *d = r.data();
|
||||
int invalid = 0;
|
||||
for (int i = 0; i < length; ++i) {
|
||||
uchar c;
|
||||
ushort uc = in[i].unicode();
|
||||
if (uc < 0x0100) {
|
||||
if (uc > 0xa3) {
|
||||
switch(uc) {
|
||||
case 0xa4:
|
||||
case 0xa6:
|
||||
case 0xa8:
|
||||
case 0xb4:
|
||||
case 0xb8:
|
||||
case 0xbc:
|
||||
case 0xbd:
|
||||
case 0xbe:
|
||||
c = replacement;
|
||||
++invalid;
|
||||
break;
|
||||
default:
|
||||
c = (unsigned char) uc;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
c = (unsigned char) uc;
|
||||
}
|
||||
} else {
|
||||
if (uc == 0x20ac)
|
||||
c = 0xa4;
|
||||
else if ((uc & 0xff00) == 0x0100) {
|
||||
switch(uc) {
|
||||
case 0x0160:
|
||||
c = 0xa6;
|
||||
break;
|
||||
case 0x0161:
|
||||
c = 0xa8;
|
||||
break;
|
||||
case 0x017d:
|
||||
c = 0xb4;
|
||||
break;
|
||||
case 0x017e:
|
||||
c = 0xb8;
|
||||
break;
|
||||
case 0x0152:
|
||||
c = 0xbc;
|
||||
break;
|
||||
case 0x0153:
|
||||
c = 0xbd;
|
||||
break;
|
||||
case 0x0178:
|
||||
c = 0xbe;
|
||||
break;
|
||||
default:
|
||||
c = replacement;
|
||||
++invalid;
|
||||
}
|
||||
} else {
|
||||
c = replacement;
|
||||
++invalid;
|
||||
}
|
||||
}
|
||||
d[i] = (char)c;
|
||||
}
|
||||
if (state) {
|
||||
state->remainingChars = 0;
|
||||
state->invalidChars += invalid;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
QByteArray QLatin15Codec::name() const
|
||||
{
|
||||
return "ISO-8859-15";
|
||||
}
|
||||
|
||||
QList<QByteArray> QLatin15Codec::aliases() const
|
||||
{
|
||||
QList<QByteArray> list;
|
||||
list << "latin9";
|
||||
return list;
|
||||
}
|
||||
|
||||
int QLatin15Codec::mibEnum() const
|
||||
{
|
||||
return 111;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
@ -1,91 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef QLATINCODEC_P_H
|
||||
#define QLATINCODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
#include "QtCore/qtextcodec.h"
|
||||
|
||||
QT_REQUIRE_CONFIG(textcodec);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QLatin1Codec : public QTextCodec
|
||||
{
|
||||
public:
|
||||
~QLatin1Codec();
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
|
||||
QByteArray name() const override;
|
||||
QList<QByteArray> aliases() const override;
|
||||
int mibEnum() const override;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class QLatin15Codec: public QTextCodec
|
||||
{
|
||||
public:
|
||||
~QLatin15Codec();
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
|
||||
QByteArray name() const override;
|
||||
QList<QByteArray> aliases() const override;
|
||||
int mibEnum() const override;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QLATINCODEC_P_H
|
@ -1,724 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qsimplecodec_p.h"
|
||||
#include "qlist.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
#define LAST_MIB 2004
|
||||
|
||||
static const struct {
|
||||
const char *mime;
|
||||
const char *aliases[7];
|
||||
int mib;
|
||||
char16_t values[128];
|
||||
} unicodevalues[QSimpleTextCodec::numSimpleCodecs] = {
|
||||
// from RFC 1489, ftp://ftp.isi.edu/in-notes/rfc1489.txt
|
||||
{ "KOI8-R", { "csKOI8R", nullptr }, 2084,
|
||||
{ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524,
|
||||
0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590,
|
||||
0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219/**/, 0x221A, 0x2248,
|
||||
0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7,
|
||||
0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
|
||||
0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E,
|
||||
0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
|
||||
0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9,
|
||||
0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
|
||||
0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E,
|
||||
0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
|
||||
0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A,
|
||||
0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
|
||||
0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E,
|
||||
0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
|
||||
0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A } },
|
||||
// /**/ - The BULLET OPERATOR is confused. Some people think
|
||||
// it should be 0x2022 (BULLET).
|
||||
|
||||
// from RFC 2319, ftp://ftp.isi.edu/in-notes/rfc2319.txt
|
||||
{ "KOI8-U", { "KOI8-RU", nullptr }, 2088,
|
||||
{ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524,
|
||||
0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590,
|
||||
0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248,
|
||||
0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7,
|
||||
0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457,
|
||||
0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x0491, 0x255D, 0x255E,
|
||||
0x255F, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407,
|
||||
0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x0490, 0x256C, 0x00A9,
|
||||
0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
|
||||
0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E,
|
||||
0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
|
||||
0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A,
|
||||
0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
|
||||
0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E,
|
||||
0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
|
||||
0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A } },
|
||||
|
||||
// next bits generated from tables on the Unicode 2.0 CD. we can
|
||||
// use these tables since this is part of the transition to using
|
||||
// unicode everywhere in qt.
|
||||
|
||||
// $ for A in 8 9 A B C D E F ; do for B in 0 1 2 3 4 5 6 7 8 9 A B C D E F ; do echo 0x${A}${B} 0xFFFD ; done ; done > /tmp/digits ; for a in 8859-* ; do (awk '/^0x[89ABCDEF]/{ print $1, $2 }' < $a ; cat /tmp/digits) | sort | uniq -w4 | cut -c6- | paste '-d ' - - - - - - - - | sed -e 's/ /, /g' -e 's/$/,/' -e '$ s/,$/} },/' -e '1 s/^/{ /' > ~/tmp/$a ; done
|
||||
|
||||
// then I inserted the files manually.
|
||||
{ "ISO-8859-2", {"latin2", "iso-ir-101", "csISOLatin2", nullptr }, 5,
|
||||
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
|
||||
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
|
||||
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
|
||||
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
|
||||
0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7,
|
||||
0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B,
|
||||
0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7,
|
||||
0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C,
|
||||
0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7,
|
||||
0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E,
|
||||
0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7,
|
||||
0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF,
|
||||
0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7,
|
||||
0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F,
|
||||
0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7,
|
||||
0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9} },
|
||||
{ "ISO-8859-3", { "latin3", "iso-ir-109", "csISOLatin3", nullptr }, 6,
|
||||
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
|
||||
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
|
||||
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
|
||||
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
|
||||
0x00A0, 0x0126, 0x02D8, 0x00A3, 0x00A4, 0xFFFD, 0x0124, 0x00A7,
|
||||
0x00A8, 0x0130, 0x015E, 0x011E, 0x0134, 0x00AD, 0xFFFD, 0x017B,
|
||||
0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125, 0x00B7,
|
||||
0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD, 0xFFFD, 0x017C,
|
||||
0x00C0, 0x00C1, 0x00C2, 0xFFFD, 0x00C4, 0x010A, 0x0108, 0x00C7,
|
||||
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
|
||||
0xFFFD, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7,
|
||||
0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF,
|
||||
0x00E0, 0x00E1, 0x00E2, 0xFFFD, 0x00E4, 0x010B, 0x0109, 0x00E7,
|
||||
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
|
||||
0xFFFD, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7,
|
||||
0x011D, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9} },
|
||||
{ "ISO-8859-4", { "latin4", "iso-ir-110", "csISOLatin4", nullptr }, 7,
|
||||
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
|
||||
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
|
||||
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
|
||||
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
|
||||
0x00A0, 0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7,
|
||||
0x00A8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00AD, 0x017D, 0x00AF,
|
||||
0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C, 0x02C7,
|
||||
0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B,
|
||||
0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E,
|
||||
0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x012A,
|
||||
0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
|
||||
0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF,
|
||||
0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F,
|
||||
0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x012B,
|
||||
0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
|
||||
0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9} },
|
||||
{ "ISO-8859-5", { "cyrillic", "iso-ir-144", "csISOLatinCyrillic", nullptr }, 8,
|
||||
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
|
||||
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
|
||||
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
|
||||
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
|
||||
0x00A0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
|
||||
0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F,
|
||||
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
|
||||
0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
|
||||
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
|
||||
0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
|
||||
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
|
||||
0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
|
||||
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
|
||||
0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
|
||||
0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
|
||||
0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F} },
|
||||
{ "ISO-8859-6", { "ISO-8859-6-I", "ECMA-114", "ASMO-708", "arabic", "iso-ir-127", "csISOLatinArabic", nullptr }, 82,
|
||||
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
|
||||
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
|
||||
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
|
||||
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
|
||||
0x00A0, 0xFFFD, 0xFFFD, 0xFFFD, 0x00A4, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x060C, 0x00AD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0x061B, 0xFFFD, 0xFFFD, 0xFFFD, 0x061F,
|
||||
0xFFFD, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
|
||||
0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F,
|
||||
0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
|
||||
0x0638, 0x0639, 0x063A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
|
||||
0x0648, 0x0649, 0x064A, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F,
|
||||
0x0650, 0x0651, 0x0652, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD} },
|
||||
{ "ISO-8859-7", { "ECMA-118", "greek", "iso-ir-126", "csISOLatinGreek", nullptr }, 10,
|
||||
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
|
||||
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
|
||||
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
|
||||
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
|
||||
0x00A0, 0x2018, 0x2019, 0x00A3, 0xFFFD, 0xFFFD, 0x00A6, 0x00A7,
|
||||
0x00A8, 0x00A9, 0xFFFD, 0x00AB, 0x00AC, 0x00AD, 0xFFFD, 0x2015,
|
||||
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x0385, 0x0386, 0x00B7,
|
||||
0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F,
|
||||
0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
|
||||
0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
|
||||
0x03A0, 0x03A1, 0xFFFD, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
|
||||
0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF,
|
||||
0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
|
||||
0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
|
||||
0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
|
||||
0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0xFFFD} },
|
||||
{ "ISO-8859-8", { "ISO 8859-8-I", "iso-ir-138", "hebrew", "csISOLatinHebrew", nullptr }, 85,
|
||||
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
|
||||
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
|
||||
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
|
||||
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
|
||||
0x00A0, 0xFFFD, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||
0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x203E,
|
||||
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2017,
|
||||
0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
|
||||
0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
|
||||
0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
|
||||
0x05E8, 0x05E9, 0x05EA, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD} },
|
||||
{ "ISO-8859-9", { "iso-ir-148", "latin5", "csISOLatin5", nullptr }, 12,
|
||||
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
|
||||
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
|
||||
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
|
||||
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
|
||||
0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||
0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
|
||||
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
|
||||
0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
|
||||
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
|
||||
0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
|
||||
0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF,
|
||||
0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
|
||||
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
|
||||
0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
|
||||
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF} },
|
||||
{ "ISO-8859-10", { "iso-ir-157", "latin6", "ISO-8859-10:1992", "csISOLatin6", nullptr }, 13,
|
||||
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
|
||||
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
|
||||
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
|
||||
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
|
||||
0x00A0, 0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7,
|
||||
0x013B, 0x0110, 0x0160, 0x0166, 0x017D, 0x00AD, 0x016A, 0x014A,
|
||||
0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137, 0x00B7,
|
||||
0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2015, 0x016B, 0x014B,
|
||||
0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E,
|
||||
0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x00CF,
|
||||
0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168,
|
||||
0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
|
||||
0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F,
|
||||
0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF,
|
||||
0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169,
|
||||
0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138} },
|
||||
{ "ISO-8859-13", { nullptr }, 109,
|
||||
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
|
||||
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
|
||||
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
|
||||
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
|
||||
0x00A0, 0x201D, 0x00A2, 0x00A3, 0x00A4, 0x201E, 0x00A6, 0x00A7,
|
||||
0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6,
|
||||
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x201C, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6,
|
||||
0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112,
|
||||
0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B,
|
||||
0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7,
|
||||
0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF,
|
||||
0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113,
|
||||
0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C,
|
||||
0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7,
|
||||
0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019} },
|
||||
{ "ISO-8859-14", { "iso-ir-199", "latin8", "iso-celtic", nullptr }, 110,
|
||||
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
|
||||
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
|
||||
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
|
||||
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
|
||||
0x00A0, 0x1E02, 0x1E03, 0x00A3, 0x010A, 0x010B, 0x1E0A, 0x00A7,
|
||||
0x1E80, 0x00A9, 0x1E82, 0x1E0B, 0x1EF2, 0x00AD, 0x00AE, 0x0178,
|
||||
0x1E1E, 0x1E1F, 0x0120, 0x0121, 0x1E40, 0x1E41, 0x00B6, 0x1E56,
|
||||
0x1E81, 0x1E57, 0x1E83, 0x1E60, 0x1EF3, 0x1E84, 0x1E85, 0x1E61,
|
||||
0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
|
||||
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
|
||||
0x0174, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x1E6A,
|
||||
0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x0176, 0x00DF,
|
||||
0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
|
||||
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
|
||||
0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B,
|
||||
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF} },
|
||||
{ "ISO-8859-16", { "iso-ir-226", "latin10", nullptr }, 112,
|
||||
{ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
|
||||
0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
|
||||
0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
|
||||
0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
|
||||
0x00A0, 0x0104, 0x0105, 0x0141, 0x20AC, 0x201E, 0x0160, 0x00A7,
|
||||
0x0161, 0x00A9, 0x0218, 0x00AB, 0x0179, 0x00AD, 0x017A, 0x017B,
|
||||
0x00B0, 0x00B1, 0x010C, 0x0142, 0x017D, 0x201D, 0x00B6, 0x00B7,
|
||||
0x017E, 0x010D, 0x0219, 0x00BB, 0x0152, 0x0153, 0x0178, 0x017C,
|
||||
0x00C0, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0106, 0x00C6, 0x00C7,
|
||||
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
|
||||
0x0110, 0x0143, 0x00D2, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x015A,
|
||||
0x0170, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0118, 0x021A, 0x00DF,
|
||||
0x00E0, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x0107, 0x00E6, 0x00E7,
|
||||
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
|
||||
0x0111, 0x0144, 0x00F2, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x015B,
|
||||
0x0171, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0119, 0x021B, 0x00FF} },
|
||||
|
||||
// next bits generated again from tables on the Unicode 3.0 CD.
|
||||
|
||||
// $ for a in CP* ; do (awk '/^0x[89ABCDEF]/{ print $1, $2 }' < $a) | sort | sed -e 's/#UNDEF.*$/0xFFFD/' | cut -c6- | paste '-d ' - - - - - - - - | sed -e 's/ /, /g' -e 's/$/,/' -e '$ s/,$/} },/' -e '1 s/^/{ /' > ~/tmp/$a ; done
|
||||
{ "IBM850", { "CP850", "csPC850Multilingual", nullptr }, 2009,
|
||||
{ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
|
||||
0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
|
||||
0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
|
||||
0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192,
|
||||
0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
|
||||
0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
|
||||
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0,
|
||||
0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510,
|
||||
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3,
|
||||
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
|
||||
0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE,
|
||||
0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580,
|
||||
0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE,
|
||||
0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4,
|
||||
0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8,
|
||||
0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0} },
|
||||
{ "IBM874", { "CP874", nullptr }, -874, //### what is the mib?
|
||||
{ 0x20AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2026, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0x00A0, 0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07,
|
||||
0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F,
|
||||
0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16, 0x0E17,
|
||||
0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F,
|
||||
0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27,
|
||||
0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F,
|
||||
0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37,
|
||||
0x0E38, 0x0E39, 0x0E3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0E3F,
|
||||
0x0E40, 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47,
|
||||
0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F,
|
||||
0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57,
|
||||
0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD} },
|
||||
{ "IBM866", { "CP866", "csIBM866", nullptr }, 2086,
|
||||
{ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
|
||||
0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
|
||||
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
|
||||
0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
|
||||
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
|
||||
0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
|
||||
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
|
||||
0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
|
||||
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
|
||||
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
|
||||
0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
|
||||
0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
|
||||
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
|
||||
0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
|
||||
0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E,
|
||||
0x00B0, 0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0} },
|
||||
|
||||
{ "windows-1250", { "CP1250", nullptr }, 2250,
|
||||
{ 0x20AC, 0xFFFD, 0x201A, 0xFFFD, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||
0xFFFD, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179,
|
||||
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0xFFFD, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A,
|
||||
0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7,
|
||||
0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B,
|
||||
0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C,
|
||||
0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7,
|
||||
0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E,
|
||||
0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7,
|
||||
0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF,
|
||||
0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7,
|
||||
0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F,
|
||||
0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7,
|
||||
0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9} },
|
||||
{ "windows-1251", { "CP1251", nullptr }, 2251,
|
||||
{ 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||
0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
|
||||
0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0xFFFD, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,
|
||||
0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,
|
||||
0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
|
||||
0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,
|
||||
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
|
||||
0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
|
||||
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
|
||||
0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
|
||||
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
|
||||
0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
|
||||
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
|
||||
0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F} },
|
||||
{ "windows-1252", { "CP1252", nullptr }, 2252,
|
||||
{ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||
0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFD, 0x017D, 0xFFFD,
|
||||
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFD, 0x017E, 0x0178,
|
||||
0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||
0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
|
||||
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
|
||||
0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
|
||||
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
|
||||
0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
|
||||
0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
|
||||
0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
|
||||
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
|
||||
0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
|
||||
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF} },
|
||||
{ "windows-1253", {"CP1253", nullptr }, 2253,
|
||||
{ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||
0xFFFD, 0x2030, 0xFFFD, 0x2039, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0xFFFD, 0x2122, 0xFFFD, 0x203A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||
0x00A8, 0x00A9, 0xFFFD, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015,
|
||||
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F,
|
||||
0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
|
||||
0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
|
||||
0x03A0, 0x03A1, 0xFFFD, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
|
||||
0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF,
|
||||
0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
|
||||
0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
|
||||
0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
|
||||
0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0xFFFD} },
|
||||
{ "windows-1254", { "CP1254", nullptr }, 2254,
|
||||
{ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||
0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFD, 0xFFFD, 0x0178,
|
||||
0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||
0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
|
||||
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
|
||||
0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
|
||||
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
|
||||
0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
|
||||
0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF,
|
||||
0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
|
||||
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
|
||||
0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
|
||||
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF} },
|
||||
{ "windows-1255", { "CP1255", nullptr }, 2255,
|
||||
{ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||
0x02C6, 0x2030, 0xFFFD, 0x2039, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0x02DC, 0x2122, 0xFFFD, 0x203A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AA, 0x00A5, 0x00A6, 0x00A7,
|
||||
0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
|
||||
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
|
||||
0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7,
|
||||
0x05B8, 0x05B9, 0xFFFD, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF,
|
||||
0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3,
|
||||
0x05F4, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
|
||||
0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
|
||||
0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
|
||||
0x05E8, 0x05E9, 0x05EA, 0xFFFD, 0xFFFD, 0x200E, 0x200F, 0xFFFD} },
|
||||
{ "windows-1256", { "CP1256", nullptr }, 2256,
|
||||
{ 0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||
0x02C6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
|
||||
0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0x06A9, 0x2122, 0x0691, 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA,
|
||||
0x00A0, 0x060C, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||
0x00A8, 0x00A9, 0x06BE, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
|
||||
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061F,
|
||||
0x06C1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
|
||||
0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F,
|
||||
0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7,
|
||||
0x0637, 0x0638, 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, 0x0643,
|
||||
0x00E0, 0x0644, 0x00E2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7,
|
||||
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A, 0x00EE, 0x00EF,
|
||||
0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, 0x00F7,
|
||||
0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x06D2} },
|
||||
{ "windows-1257", { "CP1257", nullptr }, 2257,
|
||||
{ 0x20AC, 0xFFFD, 0x201A, 0xFFFD, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||
0xFFFD, 0x2030, 0xFFFD, 0x2039, 0xFFFD, 0x00A8, 0x02C7, 0x00B8,
|
||||
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0xFFFD, 0x2122, 0xFFFD, 0x203A, 0xFFFD, 0x00AF, 0x02DB, 0xFFFD,
|
||||
0x00A0, 0xFFFD, 0x00A2, 0x00A3, 0x00A4, 0xFFFD, 0x00A6, 0x00A7,
|
||||
0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6,
|
||||
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6,
|
||||
0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112,
|
||||
0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B,
|
||||
0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7,
|
||||
0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF,
|
||||
0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113,
|
||||
0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C,
|
||||
0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7,
|
||||
0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9} },
|
||||
{ "windows-1258", { "CP1258", nullptr }, 2258,
|
||||
{ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||
0x02C6, 0x2030, 0xFFFD, 0x2039, 0x0152, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0x02DC, 0x2122, 0xFFFD, 0x203A, 0x0153, 0xFFFD, 0xFFFD, 0x0178,
|
||||
0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||
0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
|
||||
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
|
||||
0x00C0, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
|
||||
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x0300, 0x00CD, 0x00CE, 0x00CF,
|
||||
0x0110, 0x00D1, 0x0309, 0x00D3, 0x00D4, 0x01A0, 0x00D6, 0x00D7,
|
||||
0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x01AF, 0x0303, 0x00DF,
|
||||
0x00E0, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
|
||||
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0301, 0x00ED, 0x00EE, 0x00EF,
|
||||
0x0111, 0x00F1, 0x0323, 0x00F3, 0x00F4, 0x01A1, 0x00F6, 0x00F7,
|
||||
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x01B0, 0x20AB, 0x00FF} },
|
||||
|
||||
{ "macintosh", { "Apple Roman", "MacRoman", nullptr }, 2027,
|
||||
{ 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1,
|
||||
0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8,
|
||||
0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3,
|
||||
0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC,
|
||||
0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF,
|
||||
0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8,
|
||||
0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211,
|
||||
0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8,
|
||||
0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB,
|
||||
0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153,
|
||||
0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA,
|
||||
0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A, 0xFB01, 0xFB02,
|
||||
0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1,
|
||||
0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4,
|
||||
0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC,
|
||||
0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7} },
|
||||
|
||||
// This one is based on the charmap file
|
||||
// /usr/share/i18n/charmaps/SAMI-WS2.gz, which is manually adapted
|
||||
// to this format by Boerre Gaup <boerre@subdimension.com>
|
||||
{ "WINSAMI2", { "WS2", nullptr }, -165,
|
||||
{ 0x20AC, 0xFFFD, 0x010C, 0x0192, 0x010D, 0x01B7, 0x0292, 0x01EE,
|
||||
0x01EF, 0x0110, 0x0160, 0x2039, 0x0152, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0x0111, 0x01E6, 0x0161, 0x203A, 0x0153, 0xFFFD, 0xFFFD, 0x0178,
|
||||
0x00A0, 0x01E7, 0x01E4, 0x00A3, 0x00A4, 0x01E5, 0x00A6, 0x00A7,
|
||||
0x00A8, 0x00A9, 0x021E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x021F,
|
||||
0x00B0, 0x00B1, 0x01E8, 0x01E9, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||
0x014A, 0x014B, 0x0166, 0x00BB, 0x0167, 0x00BD, 0x017D, 0x017E,
|
||||
0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
|
||||
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
|
||||
0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
|
||||
0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
|
||||
0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
|
||||
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
|
||||
0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
|
||||
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF} },
|
||||
|
||||
// this one is generated from the charmap file located in /usr/share/i18n/charmaps
|
||||
// on most Linux distributions. The thai character set tis620 is byte by byte equivalent
|
||||
// to iso8859-11, so we name it 8859-11 here, but recognise the name tis620 too.
|
||||
|
||||
// $ for A in 8 9 A B C D E F ; do for B in 0 1 2 3 4 5 6 7 8 9 A B C D E F ; do echo x${A}${B} 0xFFFD ; done ; done > /tmp/digits ; (cut -c25- < TIS-620 ; cat /tmp/digits) | awk '/^x[89ABCDEF]/{ print $1, $2 }' | sed -e 's/<U/0x/' -e 's/>//' | sort | uniq -w4 | cut -c5- | paste '-d ' - - - - - - - - | sed -e 's/ /, /g' -e 's/$/,/' -e '$ s/,$/} },/' -e '1 s/^/{ /' > ~/tmp/tis-620
|
||||
{ "TIS-620", { "ISO 8859-11", nullptr }, 2259, // Thai character set mib enum taken from tis620 (which is byte by byte equivalent)
|
||||
{ 0x20AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x2026, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07,
|
||||
0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F,
|
||||
0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16, 0x0E17,
|
||||
0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F,
|
||||
0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27,
|
||||
0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F,
|
||||
0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37,
|
||||
0x0E38, 0x0E39, 0x0E3A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0E3F,
|
||||
0x0E40, 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47,
|
||||
0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F,
|
||||
0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57,
|
||||
0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD } },
|
||||
|
||||
/*
|
||||
Name: hp-roman8 [HP-PCL5,RFC1345,KXS2]
|
||||
MIBenum: 2004
|
||||
Source: LaserJet IIP Printer User's Manual,
|
||||
HP part no 33471-90901, Hewlet-Packard, June 1989.
|
||||
Alias: roman8
|
||||
Alias: r8
|
||||
Alias: csHPRoman8
|
||||
*/
|
||||
{ "hp-roman8", { "roman8", "csHPRoman8", nullptr }, 2004,
|
||||
{ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
|
||||
0x00A0, 0x00C0, 0x00C2, 0x00C8, 0x00CA, 0x00CB, 0x00CE, 0x00CF,
|
||||
0x00B4, 0x02CB, 0x02C6, 0x00A8, 0x02DC, 0x00D9, 0x00DB, 0x20A4,
|
||||
0x00AF, 0x00DD, 0x00FD, 0x00B0, 0x00C7, 0x00E7, 0x00D1, 0x00F1,
|
||||
0x00A1, 0x00BF, 0x00A4, 0x00A3, 0x00A5, 0x00A7, 0x0192, 0x00A2,
|
||||
0x00E2, 0x00EA, 0x00F4, 0x00FB, 0x00E1, 0x00E9, 0x00F3, 0x00FA,
|
||||
0x00E0, 0x00E8, 0x00F2, 0x00F9, 0x00E4, 0x00EB, 0x00F6, 0x00FC,
|
||||
0x00C5, 0x00EE, 0x00D8, 0x00C6, 0x00E5, 0x00ED, 0x00F8, 0x00E6,
|
||||
0x00C4, 0x00EC, 0x00D6, 0x00DC, 0x00C9, 0x00EF, 0x00DF, 0x00D4,
|
||||
0x00C1, 0x00C3, 0x00E3, 0x00D0, 0x00F0, 0x00CD, 0x00CC, 0x00D3,
|
||||
0x00D2, 0x00D5, 0x00F5, 0x0160, 0x0161, 0x00DA, 0x0178, 0x00FF,
|
||||
0x00DE, 0x00FE, 0x00B7, 0x00B5, 0x00B6, 0x00BE, 0x2014, 0x00BC,
|
||||
0x00BD, 0x00AA, 0x00BA, 0x00AB, 0x25A0, 0x00BB, 0x00B1, 0xFFFD } }
|
||||
|
||||
// if you add more chacater sets at the end, change LAST_MIB above
|
||||
};
|
||||
|
||||
QSimpleTextCodec::QSimpleTextCodec(int i) : forwardIndex(i), reverseMap(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
QSimpleTextCodec::~QSimpleTextCodec()
|
||||
{
|
||||
delete reverseMap.loadAcquire();
|
||||
}
|
||||
|
||||
static QByteArray *buildReverseMap(int forwardIndex)
|
||||
{
|
||||
QByteArray *map = new QByteArray();
|
||||
int m = 0;
|
||||
int i = 0;
|
||||
while(i < 128) {
|
||||
if (unicodevalues[forwardIndex].values[i] > m &&
|
||||
unicodevalues[forwardIndex].values[i] < 0xfffd)
|
||||
m = unicodevalues[forwardIndex].values[i];
|
||||
i++;
|
||||
}
|
||||
m++;
|
||||
map->resize(m);
|
||||
for(i = 0; i < 128 && i < m; i++)
|
||||
(*map)[i] = (char)i;
|
||||
for(;i < m; i++)
|
||||
(*map)[i] = 0;
|
||||
for(i=128; i<256; i++) {
|
||||
int u = unicodevalues[forwardIndex].values[i-128];
|
||||
if (u < m)
|
||||
(*map)[u] = (char)(unsigned char)(i);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
QString QSimpleTextCodec::convertToUnicode(const char* chars, int len, ConverterState *) const
|
||||
{
|
||||
if (len <= 0 || chars == nullptr)
|
||||
return QString();
|
||||
|
||||
const unsigned char * c = (const unsigned char *)chars;
|
||||
|
||||
QString r(len, Qt::Uninitialized);
|
||||
QChar* uc = r.data();
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
if (c[i] > 127)
|
||||
uc[i] = unicodevalues[forwardIndex].values[c[i]-128];
|
||||
else
|
||||
uc[i] = QLatin1Char(c[i]);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
QByteArray QSimpleTextCodec::convertFromUnicode(const QChar *in, int length, ConverterState *state) const
|
||||
{
|
||||
const char replacement = (state && state->flags & ConvertInvalidToNull) ? 0 : '?';
|
||||
int invalid = 0;
|
||||
|
||||
QByteArray *rmap = reverseMap.loadAcquire();
|
||||
if (!rmap){
|
||||
rmap = buildReverseMap(this->forwardIndex);
|
||||
if (!reverseMap.testAndSetRelease(nullptr, rmap)) {
|
||||
delete rmap;
|
||||
rmap = reverseMap.loadAcquire();
|
||||
}
|
||||
}
|
||||
|
||||
QByteArray r(length, Qt::Uninitialized);
|
||||
int i = length;
|
||||
int u;
|
||||
const QChar* ucp = in;
|
||||
unsigned char* rp = (unsigned char *)r.data();
|
||||
const unsigned char* rmp = (const unsigned char *)rmap->constData();
|
||||
int rmsize = (int) rmap->size();
|
||||
while(i--)
|
||||
{
|
||||
u = ucp->unicode();
|
||||
if (u < 128) {
|
||||
*rp = (char)u;
|
||||
} else {
|
||||
*rp = ((u < rmsize) ? (*(rmp+u)) : 0);
|
||||
if (*rp == 0) {
|
||||
*rp = replacement;
|
||||
++invalid;
|
||||
}
|
||||
}
|
||||
rp++;
|
||||
ucp++;
|
||||
}
|
||||
|
||||
if (state) {
|
||||
state->invalidChars += invalid;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
QByteArray QSimpleTextCodec::name() const
|
||||
{
|
||||
return unicodevalues[forwardIndex].mime;
|
||||
}
|
||||
|
||||
QList<QByteArray> QSimpleTextCodec::aliases() const
|
||||
{
|
||||
QList<QByteArray> list;
|
||||
const char * const*a = unicodevalues[forwardIndex].aliases;
|
||||
while (*a) {
|
||||
list << *a;
|
||||
++a;
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
int QSimpleTextCodec::mibEnum() const
|
||||
{
|
||||
return unicodevalues[forwardIndex].mib;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
@ -1,84 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef QSIMPLECODEC_P_H
|
||||
#define QSIMPLECODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
#include "QtCore/qtextcodec.h"
|
||||
|
||||
QT_REQUIRE_CONFIG(textcodec);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
template <typename T> class QAtomicPointer;
|
||||
|
||||
class QSimpleTextCodec: public QTextCodec
|
||||
{
|
||||
public:
|
||||
enum { numSimpleCodecs = 30 };
|
||||
explicit QSimpleTextCodec(int);
|
||||
~QSimpleTextCodec();
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
|
||||
QByteArray name() const override;
|
||||
QList<QByteArray> aliases() const override;
|
||||
int mibEnum() const override;
|
||||
|
||||
private:
|
||||
int forwardIndex;
|
||||
mutable QAtomicPointer<QByteArray> reverseMap;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QSIMPLECODEC_P_H
|
@ -1,226 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// Most of the code here was originally written by Serika Kurusugawa
|
||||
// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
|
||||
// and the grateful thanks of the Qt team.
|
||||
|
||||
/*! \class QSjisCodec
|
||||
\inmodule QtCore
|
||||
\reentrant
|
||||
\internal
|
||||
*/
|
||||
|
||||
#include "qsjiscodec_p.h"
|
||||
#include "qlist.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
enum {
|
||||
Esc = 0x1b
|
||||
};
|
||||
|
||||
#define IsKana(c) (((c) >= 0xa1) && ((c) <= 0xdf))
|
||||
#define IsSjisChar1(c) ((((c) >= 0x81) && ((c) <= 0x9f)) || \
|
||||
(((c) >= 0xe0) && ((c) <= 0xfc)))
|
||||
#define IsSjisChar2(c) (((c) >= 0x40) && ((c) != 0x7f) && ((c) <= 0xfc))
|
||||
#define IsUserDefinedChar1(c) (((c) >= 0xf0) && ((c) <= 0xfc))
|
||||
|
||||
#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
|
||||
|
||||
/*!
|
||||
Creates a Shift-JIS codec. Note that this is done automatically by
|
||||
the QApplication, you do not need construct your own.
|
||||
*/
|
||||
QSjisCodec::QSjisCodec() : conv(QJpUnicodeConv::newConverter(QJpUnicodeConv::Default))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
Destroys the Shift-JIS codec.
|
||||
*/
|
||||
QSjisCodec::~QSjisCodec()
|
||||
{
|
||||
delete (const QJpUnicodeConv*)conv;
|
||||
conv = 0;
|
||||
}
|
||||
|
||||
|
||||
QByteArray QSjisCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
|
||||
{
|
||||
char replacement = '?';
|
||||
if (state) {
|
||||
if (state->flags & ConvertInvalidToNull)
|
||||
replacement = 0;
|
||||
}
|
||||
int invalid = 0;
|
||||
|
||||
int rlen = 2*len + 1;
|
||||
QByteArray rstr;
|
||||
rstr.resize(rlen);
|
||||
uchar* cursor = (uchar*)rstr.data();
|
||||
for (int i = 0; i < len; i++) {
|
||||
QChar ch = uc[i];
|
||||
uint j;
|
||||
if (ch.row() == 0x00 && ch.cell() < 0x80) {
|
||||
// ASCII
|
||||
*cursor++ = ch.cell();
|
||||
} else if ((j = conv->unicodeToJisx0201(ch.row(), ch.cell())) != 0) {
|
||||
// JIS X 0201 Latin or JIS X 0201 Kana
|
||||
*cursor++ = j;
|
||||
} else if ((j = conv->unicodeToSjis(ch.row(), ch.cell())) != 0) {
|
||||
// JIS X 0208
|
||||
*cursor++ = (j >> 8);
|
||||
*cursor++ = (j & 0xff);
|
||||
} else if ((j = conv->unicodeToSjisibmvdc(ch.row(), ch.cell())) != 0) {
|
||||
// JIS X 0208 IBM VDC
|
||||
*cursor++ = (j >> 8);
|
||||
*cursor++ = (j & 0xff);
|
||||
} else if ((j = conv->unicodeToCp932(ch.row(), ch.cell())) != 0) {
|
||||
// CP932 (for lead bytes 87, ee & ed)
|
||||
*cursor++ = (j >> 8);
|
||||
*cursor++ = (j & 0xff);
|
||||
} else if ((j = conv->unicodeToJisx0212(ch.row(), ch.cell())) != 0) {
|
||||
// JIS X 0212 (can't be encoded in ShiftJIS !)
|
||||
*cursor++ = 0x81; // white square
|
||||
*cursor++ = 0xa0; // white square
|
||||
} else {
|
||||
// Error
|
||||
*cursor++ = replacement;
|
||||
++invalid;
|
||||
}
|
||||
}
|
||||
rstr.resize(cursor - (const uchar*)rstr.constData());
|
||||
|
||||
if (state) {
|
||||
state->invalidChars += invalid;
|
||||
}
|
||||
return rstr;
|
||||
}
|
||||
|
||||
QString QSjisCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
|
||||
{
|
||||
uchar buf[1] = {0};
|
||||
int nbuf = 0;
|
||||
QChar replacement = QChar::ReplacementCharacter;
|
||||
if (state) {
|
||||
if (state->flags & ConvertInvalidToNull)
|
||||
replacement = QChar::Null;
|
||||
nbuf = state->remainingChars;
|
||||
buf[0] = state->state_data[0];
|
||||
}
|
||||
int invalid = 0;
|
||||
uint u= 0;
|
||||
QString result;
|
||||
for (int i=0; i<len; i++) {
|
||||
uchar ch = chars[i];
|
||||
switch (nbuf) {
|
||||
case 0:
|
||||
if (ch < 0x80) {
|
||||
result += QValidChar(ch);
|
||||
} else if (IsKana(ch)) {
|
||||
// JIS X 0201 Latin or JIS X 0201 Kana
|
||||
u = conv->jisx0201ToUnicode(ch);
|
||||
result += QValidChar(u);
|
||||
} else if (IsSjisChar1(ch)) {
|
||||
// JIS X 0208
|
||||
buf[0] = ch;
|
||||
nbuf = 1;
|
||||
} else {
|
||||
// Invalid
|
||||
result += replacement;
|
||||
++invalid;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
// JIS X 0208
|
||||
if (IsSjisChar2(ch)) {
|
||||
if ((u = conv->sjisibmvdcToUnicode(buf[0], ch))) {
|
||||
result += QValidChar(u);
|
||||
} else if ((u = conv->cp932ToUnicode(buf[0], ch))) {
|
||||
result += QValidChar(u);
|
||||
}
|
||||
else if (IsUserDefinedChar1(buf[0])) {
|
||||
result += QChar::ReplacementCharacter;
|
||||
} else {
|
||||
u = conv->sjisToUnicode(buf[0], ch);
|
||||
result += QValidChar(u);
|
||||
}
|
||||
} else {
|
||||
// Invalid
|
||||
result += replacement;
|
||||
++invalid;
|
||||
}
|
||||
nbuf = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (state) {
|
||||
state->remainingChars = nbuf;
|
||||
state->state_data[0] = buf[0];
|
||||
state->invalidChars += invalid;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
int QSjisCodec::_mibEnum()
|
||||
{
|
||||
return 17;
|
||||
}
|
||||
|
||||
QByteArray QSjisCodec::_name()
|
||||
{
|
||||
return "Shift_JIS";
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the codec's mime name.
|
||||
*/
|
||||
QList<QByteArray> QSjisCodec::_aliases()
|
||||
{
|
||||
QList<QByteArray> list;
|
||||
list << "SJIS" // Qt 3 compat
|
||||
<< "MS_Kanji";
|
||||
return list;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
@ -1,113 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// Most of the code here was originally written by Serika Kurusugawa
|
||||
// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
|
||||
// and the grateful thanks of the Qt team.
|
||||
|
||||
/*
|
||||
* Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef QSJISCODEC_P_H
|
||||
#define QSJISCODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists for the convenience
|
||||
// of other Qt classes. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include "qjpunicode_p.h"
|
||||
#include <QtCore/qtextcodec.h>
|
||||
#include <QtCore/qlist.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(big_codecs);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QSjisCodec : public QTextCodec {
|
||||
public:
|
||||
static QByteArray _name();
|
||||
static QList<QByteArray> _aliases();
|
||||
static int _mibEnum();
|
||||
|
||||
QByteArray name() const override { return _name(); }
|
||||
QList<QByteArray> aliases() const override { return _aliases(); }
|
||||
int mibEnum() const override { return _mibEnum(); }
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
|
||||
QSjisCodec();
|
||||
~QSjisCodec();
|
||||
|
||||
protected:
|
||||
const QJpUnicodeConv *conv;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QSJISCODEC_P_H
|
@ -1,110 +0,0 @@
|
||||
[
|
||||
{
|
||||
"Id": "qbig5codecs",
|
||||
"Name": "Text Codecs: Big5, Big5-HKSCS",
|
||||
"QDocModule": "qtcore",
|
||||
"QtUsage": "Used in Qt Core if ICU is not used. Configure with -icu to avoid.",
|
||||
"Path": "qbig5codec.cpp",
|
||||
|
||||
"Description": "Treat as final version; no upstream known",
|
||||
"Description": "The Big5 codecs (QBig5Codec, QBig5hkscsCodec)
|
||||
provide conversion to and from the Big5 encodings.",
|
||||
"License": "BSD 2-clause \"Simplified\" License",
|
||||
"LicenseId": "BSD-2-Clause",
|
||||
"LicenseFile": "QBIG5CODEC_LICENSE.txt",
|
||||
"Copyright": "Copyright (C) 2000 Ming-Che Chuang
|
||||
Copyright (C) 2001, 2002 James Su, Turbolinux Inc.
|
||||
Copyright (C) 2002 WU Yi, HancomLinux Inc.
|
||||
Copyright (C) 2001, 2002 Anthony Fok, ThizLinux Laboratory Ltd."
|
||||
},
|
||||
{
|
||||
"Id": "qeucjpcodec",
|
||||
"Name": "Text Codec: EUC-JP",
|
||||
"QDocModule": "qtcore",
|
||||
"QtUsage": "Used in Qt Core if ICU is not used. Configure with -icu to avoid.",
|
||||
"Path": "qeucjpcodec.cpp",
|
||||
|
||||
"Description": "Treat as final version; no upstream known",
|
||||
"Description": "The EUC-JP text codec provides conversion to and from EUC-JP,
|
||||
the main legacy encoding for Unix machines in Japan.",
|
||||
"License": "BSD 2-clause \"Simplified\" License",
|
||||
"LicenseId": "BSD-2-Clause",
|
||||
"LicenseFile": "QEUCJPCODEC_LICENSE.txt",
|
||||
"Copyright": "Copyright (C) 1999 Serika Kurusugawa."
|
||||
},
|
||||
{
|
||||
"Id": "qeuckrcodec",
|
||||
"Name": "Text Codec: EUC-KR",
|
||||
"QDocModule": "qtcore",
|
||||
"QtUsage": "Used in Qt Core if ICU is not used. Configure with -icu to avoid.",
|
||||
"Path": "qeuckrcodec.cpp",
|
||||
|
||||
"Description": "Treat as final version; no upstream known",
|
||||
"Description": "The EUC-KR text codec provides conversion to and from EUC-KR, KR,
|
||||
the main legacy encoding for Unix machines in Korea.",
|
||||
"License": "BSD 2-clause \"Simplified\" License",
|
||||
"LicenseId": "BSD-2-Clause",
|
||||
"LicenseFile": "QEUCKRCODEC_LICENSE.txt",
|
||||
"Copyright": "Copyright (C) 1999-2000 Mizi Research Inc."
|
||||
},
|
||||
{
|
||||
"Id": "qjiscodec",
|
||||
"Name": "Text Codec: ISO 2022-JP (JIS)",
|
||||
"QDocModule": "qtcore",
|
||||
"QtUsage": "Used in Qt Core if ICU is not used. Configure with -icu to avoid.",
|
||||
"Path": "qjiscodec.cpp",
|
||||
|
||||
"Description": "Treat as final version; no upstream known",
|
||||
"Description": "The ISO 2022-JP (JIS) text codec provides conversion to and from ISO 2022-JP.",
|
||||
"License": "BSD 2-clause \"Simplified\" License",
|
||||
"LicenseId": "BSD-2-Clause",
|
||||
"LicenseFile": "QJISCODEC_LICENSE.txt",
|
||||
"Copyright": "Copyright (C) 1999 Serika Kurusugawa."
|
||||
},
|
||||
{
|
||||
"Id": "qsjiscodec",
|
||||
"Name": "Text Codec: Shift-JIS",
|
||||
"QDocModule": "qtcore",
|
||||
"QtUsage": "Used in Qt Core if ICU is not used. Configure with -icu to avoid.",
|
||||
"Path": "qsjiscodec.cpp",
|
||||
|
||||
"Description": "Treat as final version; no upstream known",
|
||||
"Description": "The Shift-JIS text codec provides conversion to and from Shift-JIS.",
|
||||
"License": "BSD 2-clause \"Simplified\" License",
|
||||
"LicenseId": "BSD-2-Clause",
|
||||
"LicenseFile": "QSJISCODEC_LICENSE.txt",
|
||||
"Copyright": "Copyright (C) 1999 Serika Kurusugawa."
|
||||
},
|
||||
{
|
||||
"Id": "qtsciicodec",
|
||||
"Name": "Text Codec: TSCII",
|
||||
"QDocModule": "qtcore",
|
||||
"QtUsage": "Used in Qt Core.",
|
||||
"Path": "qtsciicodec.cpp",
|
||||
|
||||
"Description": "Treat as final version; no upstream known",
|
||||
"Description": "The TSCII text codec provides conversion to and from the Tamil TSCII
|
||||
encoding.",
|
||||
"License": "BSD 2-clause \"Simplified\" License",
|
||||
"LicenseId": "BSD-2-Clause",
|
||||
"LicenseFile": "QTSCIICODEC_LICENSE.txt",
|
||||
"Copyright": "Copyright (C) 2000 Hans Petter Bieker."
|
||||
},
|
||||
{
|
||||
"Id": "qbkcodec",
|
||||
"Name": "Text Codec: GBK",
|
||||
"QDocModule": "qtcore",
|
||||
"QtUsage": "Used in Qt Core if ICU is not used. Configure with -icu to avoid.",
|
||||
"Path": "qgb18030codec.cpp",
|
||||
|
||||
"Description": "Treat as final version; no upstream known",
|
||||
"Description": "The GBK codec provides conversion to and from the Chinese
|
||||
GB18030/GBK/GB2312 encoding.",
|
||||
"License": "BSD 2-clause \"Simplified\" License",
|
||||
"LicenseId": "BSD-2-Clause",
|
||||
"LicenseFile": "QBKCODEC_LICENSE.txt",
|
||||
"Copyright": "Copyright (C) 2000 TurboLinux, Inc. Written by Justin Yu and Sean Chen.
|
||||
Copyright (C) 2001, 2002 Turbolinux, Inc. Written by James Su.
|
||||
Copyright (C) 2001, 2002 ThizLinux Laboratory Ltd. Written by Anthony Fok."
|
||||
}
|
||||
]
|
File diff suppressed because it is too large
Load Diff
@ -1,163 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2018 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef QTEXTCODEC_H
|
||||
#define QTEXTCODEC_H
|
||||
|
||||
#include <QtCore/qstringconverter.h>
|
||||
#include <QtCore/qlist.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(textcodec);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QTextCodec;
|
||||
class QIODevice;
|
||||
|
||||
class QTextDecoder;
|
||||
class QTextEncoder;
|
||||
|
||||
class Q_CORE_EXPORT QTextCodec : public QStringConverterBase
|
||||
{
|
||||
Q_DISABLE_COPY(QTextCodec)
|
||||
public:
|
||||
using ConversionFlags = QStringConverterBase::Flags;
|
||||
using ConverterState = QStringConverterBase::State;
|
||||
|
||||
static constexpr Flag ConvertInvalidToNull = Flag::ConvertInvalidToNull;
|
||||
static constexpr Flag DefaultConversion = Flag::WriteBom;
|
||||
static constexpr Flag IgnoreHeader = Flag::ConvertInitialBom;
|
||||
|
||||
static QTextCodec* codecForName(const QByteArray &name);
|
||||
static QTextCodec* codecForName(const char *name) { return codecForName(QByteArray(name)); }
|
||||
static QTextCodec* codecForMib(int mib);
|
||||
|
||||
static QList<QByteArray> availableCodecs();
|
||||
static QList<int> availableMibs();
|
||||
|
||||
static QTextCodec* codecForLocale();
|
||||
static void setCodecForLocale(QTextCodec *c);
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 0)
|
||||
QT_DEPRECATED static QTextCodec *codecForTr() { return codecForMib(106); /* Utf8 */ }
|
||||
#endif
|
||||
|
||||
static QTextCodec *codecForHtml(const QByteArray &ba);
|
||||
static QTextCodec *codecForHtml(const QByteArray &ba, QTextCodec *defaultCodec);
|
||||
|
||||
static QTextCodec *codecForUtfText(const QByteArray &ba);
|
||||
static QTextCodec *codecForUtfText(const QByteArray &ba, QTextCodec *defaultCodec);
|
||||
|
||||
bool canEncode(QChar) const;
|
||||
#if QT_STRINGVIEW_LEVEL < 2
|
||||
bool canEncode(const QString&) const;
|
||||
#endif
|
||||
bool canEncode(QStringView) const;
|
||||
|
||||
QString toUnicode(const QByteArray&) const;
|
||||
QString toUnicode(const char* chars) const;
|
||||
#if QT_STRINGVIEW_LEVEL < 2
|
||||
QByteArray fromUnicode(const QString& uc) const;
|
||||
#endif
|
||||
QByteArray fromUnicode(QStringView uc) const;
|
||||
|
||||
QString toUnicode(const char *in, int length, ConverterState *state = nullptr) const
|
||||
{ return convertToUnicode(in, length, state); }
|
||||
QByteArray fromUnicode(const QChar *in, int length, ConverterState *state = nullptr) const
|
||||
{ return convertFromUnicode(in, length, state); }
|
||||
|
||||
QTextDecoder* makeDecoder(ConversionFlags flags = DefaultConversion) const;
|
||||
QTextEncoder* makeEncoder(ConversionFlags flags = DefaultConversion) const;
|
||||
|
||||
virtual QByteArray name() const = 0;
|
||||
virtual QList<QByteArray> aliases() const;
|
||||
virtual int mibEnum() const = 0;
|
||||
|
||||
protected:
|
||||
virtual QString convertToUnicode(const char *in, int length, ConverterState *state) const = 0;
|
||||
virtual QByteArray convertFromUnicode(const QChar *in, int length, ConverterState *state) const = 0;
|
||||
|
||||
QTextCodec();
|
||||
virtual ~QTextCodec();
|
||||
|
||||
private:
|
||||
friend struct QTextCodecData;
|
||||
};
|
||||
|
||||
class Q_CORE_EXPORT QTextEncoder {
|
||||
Q_DISABLE_COPY(QTextEncoder)
|
||||
public:
|
||||
explicit QTextEncoder(const QTextCodec *codec) : c(codec), state() {}
|
||||
explicit QTextEncoder(const QTextCodec *codec, QTextCodec::ConversionFlags flags);
|
||||
~QTextEncoder();
|
||||
#if QT_STRINGVIEW_LEVEL < 2
|
||||
QByteArray fromUnicode(const QString& str);
|
||||
#endif
|
||||
QByteArray fromUnicode(QStringView str);
|
||||
QByteArray fromUnicode(const QChar *uc, int len);
|
||||
bool hasFailure() const;
|
||||
private:
|
||||
const QTextCodec *c;
|
||||
QTextCodec::ConverterState state;
|
||||
};
|
||||
|
||||
class Q_CORE_EXPORT QTextDecoder {
|
||||
Q_DISABLE_COPY(QTextDecoder)
|
||||
public:
|
||||
explicit QTextDecoder(const QTextCodec *codec) : c(codec), state() {}
|
||||
explicit QTextDecoder(const QTextCodec *codec, QTextCodec::ConversionFlags flags);
|
||||
~QTextDecoder();
|
||||
QString toUnicode(const char* chars, int len);
|
||||
QString toUnicode(const QByteArray &ba);
|
||||
void toUnicode(QString *target, const char *chars, int len);
|
||||
bool hasFailure() const;
|
||||
bool needsMoreData() const;
|
||||
private:
|
||||
const QTextCodec *c;
|
||||
QTextCodec::ConverterState state;
|
||||
};
|
||||
|
||||
namespace Qt
|
||||
{
|
||||
Q_CORE_EXPORT QTextCodec *codecForHtml(const QByteArray &ba);
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QTEXTCODEC_H
|
@ -1,118 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef QTEXTCODEC_P_H
|
||||
#define QTEXTCODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists for the convenience
|
||||
// of the QTextCodec class. This header file may change from
|
||||
// version to version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
#include <string.h>
|
||||
#include <qhash.h>
|
||||
#if QT_CONFIG(textcodec)
|
||||
#include "qtextcodec.h"
|
||||
#endif
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
#if QT_CONFIG(textcodec)
|
||||
|
||||
#if defined(Q_OS_MAC) || defined(Q_OS_ANDROID) || defined(Q_OS_QNX) || defined(Q_OS_WASM)
|
||||
#define QT_LOCALE_IS_UTF8
|
||||
#endif
|
||||
|
||||
typedef void (*QTextCodecStateFreeFunction)(QTextCodec::ConverterState*);
|
||||
|
||||
typedef QHash<QByteArray, QTextCodec *> QTextCodecCache;
|
||||
|
||||
struct QTextCodecData
|
||||
{
|
||||
QTextCodecData();
|
||||
~QTextCodecData();
|
||||
|
||||
QList<QTextCodec*> allCodecs;
|
||||
QAtomicPointer<QTextCodec> codecForLocale;
|
||||
QTextCodecCache codecCache;
|
||||
|
||||
static QTextCodecData *instance();
|
||||
};
|
||||
|
||||
bool qTextCodecNameMatch(const char *a, const char *b);
|
||||
|
||||
#else // without textcodec:
|
||||
|
||||
class QTextCodec
|
||||
{
|
||||
public:
|
||||
enum ConversionFlag {
|
||||
DefaultConversion,
|
||||
ConvertInvalidToNull = 0x80000000,
|
||||
IgnoreHeader = 0x1,
|
||||
FreeFunction = 0x2
|
||||
};
|
||||
Q_DECLARE_FLAGS(ConversionFlags, ConversionFlag)
|
||||
|
||||
struct ConverterState {
|
||||
ConverterState(ConversionFlags f = DefaultConversion)
|
||||
: flags(f), remainingChars(0), invalidChars(0), d(nullptr) { state_data[0] = state_data[1] = state_data[2] = 0; }
|
||||
~ConverterState() { }
|
||||
ConversionFlags flags;
|
||||
int remainingChars;
|
||||
int invalidChars;
|
||||
uint state_data[3];
|
||||
void *d;
|
||||
private:
|
||||
Q_DISABLE_COPY(ConverterState)
|
||||
};
|
||||
};
|
||||
|
||||
#endif // textcodec
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif
|
@ -1,493 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// Most of the code here was originally written by Hans Petter Bieker,
|
||||
// and is included in Qt with the author's permission, and the grateful
|
||||
// thanks of the Qt team.
|
||||
|
||||
#include "qtsciicodec_p.h"
|
||||
#include "qlist.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
static unsigned char qt_UnicodeToTSCII(ushort u1, ushort u2, ushort u3);
|
||||
static unsigned int qt_TSCIIToUnicode(unsigned int code, uint *s);
|
||||
|
||||
#define IsTSCIIChar(c) (((c) >= 0x80) && ((c) <= 0xfd))
|
||||
|
||||
/*! \class QTsciiCodec
|
||||
\inmodule QtCore
|
||||
\reentrant
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*!
|
||||
Destroys the text codec object.
|
||||
*/
|
||||
QTsciiCodec::~QTsciiCodec()
|
||||
{
|
||||
}
|
||||
|
||||
/*!
|
||||
Converts the first \a len characters in \a uc from Unicode to this
|
||||
encoding, and returns the result in a byte array. The \a state contains
|
||||
some conversion flags, and is used by the codec to maintain state
|
||||
information.
|
||||
*/
|
||||
QByteArray QTsciiCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
|
||||
{
|
||||
char replacement = '?';
|
||||
if (state) {
|
||||
if (state->flags & ConvertInvalidToNull)
|
||||
replacement = 0;
|
||||
}
|
||||
int invalid = 0;
|
||||
|
||||
QByteArray rstr(len, Qt::Uninitialized);
|
||||
uchar* cursor = (uchar*)rstr.data();
|
||||
for (int i = 0; i < len; i++) {
|
||||
QChar ch = uc[i];
|
||||
uchar j;
|
||||
if (ch.row() == 0x00 && ch.cell() < 0x80) {
|
||||
// ASCII
|
||||
j = ch.cell();
|
||||
} else if ((j = qt_UnicodeToTSCII(uc[i].unicode(),
|
||||
uc[i + 1].unicode(),
|
||||
uc[i + 2].unicode()))) {
|
||||
// We have to check the combined chars first!
|
||||
i += 2;
|
||||
} else if ((j = qt_UnicodeToTSCII(uc[i].unicode(),
|
||||
uc[i + 1].unicode(), 0))) {
|
||||
i++;
|
||||
} else if ((j = qt_UnicodeToTSCII(uc[i].unicode(), 0, 0))) {
|
||||
} else {
|
||||
// Error
|
||||
j = replacement;
|
||||
++invalid;
|
||||
}
|
||||
*cursor++ = j;
|
||||
}
|
||||
rstr.resize(cursor - (const uchar*)rstr.constData());
|
||||
|
||||
if (state) {
|
||||
state->invalidChars += invalid;
|
||||
}
|
||||
return rstr;
|
||||
}
|
||||
|
||||
/*!
|
||||
Converts the first \a len characters in \a chars from this encoding
|
||||
to Unicode, and returns the result in a QString. The \a state contains
|
||||
some conversion flags, and is used by the codec to maintain state
|
||||
information.
|
||||
*/
|
||||
QString QTsciiCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
|
||||
{
|
||||
QChar replacement = QChar::ReplacementCharacter;
|
||||
if (state) {
|
||||
if (state->flags & ConvertInvalidToNull)
|
||||
replacement = QChar::Null;
|
||||
}
|
||||
int invalid = 0;
|
||||
|
||||
QString result;
|
||||
for (int i = 0; i < len; i++) {
|
||||
uchar ch = chars[i];
|
||||
if (ch < 0x80) {
|
||||
// ASCII
|
||||
result += QLatin1Char(ch);
|
||||
} else if (IsTSCIIChar(ch)) {
|
||||
// TSCII
|
||||
uint s[3];
|
||||
uint u = qt_TSCIIToUnicode(ch, s);
|
||||
uint *p = s;
|
||||
while (u--) {
|
||||
uint c = *p++;
|
||||
if (c)
|
||||
result += QChar(c);
|
||||
else {
|
||||
result += replacement;
|
||||
++invalid;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Invalid
|
||||
result += replacement;
|
||||
++invalid;
|
||||
}
|
||||
}
|
||||
|
||||
if (state) {
|
||||
state->invalidChars += invalid;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the official name for the encoding that is handled by the codec.
|
||||
|
||||
\sa QTextCodec::name()
|
||||
*/
|
||||
QByteArray QTsciiCodec::name() const
|
||||
{
|
||||
return "TSCII";
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the MIB enum for the encoding.
|
||||
|
||||
\sa QTextCodec::mibEnum()
|
||||
*/
|
||||
int QTsciiCodec::mibEnum() const
|
||||
{
|
||||
return 2107;
|
||||
}
|
||||
|
||||
static const int UnToTsLast = 124; // 125 items -- so the last will be 124
|
||||
static const ushort UnToTs [][4] = {
|
||||
// *Sorted* list of TSCII maping for unicode chars
|
||||
//FIRST SECOND THIRD TSCII
|
||||
{0x00A0, 0x0000, 0x0000, 0xA0},
|
||||
{0x00A9, 0x0000, 0x0000, 0xA9},
|
||||
{0x0B83, 0x0000, 0x0000, 0xB7},
|
||||
{0x0B85, 0x0000, 0x0000, 0xAB},
|
||||
{0x0B86, 0x0000, 0x0000, 0xAC},
|
||||
{0x0B87, 0x0000, 0x0000, 0xAD},
|
||||
{0x0B88, 0x0000, 0x0000, 0xAE},
|
||||
{0x0B89, 0x0000, 0x0000, 0xAF},
|
||||
{0x0B8A, 0x0000, 0x0000, 0xB0},
|
||||
{0x0B8E, 0x0000, 0x0000, 0xB1},
|
||||
{0x0B8F, 0x0000, 0x0000, 0xB2},
|
||||
{0x0B90, 0x0000, 0x0000, 0xB3},
|
||||
{0x0B92, 0x0000, 0x0000, 0xB4},
|
||||
{0x0B93, 0x0000, 0x0000, 0xB5},
|
||||
{0x0B94, 0x0000, 0x0000, 0xB6},
|
||||
{0x0B95, 0x0000, 0x0000, 0xB8},
|
||||
{0x0B95, 0x0B82, 0x0000, 0xEC},
|
||||
{0x0B95, 0x0BC1, 0x0000, 0xCC},
|
||||
{0x0B95, 0x0BC2, 0x0000, 0xDC},
|
||||
{0x0B99, 0x0000, 0x0000, 0xB9},
|
||||
{0x0B99, 0x0B82, 0x0000, 0xED},
|
||||
{0x0B99, 0x0BC1, 0x0000, 0x99},
|
||||
{0x0B99, 0x0BC2, 0x0000, 0x9B},
|
||||
{0x0B9A, 0x0000, 0x0000, 0xBA},
|
||||
{0x0B9A, 0x0B82, 0x0000, 0xEE},
|
||||
{0x0B9A, 0x0BC1, 0x0000, 0xCD},
|
||||
{0x0B9A, 0x0BC2, 0x0000, 0xDD},
|
||||
{0x0B9C, 0x0000, 0x0000, 0x83},
|
||||
{0x0B9C, 0x0B82, 0x0000, 0x88},
|
||||
{0x0B9E, 0x0000, 0x0000, 0xBB},
|
||||
{0x0B9E, 0x0B82, 0x0000, 0xEF},
|
||||
{0x0B9E, 0x0BC1, 0x0000, 0x9A},
|
||||
{0x0B9E, 0x0BC2, 0x0000, 0x9C},
|
||||
{0x0B9F, 0x0000, 0x0000, 0xBC},
|
||||
{0x0B9F, 0x0B82, 0x0000, 0xF0},
|
||||
{0x0B9F, 0x0BBF, 0x0000, 0xCA},
|
||||
{0x0B9F, 0x0BC0, 0x0000, 0xCB},
|
||||
{0x0B9F, 0x0BC1, 0x0000, 0xCE},
|
||||
{0x0B9F, 0x0BC2, 0x0000, 0xDE},
|
||||
{0x0BA1, 0x0B82, 0x0000, 0xF2},
|
||||
{0x0BA3, 0x0000, 0x0000, 0xBD},
|
||||
{0x0BA3, 0x0B82, 0x0000, 0xF1},
|
||||
{0x0BA3, 0x0BC1, 0x0000, 0xCF},
|
||||
{0x0BA3, 0x0BC2, 0x0000, 0xDF},
|
||||
{0x0BA4, 0x0000, 0x0000, 0xBE},
|
||||
{0x0BA4, 0x0BC1, 0x0000, 0xD0},
|
||||
{0x0BA4, 0x0BC2, 0x0000, 0xE0},
|
||||
{0x0BA8, 0x0000, 0x0000, 0xBF},
|
||||
{0x0BA8, 0x0B82, 0x0000, 0xF3},
|
||||
{0x0BA8, 0x0BC1, 0x0000, 0xD1},
|
||||
{0x0BA8, 0x0BC2, 0x0000, 0xE1},
|
||||
{0x0BA9, 0x0000, 0x0000, 0xC9},
|
||||
{0x0BA9, 0x0B82, 0x0000, 0xFD},
|
||||
{0x0BA9, 0x0BC1, 0x0000, 0xDB},
|
||||
{0x0BA9, 0x0BC2, 0x0000, 0xEB},
|
||||
{0x0BAA, 0x0000, 0x0000, 0xC0},
|
||||
{0x0BAA, 0x0B82, 0x0000, 0xF4},
|
||||
{0x0BAA, 0x0BC1, 0x0000, 0xD2},
|
||||
{0x0BAA, 0x0BC2, 0x0000, 0xE2},
|
||||
{0x0BAE, 0x0000, 0x0000, 0xC1},
|
||||
{0x0BAE, 0x0B82, 0x0000, 0xF5},
|
||||
{0x0BAE, 0x0BC1, 0x0000, 0xD3},
|
||||
{0x0BAE, 0x0BC2, 0x0000, 0xE3},
|
||||
{0x0BAF, 0x0000, 0x0000, 0xC2},
|
||||
{0x0BAF, 0x0B82, 0x0000, 0xF6},
|
||||
{0x0BAF, 0x0BC1, 0x0000, 0xD4},
|
||||
{0x0BAF, 0x0BC2, 0x0000, 0xE4},
|
||||
{0x0BB0, 0x0000, 0x0000, 0xC3},
|
||||
{0x0BB0, 0x0B82, 0x0000, 0xF7},
|
||||
{0x0BB0, 0x0BC1, 0x0000, 0xD5},
|
||||
{0x0BB0, 0x0BC2, 0x0000, 0xE5},
|
||||
{0x0BB1, 0x0000, 0x0000, 0xC8},
|
||||
{0x0BB1, 0x0B82, 0x0000, 0xFC},
|
||||
{0x0BB1, 0x0BC1, 0x0000, 0xDA},
|
||||
{0x0BB1, 0x0BC2, 0x0000, 0xEA},
|
||||
{0x0BB2, 0x0000, 0x0000, 0xC4},
|
||||
{0x0BB2, 0x0B82, 0x0000, 0xF8},
|
||||
{0x0BB2, 0x0BC1, 0x0000, 0xD6},
|
||||
{0x0BB2, 0x0BC2, 0x0000, 0xE6},
|
||||
{0x0BB3, 0x0000, 0x0000, 0xC7},
|
||||
{0x0BB3, 0x0B82, 0x0000, 0xFB},
|
||||
{0x0BB3, 0x0BC1, 0x0000, 0xD9},
|
||||
{0x0BB3, 0x0BC2, 0x0000, 0xE9},
|
||||
{0x0BB4, 0x0000, 0x0000, 0xC6},
|
||||
{0x0BB4, 0x0B82, 0x0000, 0xFA},
|
||||
{0x0BB4, 0x0BC1, 0x0000, 0xD8},
|
||||
{0x0BB4, 0x0BC2, 0x0000, 0xE8},
|
||||
{0x0BB5, 0x0000, 0x0000, 0xC5},
|
||||
{0x0BB5, 0x0B82, 0x0000, 0xF9},
|
||||
{0x0BB5, 0x0BC1, 0x0000, 0xD7},
|
||||
{0x0BB5, 0x0BC2, 0x0000, 0xE7},
|
||||
{0x0BB7, 0x0000, 0x0000, 0x84},
|
||||
{0x0BB7, 0x0B82, 0x0000, 0x89},
|
||||
{0x0BB8, 0x0000, 0x0000, 0x85},
|
||||
{0x0BB8, 0x0B82, 0x0000, 0x8A},
|
||||
{0x0BB9, 0x0000, 0x0000, 0x86},
|
||||
{0x0BB9, 0x0B82, 0x0000, 0x8B},
|
||||
{0x0BBE, 0x0000, 0x0000, 0xA1},
|
||||
{0x0BBF, 0x0000, 0x0000, 0xA2},
|
||||
{0x0BC0, 0x0000, 0x0000, 0xA3},
|
||||
{0x0BC1, 0x0000, 0x0000, 0xA4},
|
||||
{0x0BC2, 0x0000, 0x0000, 0xA5},
|
||||
{0x0BC6, 0x0000, 0x0000, 0xA6},
|
||||
{0x0BC7, 0x0000, 0x0000, 0xA7},
|
||||
{0x0BC8, 0x0000, 0x0000, 0xA8},
|
||||
{0x0BCC, 0x0000, 0x0000, 0xAA},
|
||||
{0x0BE6, 0x0000, 0x0000, 0x80},
|
||||
{0x0BE7, 0x0000, 0x0000, 0x81},
|
||||
{0x0BE7, 0x0BB7, 0x0000, 0x87},
|
||||
{0x0BE7, 0x0BB7, 0x0B82, 0x8C},
|
||||
{0x0BE8, 0x0000, 0x0000, 0x8D},
|
||||
{0x0BE9, 0x0000, 0x0000, 0x8E},
|
||||
{0x0BEA, 0x0000, 0x0000, 0x8F},
|
||||
{0x0BEB, 0x0000, 0x0000, 0x90},
|
||||
{0x0BEC, 0x0000, 0x0000, 0x95},
|
||||
{0x0BED, 0x0000, 0x0000, 0x96},
|
||||
{0x0BEE, 0x0000, 0x0000, 0x97},
|
||||
{0x0BEF, 0x0000, 0x0000, 0x98},
|
||||
{0x0BF0, 0x0000, 0x0000, 0x9D},
|
||||
{0x0BF1, 0x0000, 0x0000, 0x9E},
|
||||
{0x0BF2, 0x0000, 0x0000, 0x9F},
|
||||
{0x2018, 0x0000, 0x0000, 0x91},
|
||||
{0x2019, 0x0000, 0x0000, 0x92},
|
||||
{0x201C, 0x0000, 0x0000, 0x93},
|
||||
{0x201C, 0x0000, 0x0000, 0x94}
|
||||
};
|
||||
|
||||
static const ushort TsToUn [][3] = {
|
||||
// Starting at 0x80
|
||||
{0x0BE6, 0x0000, 0x0000},
|
||||
{0x0BE7, 0x0000, 0x0000},
|
||||
{0x0000, 0x0000, 0x0000}, // unknown
|
||||
{0x0B9C, 0x0000, 0x0000},
|
||||
{0x0BB7, 0x0000, 0x0000},
|
||||
{0x0BB8, 0x0000, 0x0000},
|
||||
{0x0BB9, 0x0000, 0x0000},
|
||||
{0x0BE7, 0x0BB7, 0x0000},
|
||||
{0x0B9C, 0x0B82, 0x0000},
|
||||
{0x0BB7, 0x0B82, 0x0000},
|
||||
{0x0BB8, 0x0B82, 0x0000},
|
||||
{0x0BB9, 0x0B82, 0x0000},
|
||||
{0x0BE7, 0x0BB7, 0x0B82},
|
||||
{0x0BE8, 0x0000, 0x0000},
|
||||
{0x0BE9, 0x0000, 0x0000},
|
||||
{0x0BEA, 0x0000, 0x0000},
|
||||
{0x0BEB, 0x0000, 0x0000},
|
||||
{0x2018, 0x0000, 0x0000},
|
||||
{0x2019, 0x0000, 0x0000},
|
||||
{0x201C, 0x0000, 0x0000},
|
||||
{0x201C, 0x0000, 0x0000}, // two of the same??
|
||||
{0x0BEC, 0x0000, 0x0000},
|
||||
{0x0BED, 0x0000, 0x0000},
|
||||
{0x0BEE, 0x0000, 0x0000},
|
||||
{0x0BEF, 0x0000, 0x0000},
|
||||
{0x0B99, 0x0BC1, 0x0000},
|
||||
{0x0B9E, 0x0BC1, 0x0000},
|
||||
{0x0B99, 0x0BC2, 0x0000},
|
||||
{0x0B9E, 0x0BC2, 0x0000},
|
||||
{0x0BF0, 0x0000, 0x0000},
|
||||
{0x0BF1, 0x0000, 0x0000},
|
||||
{0x0BF2, 0x0000, 0x0000},
|
||||
{0x00A0, 0x0000, 0x0000},
|
||||
{0x0BBE, 0x0000, 0x0000},
|
||||
{0x0BBF, 0x0000, 0x0000},
|
||||
{0x0BC0, 0x0000, 0x0000},
|
||||
{0x0BC1, 0x0000, 0x0000},
|
||||
{0x0BC2, 0x0000, 0x0000},
|
||||
{0x0BC6, 0x0000, 0x0000},
|
||||
{0x0BC7, 0x0000, 0x0000},
|
||||
{0x0BC8, 0x0000, 0x0000},
|
||||
{0x00A9, 0x0000, 0x0000},
|
||||
{0x0BCC, 0x0000, 0x0000},
|
||||
{0x0B85, 0x0000, 0x0000},
|
||||
{0x0B86, 0x0000, 0x0000},
|
||||
{0x0B87, 0x0000, 0x0000},
|
||||
{0x0B88, 0x0000, 0x0000},
|
||||
{0x0B89, 0x0000, 0x0000},
|
||||
{0x0B8A, 0x0000, 0x0000},
|
||||
{0x0B8E, 0x0000, 0x0000},
|
||||
{0x0B8F, 0x0000, 0x0000},
|
||||
{0x0B90, 0x0000, 0x0000},
|
||||
{0x0B92, 0x0000, 0x0000},
|
||||
{0x0B93, 0x0000, 0x0000},
|
||||
{0x0B94, 0x0000, 0x0000},
|
||||
{0x0B83, 0x0000, 0x0000},
|
||||
{0x0B95, 0x0000, 0x0000},
|
||||
{0x0B99, 0x0000, 0x0000},
|
||||
{0x0B9A, 0x0000, 0x0000},
|
||||
{0x0B9E, 0x0000, 0x0000},
|
||||
{0x0B9F, 0x0000, 0x0000},
|
||||
{0x0BA3, 0x0000, 0x0000},
|
||||
{0x0BA4, 0x0000, 0x0000},
|
||||
{0x0BA8, 0x0000, 0x0000},
|
||||
{0x0BAA, 0x0000, 0x0000},
|
||||
{0x0BAE, 0x0000, 0x0000},
|
||||
{0x0BAF, 0x0000, 0x0000},
|
||||
{0x0BB0, 0x0000, 0x0000},
|
||||
{0x0BB2, 0x0000, 0x0000},
|
||||
{0x0BB5, 0x0000, 0x0000},
|
||||
{0x0BB4, 0x0000, 0x0000},
|
||||
{0x0BB3, 0x0000, 0x0000},
|
||||
{0x0BB1, 0x0000, 0x0000},
|
||||
{0x0BA9, 0x0000, 0x0000},
|
||||
{0x0B9F, 0x0BBF, 0x0000},
|
||||
{0x0B9F, 0x0BC0, 0x0000},
|
||||
{0x0B95, 0x0BC1, 0x0000},
|
||||
{0x0B9A, 0x0BC1, 0x0000},
|
||||
{0x0B9F, 0x0BC1, 0x0000},
|
||||
{0x0BA3, 0x0BC1, 0x0000},
|
||||
{0x0BA4, 0x0BC1, 0x0000},
|
||||
{0x0BA8, 0x0BC1, 0x0000},
|
||||
{0x0BAA, 0x0BC1, 0x0000},
|
||||
{0x0BAE, 0x0BC1, 0x0000},
|
||||
{0x0BAF, 0x0BC1, 0x0000},
|
||||
{0x0BB0, 0x0BC1, 0x0000},
|
||||
{0x0BB2, 0x0BC1, 0x0000},
|
||||
{0x0BB5, 0x0BC1, 0x0000},
|
||||
{0x0BB4, 0x0BC1, 0x0000},
|
||||
{0x0BB3, 0x0BC1, 0x0000},
|
||||
{0x0BB1, 0x0BC1, 0x0000},
|
||||
{0x0BA9, 0x0BC1, 0x0000},
|
||||
{0x0B95, 0x0BC2, 0x0000},
|
||||
{0x0B9A, 0x0BC2, 0x0000},
|
||||
{0x0B9F, 0x0BC2, 0x0000},
|
||||
{0x0BA3, 0x0BC2, 0x0000},
|
||||
{0x0BA4, 0x0BC2, 0x0000},
|
||||
{0x0BA8, 0x0BC2, 0x0000},
|
||||
{0x0BAA, 0x0BC2, 0x0000},
|
||||
{0x0BAE, 0x0BC2, 0x0000},
|
||||
{0x0BAF, 0x0BC2, 0x0000},
|
||||
{0x0BB0, 0x0BC2, 0x0000},
|
||||
{0x0BB2, 0x0BC2, 0x0000},
|
||||
{0x0BB5, 0x0BC2, 0x0000},
|
||||
{0x0BB4, 0x0BC2, 0x0000},
|
||||
{0x0BB3, 0x0BC2, 0x0000},
|
||||
{0x0BB1, 0x0BC2, 0x0000},
|
||||
{0x0BA9, 0x0BC2, 0x0000},
|
||||
{0x0B95, 0x0B82, 0x0000},
|
||||
{0x0B99, 0x0B82, 0x0000},
|
||||
{0x0B9A, 0x0B82, 0x0000},
|
||||
{0x0B9E, 0x0B82, 0x0000},
|
||||
{0x0B9F, 0x0B82, 0x0000},
|
||||
{0x0BA3, 0x0B82, 0x0000},
|
||||
{0x0BA1, 0x0B82, 0x0000},
|
||||
{0x0BA8, 0x0B82, 0x0000},
|
||||
{0x0BAA, 0x0B82, 0x0000},
|
||||
{0x0BAE, 0x0B82, 0x0000},
|
||||
{0x0BAF, 0x0B82, 0x0000},
|
||||
{0x0BB0, 0x0B82, 0x0000},
|
||||
{0x0BB2, 0x0B82, 0x0000},
|
||||
{0x0BB5, 0x0B82, 0x0000},
|
||||
{0x0BB4, 0x0B82, 0x0000},
|
||||
{0x0BB3, 0x0B82, 0x0000},
|
||||
{0x0BB1, 0x0B82, 0x0000},
|
||||
{0x0BA9, 0x0B82, 0x0000}
|
||||
};
|
||||
|
||||
static int cmp(const ushort *s1, const ushort *s2, size_t len)
|
||||
{
|
||||
int diff = 0;
|
||||
|
||||
while (len-- && (diff = *s1++ - *s2++) == 0)
|
||||
;
|
||||
|
||||
return diff;
|
||||
}
|
||||
|
||||
static unsigned char qt_UnicodeToTSCII(ushort u1, ushort u2, ushort u3)
|
||||
{
|
||||
ushort s[3];
|
||||
s[0] = u1;
|
||||
s[1] = u2;
|
||||
s[2] = u3;
|
||||
|
||||
int a = 0; // start pos
|
||||
int b = UnToTsLast; // end pos
|
||||
|
||||
// do a binary search for the composed unicode in the list
|
||||
while (a <= b) {
|
||||
int w = (a + b) / 2;
|
||||
int j = cmp(UnToTs[w], s, 3);
|
||||
|
||||
if (j == 0)
|
||||
// found it
|
||||
return UnToTs[w][3];
|
||||
|
||||
if (j < 0)
|
||||
a = w + 1;
|
||||
else
|
||||
b = w - 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned int qt_TSCIIToUnicode(uint code, uint *s)
|
||||
{
|
||||
int len = 0;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
uint u = TsToUn[code & 0x7f][i];
|
||||
s[i] = u;
|
||||
if (s[i]) len = i + 1;
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
@ -1,103 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// Most of the code here was originally written by Hans Petter Bieker,
|
||||
// and is included in Qt with the author's permission, and the grateful
|
||||
// thanks of the Qt team.
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 Hans Petter Bieker. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef QTSCIICODEC_P_H
|
||||
#define QTSCIICODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists for the convenience
|
||||
// of other Qt classes. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
#include "QtCore/qtextcodec.h"
|
||||
|
||||
QT_REQUIRE_CONFIG(codecs);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QTsciiCodec : public QTextCodec {
|
||||
public:
|
||||
~QTsciiCodec();
|
||||
|
||||
QByteArray name() const override;
|
||||
int mibEnum() const override;
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QTSCIICODEC_P_H
|
@ -1,228 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Copyright (C) 2018 Intel Corporation.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qutfcodec_p.h"
|
||||
#include "qlist.h"
|
||||
#include "qendian.h"
|
||||
#include "qchar.h"
|
||||
|
||||
#include "private/qsimd_p.h"
|
||||
#include "private/qstringiterator_p.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
#if QT_CONFIG(textcodec)
|
||||
|
||||
QUtf8Codec::~QUtf8Codec()
|
||||
{
|
||||
}
|
||||
|
||||
QByteArray QUtf8Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
|
||||
{
|
||||
ConverterState s(QStringConverter::Flag::Stateless);
|
||||
if (!state)
|
||||
state = &s;
|
||||
return QUtf8::convertFromUnicode(uc, len, state);
|
||||
}
|
||||
|
||||
void QUtf8Codec::convertToUnicode(QString *target, const char *chars, int len, ConverterState *state) const
|
||||
{
|
||||
ConverterState s(QStringConverter::Flag::Stateless);
|
||||
if (!state)
|
||||
state = &s;
|
||||
*target += QUtf8::convertToUnicode(chars, len, state);
|
||||
}
|
||||
|
||||
QString QUtf8Codec::convertToUnicode(const char *chars, int len, ConverterState *state) const
|
||||
{
|
||||
ConverterState s(QStringConverter::Flag::Stateless);
|
||||
if (!state)
|
||||
state = &s;
|
||||
return QUtf8::convertToUnicode(chars, len, state);
|
||||
}
|
||||
|
||||
QByteArray QUtf8Codec::name() const
|
||||
{
|
||||
return "UTF-8";
|
||||
}
|
||||
|
||||
int QUtf8Codec::mibEnum() const
|
||||
{
|
||||
return 106;
|
||||
}
|
||||
|
||||
QUtf16Codec::~QUtf16Codec()
|
||||
{
|
||||
}
|
||||
|
||||
QByteArray QUtf16Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
|
||||
{
|
||||
ConverterState s(QStringConverter::Flag::Stateless);
|
||||
if (!state)
|
||||
state = &s;
|
||||
return QUtf16::convertFromUnicode(uc, len, state, e);
|
||||
}
|
||||
|
||||
QString QUtf16Codec::convertToUnicode(const char *chars, int len, ConverterState *state) const
|
||||
{
|
||||
ConverterState s(QStringConverter::Flag::Stateless);
|
||||
if (!state)
|
||||
state = &s;
|
||||
return QUtf16::convertToUnicode(chars, len, state, e);
|
||||
}
|
||||
|
||||
int QUtf16Codec::mibEnum() const
|
||||
{
|
||||
return 1015;
|
||||
}
|
||||
|
||||
QByteArray QUtf16Codec::name() const
|
||||
{
|
||||
return "UTF-16";
|
||||
}
|
||||
|
||||
QList<QByteArray> QUtf16Codec::aliases() const
|
||||
{
|
||||
return QList<QByteArray>();
|
||||
}
|
||||
|
||||
int QUtf16BECodec::mibEnum() const
|
||||
{
|
||||
return 1013;
|
||||
}
|
||||
|
||||
QByteArray QUtf16BECodec::name() const
|
||||
{
|
||||
return "UTF-16BE";
|
||||
}
|
||||
|
||||
QList<QByteArray> QUtf16BECodec::aliases() const
|
||||
{
|
||||
QList<QByteArray> list;
|
||||
return list;
|
||||
}
|
||||
|
||||
int QUtf16LECodec::mibEnum() const
|
||||
{
|
||||
return 1014;
|
||||
}
|
||||
|
||||
QByteArray QUtf16LECodec::name() const
|
||||
{
|
||||
return "UTF-16LE";
|
||||
}
|
||||
|
||||
QList<QByteArray> QUtf16LECodec::aliases() const
|
||||
{
|
||||
QList<QByteArray> list;
|
||||
return list;
|
||||
}
|
||||
|
||||
QUtf32Codec::~QUtf32Codec()
|
||||
{
|
||||
}
|
||||
|
||||
QByteArray QUtf32Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
|
||||
{
|
||||
ConverterState s(QStringConverter::Flag::Stateless);
|
||||
if (!state)
|
||||
state = &s;
|
||||
return QUtf32::convertFromUnicode(uc, len, state, e);
|
||||
}
|
||||
|
||||
QString QUtf32Codec::convertToUnicode(const char *chars, int len, ConverterState *state) const
|
||||
{
|
||||
ConverterState s(QStringConverter::Flag::Stateless);
|
||||
if (!state)
|
||||
state = &s;
|
||||
return QUtf32::convertToUnicode(chars, len, state, e);
|
||||
}
|
||||
|
||||
int QUtf32Codec::mibEnum() const
|
||||
{
|
||||
return 1017;
|
||||
}
|
||||
|
||||
QByteArray QUtf32Codec::name() const
|
||||
{
|
||||
return "UTF-32";
|
||||
}
|
||||
|
||||
QList<QByteArray> QUtf32Codec::aliases() const
|
||||
{
|
||||
QList<QByteArray> list;
|
||||
return list;
|
||||
}
|
||||
|
||||
int QUtf32BECodec::mibEnum() const
|
||||
{
|
||||
return 1018;
|
||||
}
|
||||
|
||||
QByteArray QUtf32BECodec::name() const
|
||||
{
|
||||
return "UTF-32BE";
|
||||
}
|
||||
|
||||
QList<QByteArray> QUtf32BECodec::aliases() const
|
||||
{
|
||||
QList<QByteArray> list;
|
||||
return list;
|
||||
}
|
||||
|
||||
int QUtf32LECodec::mibEnum() const
|
||||
{
|
||||
return 1019;
|
||||
}
|
||||
|
||||
QByteArray QUtf32LECodec::name() const
|
||||
{
|
||||
return "UTF-32LE";
|
||||
}
|
||||
|
||||
QList<QByteArray> QUtf32LECodec::aliases() const
|
||||
{
|
||||
QList<QByteArray> list;
|
||||
return list;
|
||||
}
|
||||
|
||||
#endif // textcodec
|
||||
|
||||
QT_END_NAMESPACE
|
@ -1,152 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2018 The Qt Company Ltd.
|
||||
** Copyright (C) 2018 Intel Corporation.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef QUTFCODEC_P_H
|
||||
#define QUTFCODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. It exists purely as an
|
||||
// implementation detail. This header file may change from version to
|
||||
// version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/qstring.h>
|
||||
#include <QtCore/qlist.h>
|
||||
#include <QtCore/qendian.h>
|
||||
|
||||
#if QT_CONFIG(textcodec)
|
||||
#include "QtCore/qtextcodec.h"
|
||||
#endif
|
||||
|
||||
#include "private/qstringconverter_p.h"
|
||||
#include "private/qtextcodec_p.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
#if QT_CONFIG(textcodec)
|
||||
|
||||
class QUtf8Codec : public QTextCodec {
|
||||
public:
|
||||
~QUtf8Codec();
|
||||
|
||||
QByteArray name() const override;
|
||||
int mibEnum() const override;
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
void convertToUnicode(QString *target, const char *, int, ConverterState *) const;
|
||||
};
|
||||
|
||||
class QUtf16Codec : public QTextCodec {
|
||||
protected:
|
||||
public:
|
||||
QUtf16Codec() { e = DetectEndianness; }
|
||||
~QUtf16Codec();
|
||||
|
||||
QByteArray name() const override;
|
||||
QList<QByteArray> aliases() const override;
|
||||
int mibEnum() const override;
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
|
||||
protected:
|
||||
DataEndianness e;
|
||||
};
|
||||
|
||||
class QUtf16BECodec : public QUtf16Codec {
|
||||
public:
|
||||
QUtf16BECodec() : QUtf16Codec() { e = BigEndianness; }
|
||||
QByteArray name() const override;
|
||||
QList<QByteArray> aliases() const override;
|
||||
int mibEnum() const override;
|
||||
};
|
||||
|
||||
class QUtf16LECodec : public QUtf16Codec {
|
||||
public:
|
||||
QUtf16LECodec() : QUtf16Codec() { e = LittleEndianness; }
|
||||
QByteArray name() const override;
|
||||
QList<QByteArray> aliases() const override;
|
||||
int mibEnum() const override;
|
||||
};
|
||||
|
||||
class QUtf32Codec : public QTextCodec {
|
||||
public:
|
||||
QUtf32Codec() { e = DetectEndianness; }
|
||||
~QUtf32Codec();
|
||||
|
||||
QByteArray name() const override;
|
||||
QList<QByteArray> aliases() const override;
|
||||
int mibEnum() const override;
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
|
||||
protected:
|
||||
DataEndianness e;
|
||||
};
|
||||
|
||||
class QUtf32BECodec : public QUtf32Codec {
|
||||
public:
|
||||
QUtf32BECodec() : QUtf32Codec() { e = BigEndianness; }
|
||||
QByteArray name() const override;
|
||||
QList<QByteArray> aliases() const override;
|
||||
int mibEnum() const override;
|
||||
};
|
||||
|
||||
class QUtf32LECodec : public QUtf32Codec {
|
||||
public:
|
||||
QUtf32LECodec() : QUtf32Codec() { e = LittleEndianness; }
|
||||
QByteArray name() const override;
|
||||
QList<QByteArray> aliases() const override;
|
||||
int mibEnum() const override;
|
||||
};
|
||||
|
||||
|
||||
#endif // textcodec
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QUTFCODEC_P_H
|
@ -1,79 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "qwindowscodec_p.h"
|
||||
#include "private/qstringconverter_p.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
QWindowsLocalCodec::QWindowsLocalCodec()
|
||||
{
|
||||
}
|
||||
|
||||
QWindowsLocalCodec::~QWindowsLocalCodec()
|
||||
{
|
||||
}
|
||||
|
||||
QString QWindowsLocalCodec::convertToUnicode(const char *chars, int length, ConverterState *state) const
|
||||
{
|
||||
ConverterState s(QStringConverter::Flag::Stateless);
|
||||
if (!state)
|
||||
state = &s;
|
||||
return QLocal8Bit::convertToUnicode(chars, length, state);
|
||||
}
|
||||
|
||||
QByteArray QWindowsLocalCodec::convertFromUnicode(const QChar *ch, int uclen, ConverterState *state) const
|
||||
{
|
||||
ConverterState s(QStringConverter::Flag::Stateless);
|
||||
if (!state)
|
||||
state = &s;
|
||||
return QLocal8Bit::convertFromUnicode(ch, uclen, state);
|
||||
}
|
||||
|
||||
QByteArray QWindowsLocalCodec::name() const
|
||||
{
|
||||
return "System";
|
||||
}
|
||||
|
||||
int QWindowsLocalCodec::mibEnum() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
@ -1,76 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or (at your option) the GNU General
|
||||
** Public license version 3 or any later version approved by the KDE Free
|
||||
** Qt Foundation. The licenses are as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef QWINDOWSCODEC_P_H
|
||||
#define QWINDOWSCODEC_P_H
|
||||
|
||||
//
|
||||
// W A R N I N G
|
||||
// -------------
|
||||
//
|
||||
// This file is not part of the Qt API. This header file may change from
|
||||
// version to version without notice, or even be removed.
|
||||
//
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
#include <QtCore/private/qglobal_p.h>
|
||||
#include "qtextcodec.h"
|
||||
|
||||
QT_REQUIRE_CONFIG(textcodec);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QWindowsLocalCodec: public QTextCodec
|
||||
{
|
||||
public:
|
||||
QWindowsLocalCodec();
|
||||
~QWindowsLocalCodec();
|
||||
|
||||
QString convertToUnicode(const char *, int, ConverterState *) const override;
|
||||
QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const override;
|
||||
|
||||
QByteArray name() const override;
|
||||
int mibEnum() const override;
|
||||
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif
|
@ -6,10 +6,6 @@
|
||||
set(INPUT_doubleconversion "undefined" CACHE STRING "")
|
||||
set_property(CACHE INPUT_doubleconversion PROPERTY STRINGS undefined no qt system)
|
||||
|
||||
# input iconv
|
||||
set(INPUT_iconv "undefined" CACHE STRING "")
|
||||
set_property(CACHE INPUT_iconv PROPERTY STRINGS undefined no yes posix sun gnu)
|
||||
|
||||
|
||||
|
||||
#### Libraries
|
||||
@ -590,31 +586,6 @@ qt_feature("glibc" PRIVATE
|
||||
AUTODETECT LINUX
|
||||
CONDITION TEST_glibc
|
||||
)
|
||||
qt_feature("iconv" PUBLIC PRIVATE
|
||||
SECTION "Internationalization"
|
||||
LABEL "iconv"
|
||||
PURPOSE "Provides internationalization on Unix."
|
||||
CONDITION NOT QT_FEATURE_icu AND QT_FEATURE_textcodec AND ( TEST_posix_iconv OR TEST_sun_iconv )
|
||||
)
|
||||
qt_feature_definition("iconv" "QT_NO_ICONV" NEGATE VALUE "1")
|
||||
qt_feature("posix-libiconv" PRIVATE
|
||||
LABEL "POSIX iconv"
|
||||
CONDITION NOT WIN32 AND NOT QNX AND NOT ANDROID AND NOT APPLE AND TEST_posix_iconv AND TEST_iconv_needlib
|
||||
ENABLE TEST_posix_iconv AND TEST_iconv_needlib
|
||||
DISABLE NOT TEST_posix_iconv OR NOT TEST_iconv_needlib
|
||||
)
|
||||
qt_feature("sun-libiconv"
|
||||
LABEL "SUN iconv"
|
||||
CONDITION NOT WIN32 AND NOT QNX AND NOT ANDROID AND NOT APPLE AND TEST_sun_iconv
|
||||
ENABLE TEST_sun_iconv
|
||||
DISABLE NOT TEST_sun_iconv
|
||||
)
|
||||
qt_feature("gnu-libiconv" PRIVATE
|
||||
LABEL "GNU iconv"
|
||||
CONDITION NOT WIN32 AND NOT QNX AND NOT ANDROID AND NOT APPLE AND TEST_posix_iconv AND NOT TEST_iconv_needlib
|
||||
ENABLE TEST_posix_iconv AND NOT TEST_iconv_needlib
|
||||
DISABLE NOT TEST_posix_iconv OR TEST_iconv_needlib
|
||||
)
|
||||
qt_feature("icu" PRIVATE
|
||||
LABEL "ICU"
|
||||
AUTODETECT NOT WIN32
|
||||
@ -650,7 +621,6 @@ qt_feature("mimetype" PUBLIC
|
||||
SECTION "Utilities"
|
||||
LABEL "Mimetype handling"
|
||||
PURPOSE "Provides MIME type handling."
|
||||
CONDITION QT_FEATURE_textcodec
|
||||
)
|
||||
qt_feature_definition("mimetype" "QT_NO_MIMETYPE" NEGATE VALUE "1")
|
||||
qt_feature("mimetype-database" PRIVATE
|
||||
@ -882,26 +852,6 @@ qt_feature("translation" PUBLIC
|
||||
PURPOSE "Supports translations using QObject::tr()."
|
||||
)
|
||||
qt_feature_definition("translation" "QT_NO_TRANSLATION" NEGATE VALUE "1")
|
||||
qt_feature("textcodec" PUBLIC
|
||||
SECTION "Internationalization"
|
||||
LABEL "QTextCodec"
|
||||
PURPOSE "Supports conversions between text encodings."
|
||||
)
|
||||
qt_feature_definition("textcodec" "QT_NO_TEXTCODEC" NEGATE VALUE "1")
|
||||
qt_feature("codecs" PUBLIC
|
||||
SECTION "Internationalization"
|
||||
LABEL "Codecs"
|
||||
PURPOSE "Supports non-unicode text conversions."
|
||||
CONDITION QT_FEATURE_textcodec
|
||||
)
|
||||
qt_feature_definition("codecs" "QT_NO_CODECS" NEGATE VALUE "1")
|
||||
qt_feature("big_codecs" PUBLIC
|
||||
SECTION "Internationalization"
|
||||
LABEL "Big Codecs"
|
||||
PURPOSE "Supports big codecs, e.g. CJK."
|
||||
CONDITION QT_FEATURE_textcodec
|
||||
)
|
||||
qt_feature_definition("big_codecs" "QT_NO_BIG_CODECS" NEGATE VALUE "1")
|
||||
qt_feature("easingcurve" PUBLIC
|
||||
SECTION "Utilities"
|
||||
LABEL "Easing curve"
|
||||
@ -1004,7 +954,6 @@ qt_configure_add_summary_section(NAME "Qt Core")
|
||||
qt_configure_add_summary_entry(ARGS "doubleconversion")
|
||||
qt_configure_add_summary_entry(ARGS "system-doubleconversion")
|
||||
qt_configure_add_summary_entry(ARGS "glib")
|
||||
qt_configure_add_summary_entry(ARGS "iconv")
|
||||
qt_configure_add_summary_entry(ARGS "icu")
|
||||
qt_configure_add_summary_entry(ARGS "mimetype-database")
|
||||
qt_configure_add_summary_entry(
|
||||
|
@ -7,7 +7,6 @@
|
||||
"doubleconversion": { "type": "enum", "values": [ "no", "qt", "system" ] },
|
||||
"eventfd": "boolean",
|
||||
"glib": "boolean",
|
||||
"iconv": { "type": "enum", "values": [ "no", "yes", "posix", "sun", "gnu" ] },
|
||||
"icu": "boolean",
|
||||
"inotify": "boolean",
|
||||
"journald": "boolean",
|
||||
@ -48,52 +47,6 @@
|
||||
{ "type": "pkgConfig", "args": "glib-2.0 gthread-2.0" }
|
||||
]
|
||||
},
|
||||
"posix_iconv": {
|
||||
"label": "POSIX iconv",
|
||||
"export": "iconv",
|
||||
"test": {
|
||||
"main": [
|
||||
"iconv_t x = iconv_open(\"\", \"\");",
|
||||
"char *inp, *outp;",
|
||||
"size_t inbytes, outbytes;",
|
||||
"iconv(x, &inp, &inbytes, &outp, &outbytes);",
|
||||
"iconv_close(x);"
|
||||
]
|
||||
},
|
||||
"headers": "iconv.h",
|
||||
"sources": [
|
||||
{ "libs": "-liconv", "condition": "config.openbsd || config.haiku" },
|
||||
{ "libs": "", "condition": "!(config.openbsd || config.haiku)" }
|
||||
]
|
||||
},
|
||||
"gnu_iconv": {
|
||||
"label": "GNU libiconv",
|
||||
"export": "iconv",
|
||||
"test": {
|
||||
"main": [
|
||||
"iconv_t x = iconv_open(\"\", \"\");",
|
||||
"const char *inp;",
|
||||
"char *outp;",
|
||||
"size_t inbytes, outbytes;",
|
||||
"iconv(x, &inp, &inbytes, &outp, &outbytes);",
|
||||
"iconv_close(x);"
|
||||
]
|
||||
},
|
||||
"headers": "iconv.h",
|
||||
"sources": [
|
||||
"-liconv"
|
||||
]
|
||||
},
|
||||
"sun_iconv": {
|
||||
"label": "SUN libiconv",
|
||||
"export": "iconv",
|
||||
"test": {
|
||||
"inherit": "gnu_iconv"
|
||||
},
|
||||
"sources": [
|
||||
""
|
||||
]
|
||||
},
|
||||
"icu": {
|
||||
"label": "ICU",
|
||||
"test": {
|
||||
@ -671,33 +624,6 @@
|
||||
"condition": "tests.glibc",
|
||||
"output": [ "privateFeature" ]
|
||||
},
|
||||
"iconv": {
|
||||
"label": "iconv",
|
||||
"purpose": "Provides internationalization on Unix.",
|
||||
"section": "Internationalization",
|
||||
"condition": "!features.icu && features.textcodec && (features.posix-libiconv || features.sun-libiconv || features.gnu-libiconv)",
|
||||
"output": [ "privateFeature", "feature" ]
|
||||
},
|
||||
"posix-libiconv": {
|
||||
"label": "POSIX iconv",
|
||||
"enable": "input.iconv == 'posix'",
|
||||
"disable": "input.iconv == 'sun' || input.iconv == 'gnu' || input.iconv == 'no'",
|
||||
"condition": "!config.win32 && !config.qnx && !config.android && !config.darwin && libs.posix_iconv",
|
||||
"output": [ "privateFeature" ]
|
||||
},
|
||||
"sun-libiconv": {
|
||||
"label": "SUN iconv",
|
||||
"enable": "input.iconv == 'sun'",
|
||||
"disable": "input.iconv == 'posix' || input.iconv == 'gnu' || input.iconv == 'no'",
|
||||
"condition": "!config.win32 && !config.qnx && !config.android && !config.darwin && !features.posix-libiconv && libs.sun_iconv"
|
||||
},
|
||||
"gnu-libiconv": {
|
||||
"label": "GNU iconv",
|
||||
"enable": "input.iconv == 'gnu'",
|
||||
"disable": "input.iconv == 'posix' || input.iconv == 'sun' || input.iconv == 'no'",
|
||||
"condition": "!config.win32 && !config.qnx && !config.android && !config.darwin && !features.posix-libiconv && !features.sun-libiconv && libs.gnu_iconv",
|
||||
"output": [ "privateFeature" ]
|
||||
},
|
||||
"icu": {
|
||||
"label": "ICU",
|
||||
"autoDetect": "!config.win32",
|
||||
@ -737,7 +663,6 @@
|
||||
"label": "Mimetype handling",
|
||||
"purpose": "Provides MIME type handling.",
|
||||
"section": "Utilities",
|
||||
"condition": "features.textcodec",
|
||||
"output": [ "publicFeature", "feature" ]
|
||||
},
|
||||
"mimetype-database": {
|
||||
@ -990,26 +915,6 @@
|
||||
"section": "Internationalization",
|
||||
"output": [ "publicFeature", "feature" ]
|
||||
},
|
||||
"textcodec": {
|
||||
"label": "QTextCodec",
|
||||
"purpose": "Supports conversions between text encodings.",
|
||||
"section": "Internationalization",
|
||||
"output": [ "publicFeature", "feature" ]
|
||||
},
|
||||
"codecs": {
|
||||
"label": "Codecs",
|
||||
"purpose": "Supports non-unicode text conversions.",
|
||||
"section": "Internationalization",
|
||||
"condition": "features.textcodec",
|
||||
"output": [ "publicFeature", "feature" ]
|
||||
},
|
||||
"big_codecs": {
|
||||
"label": "Big Codecs",
|
||||
"purpose": "Supports big codecs, e.g. CJK.",
|
||||
"section": "Internationalization",
|
||||
"condition": "features.textcodec",
|
||||
"output": [ "publicFeature", "feature" ]
|
||||
},
|
||||
"easingcurve": {
|
||||
"label": "Easing curve",
|
||||
"purpose": "Provides easing curve.",
|
||||
@ -1167,7 +1072,6 @@ Note that this is required for plugin loading. Qt GUI needs QPA plugins for basi
|
||||
"doubleconversion",
|
||||
"system-doubleconversion",
|
||||
"glib",
|
||||
"iconv",
|
||||
"icu",
|
||||
"mimetype-database",
|
||||
{
|
||||
|
@ -44,7 +44,6 @@ include(io/io.pri)
|
||||
include(itemmodels/itemmodels.pri)
|
||||
include(plugin/plugin.pri)
|
||||
include(kernel/kernel.pri)
|
||||
include(codecs/codecs.pri)
|
||||
include(serialization/serialization.pri)
|
||||
include(statemachine/statemachine.pri)
|
||||
include(mimetypes/mimetypes.pri)
|
||||
|
@ -44,8 +44,7 @@ imagedirs += images
|
||||
|
||||
excludedirs += snippets
|
||||
|
||||
excludefiles += ../../../examples/widgets/tools/customcompleter/doc/src/customcompleter.qdoc \
|
||||
../../../examples/widgets/tools/codecs/doc/src/codecs.qdoc
|
||||
excludefiles += ../../../examples/widgets/tools/customcompleter/doc/src/customcompleter.qdoc
|
||||
|
||||
# Included in qttestlib.qdocconf instead
|
||||
excludefiles += ../kernel/qtestsupport_core.cpp
|
||||
|
@ -1,75 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the documentation of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
//! [0]
|
||||
QByteArray encodedString = "...";
|
||||
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
|
||||
QString string = codec->toUnicode(encodedString);
|
||||
//! [0]
|
||||
|
||||
|
||||
//! [1]
|
||||
QString string = "...";
|
||||
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
|
||||
QByteArray encodedString = codec->fromUnicode(string);
|
||||
//! [1]
|
||||
|
||||
|
||||
//! [2]
|
||||
QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");
|
||||
QTextDecoder *decoder = codec->makeDecoder();
|
||||
|
||||
QString string;
|
||||
while (new_data_available()) {
|
||||
QByteArray chunk = get_new_data();
|
||||
string += decoder->toUnicode(chunk);
|
||||
}
|
||||
delete decoder;
|
||||
//! [2]
|
@ -93,7 +93,6 @@
|
||||
#define QT_FEATURE_getentropy -1
|
||||
#define QT_NO_GEOM_VARIANT
|
||||
#define QT_FEATURE_hijricalendar -1
|
||||
#define QT_FEATURE_iconv -1
|
||||
#define QT_FEATURE_icu -1
|
||||
#define QT_FEATURE_islamiccivilcalendar -1
|
||||
#define QT_FEATURE_jalalicalendar -1
|
||||
@ -141,8 +140,6 @@
|
||||
#define QT_FEATURE_zstd -1
|
||||
#endif
|
||||
|
||||
#define QT_FEATURE_textcodec -1
|
||||
|
||||
#ifdef QT_BUILD_QMAKE
|
||||
#define QT_FEATURE_commandlineparser -1
|
||||
#define QT_NO_COMPRESS
|
||||
|
@ -73,7 +73,6 @@
|
||||
#include <private/qlocale_p.h>
|
||||
#include <private/qlocking_p.h>
|
||||
#include <private/qhooks_p.h>
|
||||
#include <private/qtextcodec_p.h>
|
||||
|
||||
#ifndef QT_NO_QOBJECT
|
||||
#if defined(Q_OS_UNIX)
|
||||
@ -578,11 +577,9 @@ void QCoreApplicationPrivate::initLocale()
|
||||
return;
|
||||
qt_locale_initialized = true;
|
||||
|
||||
#ifdef QT_LOCALE_IS_UTF8
|
||||
// Android's Bionic didn't get nl_langinfo until NDK 15 (Android 8.0),
|
||||
// which is too new for Qt, so we just assume it's always UTF-8.
|
||||
auto nl_langinfo = [](int) { return "UTF-8"; };
|
||||
#endif
|
||||
|
||||
const char *locale = setlocale(LC_ALL, "");
|
||||
const char *codec = nl_langinfo(CODESET);
|
||||
|
@ -611,7 +611,7 @@ bool QtPrivate::isValidUtf16(QStringView s) noexcept
|
||||
}
|
||||
|
||||
// conversion between Latin 1 and UTF-16
|
||||
void qt_from_latin1(char16_t *dst, const char *str, size_t size) noexcept
|
||||
Q_CORE_EXPORT void qt_from_latin1(char16_t *dst, const char *str, size_t size) noexcept
|
||||
{
|
||||
/* SIMD:
|
||||
* Unpacking with SSE has been shown to improve performance on recent CPUs
|
||||
@ -5092,7 +5092,7 @@ QString QString::fromLocal8Bit_helper(const char *str, int size)
|
||||
This function can be used to process incoming data incrementally as long as
|
||||
all UTF-8 characters are terminated within the incoming data. Any
|
||||
unterminated characters at the end of the string will be replaced or
|
||||
suppressed. In order to do stateful decoding, please use \l QTextDecoder.
|
||||
suppressed. In order to do stateful decoding, please use \l QStringDecoder.
|
||||
|
||||
\sa toUtf8(), fromLatin1(), fromLocal8Bit()
|
||||
*/
|
||||
|
@ -288,10 +288,10 @@ struct QUtf8
|
||||
{
|
||||
static QChar *convertToUnicode(QChar *, const char *, qsizetype) noexcept;
|
||||
static QString convertToUnicode(const char *, qsizetype);
|
||||
static QString convertToUnicode(const char *, qsizetype, QStringConverter::State *);
|
||||
Q_CORE_EXPORT static QString convertToUnicode(const char *, qsizetype, QStringConverter::State *);
|
||||
static QChar *convertToUnicode(QChar *out, const char *in, qsizetype length, QStringConverter::State *state);
|
||||
static QByteArray convertFromUnicode(const QChar *, qsizetype);
|
||||
static QByteArray convertFromUnicode(const QChar *, qsizetype, QStringConverter::State *);
|
||||
Q_CORE_EXPORT static QByteArray convertFromUnicode(const QChar *, qsizetype, QStringConverter::State *);
|
||||
static char *convertFromUnicode(char *out, QStringView in, QStringConverter::State *state);
|
||||
struct ValidUtf8Result {
|
||||
bool isValidUtf8;
|
||||
@ -304,21 +304,21 @@ struct QUtf8
|
||||
|
||||
struct QUtf16
|
||||
{
|
||||
static QString convertToUnicode(const char *, qsizetype, QStringConverter::State *, DataEndianness = DetectEndianness);
|
||||
Q_CORE_EXPORT static QString convertToUnicode(const char *, qsizetype, QStringConverter::State *, DataEndianness = DetectEndianness);
|
||||
static QChar *convertToUnicode(QChar *out, const char *chars, qsizetype len, QStringConverter::State *state, DataEndianness endian);
|
||||
static QByteArray convertFromUnicode(const QChar *, qsizetype, QStringConverter::State *, DataEndianness = DetectEndianness);
|
||||
Q_CORE_EXPORT static QByteArray convertFromUnicode(const QChar *, qsizetype, QStringConverter::State *, DataEndianness = DetectEndianness);
|
||||
static char *convertFromUnicode(char *out, QStringView in, QStringConverter::State *state, DataEndianness endian);
|
||||
};
|
||||
|
||||
struct QUtf32
|
||||
{
|
||||
static QChar *convertToUnicode(QChar *out, const char *chars, qsizetype len, QStringConverter::State *state, DataEndianness endian);
|
||||
static QString convertToUnicode(const char *, qsizetype, QStringConverter::State *, DataEndianness = DetectEndianness);
|
||||
static QByteArray convertFromUnicode(const QChar *, qsizetype, QStringConverter::State *, DataEndianness = DetectEndianness);
|
||||
Q_CORE_EXPORT static QString convertToUnicode(const char *, qsizetype, QStringConverter::State *, DataEndianness = DetectEndianness);
|
||||
Q_CORE_EXPORT static QByteArray convertFromUnicode(const QChar *, qsizetype, QStringConverter::State *, DataEndianness = DetectEndianness);
|
||||
static char *convertFromUnicode(char *out, QStringView in, QStringConverter::State *state, DataEndianness endian);
|
||||
};
|
||||
|
||||
struct QLocal8Bit
|
||||
struct Q_CORE_EXPORT QLocal8Bit
|
||||
{
|
||||
#if !defined(Q_OS_WIN) || defined(QT_BOOTSTRAPPED)
|
||||
static QString convertToUnicode(const char *chars, qsizetype len, QStringConverter::State *state)
|
||||
|
@ -286,12 +286,7 @@ QString QClipboard::text(QString &subtype, Mode mode) const
|
||||
}
|
||||
|
||||
const QByteArray rawData = data->data(QLatin1String("text/") + subtype);
|
||||
|
||||
#if QT_CONFIG(textcodec)
|
||||
return qFromUtfEncoded(rawData);
|
||||
#else // textcodec
|
||||
return QString::fromUtf8(rawData);
|
||||
#endif // textcodec
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -6,9 +6,6 @@ QT_CLASS_LIB(QPauseAnimation, QtCore, qpauseanimation.h)
|
||||
QT_CLASS_LIB(QPropertyAnimation, QtCore, qpropertyanimation.h)
|
||||
QT_CLASS_LIB(QSequentialAnimationGroup, QtCore, qsequentialanimationgroup.h)
|
||||
QT_CLASS_LIB(QVariantAnimation, QtCore, qvariantanimation.h)
|
||||
QT_CLASS_LIB(QTextCodec, QtCore, qtextcodec.h)
|
||||
QT_CLASS_LIB(QTextEncoder, QtCore, qtextcodec.h)
|
||||
QT_CLASS_LIB(QTextDecoder, QtCore, qtextcodec.h)
|
||||
QT_CLASS_LIB(QFuture, QtCore, qfuture.h)
|
||||
QT_CLASS_LIB(QFutureIterator, QtCore, qfuture.h)
|
||||
QT_CLASS_LIB(QMutableFutureIterator, QtCore, qfuture.h)
|
||||
|
@ -1,5 +1,5 @@
|
||||
option(host_build)
|
||||
!force_bootstrap:if(!qtConfig(commandlineparser)|!qtConfig(textcodec)|!qtConfig(xmlstreamreader)|!qtConfig(xmlstreamwriter)): \
|
||||
!force_bootstrap:if(!qtConfig(commandlineparser)|!qtConfig(xmlstreamreader)|!qtConfig(xmlstreamwriter)): \
|
||||
CONFIG += force_bootstrap
|
||||
|
||||
DEFINES += QT_UIC QT_NO_CAST_FROM_ASCII QT_NO_FOREACH
|
||||
|
@ -3,7 +3,6 @@
|
||||
add_subdirectory(kernel)
|
||||
if(NOT UIKIT)
|
||||
add_subdirectory(animation)
|
||||
add_subdirectory(codecs)
|
||||
add_subdirectory(global)
|
||||
add_subdirectory(io)
|
||||
add_subdirectory(itemmodels)
|
||||
|
@ -3,7 +3,6 @@
|
||||
add_subdirectory(kernel)
|
||||
if(NOT UIKIT)
|
||||
add_subdirectory(animation)
|
||||
add_subdirectory(codecs)
|
||||
add_subdirectory(global)
|
||||
add_subdirectory(io)
|
||||
add_subdirectory(itemmodels)
|
||||
|
@ -1,3 +0,0 @@
|
||||
add_subdirectory(qtextcodec)
|
||||
add_subdirectory(utf8)
|
||||
|
@ -1,4 +0,0 @@
|
||||
TEMPLATE=subdirs
|
||||
SUBDIRS=\
|
||||
qtextcodec \
|
||||
utf8 \ # Integrate into qtextcodec test? See QTBUG-22590.
|
@ -1 +0,0 @@
|
||||
utf8.txt -crlf
|
@ -1 +0,0 @@
|
||||
tst_qtextcodec
|
@ -1,5 +0,0 @@
|
||||
add_qt_test(tst_qtextcodec SOURCES tst_qtextcodec.cpp)
|
||||
|
||||
if(UNIX)
|
||||
add_subdirectory(echo)
|
||||
endif()
|
Binary file not shown.
@ -1,10 +0,0 @@
|
||||
# Generated from echo.pro.
|
||||
|
||||
#####################################################################
|
||||
## echo_helper Binary:
|
||||
#####################################################################
|
||||
|
||||
add_qt_test_helper(echo_helper
|
||||
SOURCES
|
||||
main.cpp
|
||||
)
|
@ -1,4 +0,0 @@
|
||||
SOURCES += main.cpp
|
||||
QT = core
|
||||
|
||||
load(qt_test_helper)
|
@ -1,48 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the test suite of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
||||
** included in the packaging of this file. Please review the following
|
||||
** information to ensure the GNU General Public License requirements will
|
||||
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <QtCore/QCoreApplication>
|
||||
#include <QtCore/QTextCodec>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
qputenv("LC_ALL", "C");
|
||||
QCoreApplication app(argc, argv);
|
||||
|
||||
QString string(QChar(0x410));
|
||||
QTextCodec *locale = QTextCodec::codecForLocale();
|
||||
QTextEncoder *encoder = locale->makeEncoder();
|
||||
QByteArray output = encoder->fromUnicode(string);
|
||||
printf("%s\n", output.data());
|
||||
delete encoder;
|
||||
|
||||
return 0;
|
||||
}
|
@ -1 +0,0 @@
|
||||
안녕들 하시죠?
|
@ -1,3 +0,0 @@
|
||||
TEMPLATE = subdirs
|
||||
SUBDIRS = test.pro
|
||||
unix: SUBDIRS += echo
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user