[kde-russian] Патчи для qt3. Проблемы с преобразованием
Сукиязов Сергей Александрович
corwin на micom.don.ru
Пт Мар 15 13:00:09 MSK 2002
Привет
Я сделал патчи которые меняют поведение класса QString при преобразовании
из char * <--> QString. Проблемы возникают когда используется преобразование
по умолчанию, т.е. конструктор QString(const char *) и т.п. О всех нюансах я
писал в своей статье "Использование Qt-2.2.x в русскоязычных программах "
(http://www.kde.ru/docs.php?action=show&id=qt_russian). К сожалению избежать
бинарной несовмесимости не удалось :((( Несовместимость возникает из-за того
что некоторые изменяемые методы реализованны как inline.
Сейчас Тролли согласились рассмотреть эти замечания, и я надеюсь поведение
конструкторов QString всё-таки изменится (наверное в версии 3.1 или 4.0).
Если у кого есть желание и время потестируйте эти патчи. Я договорился
с Троллями что на следующей неделе (где-то во вторник - среду) отправлю
им патчи. Так что, если у кого есть какие-нибудь замечания или дополнения
я жду :)))))
Патчи накладываются в порядке указанном как 'step.x'.
Краткое описание:
qt-x11-free-3.0.2-0004-step.0.diff
----------------------------------------------
Этот патч убирает зависимость между классами QTextCodec и конструкторами
QString изпользуемыми для преобазования char * <--> QString. В противном
случае, т.к. мы в конструкторах будем использовать QTextCodec, будут
возникать "мертвые циклы" (death loops) [Конструктор QString] -> [Метод
QTextCodec] -> [Конструктор QString] -> ....
qt-x11-free-3.0.2-0004-step.1.diff
----------------------------------------------
Этот патч приводит в соответствие поведение метода QTextCodec::toUnicode в
соответствие с поведением конструкторов QString отвечающих за преобразование
char * <--> QString. Дело в том что оригинальное поведение выглядит след.
образом:
- QString str(0) или QString str - создают строку str для которой выполняют-
ся условия: str.isNull() == TRUE и str.isEmpty() == TRUE.
- str = QTextCodec::toUnicode(0,...) - создают строку str для которой выпол-
няются условия: str.isNull() == TRUE и str.isEmpty() == TRUE.
В этой части поведение совпадает.
- QString str("") - создают строку str для которой выполняются условия:
str.isNull() == FALSE и str.isEmpty() == TRUE.
- str = QTextCodec::toUnicode("",...) - создают строку str для которой выпол-
няются условия: str.isNull() == TRUE и str.isEmpty() == TRUE.
В этой части поведение не совпадает.
qt-x11-free-3.0.2-0004-step.2.diff
----------------------------------------------
Этот патч изменяет поведение конструкторов класса QString. После применения
этого патча преобразование char * <--> QString выполняется с помощью колека
для установок локали.
qt-x11-free-3.0.2-0004-step.3.diff
----------------------------------------------
Этот патч испавляет все остальные методы и конструкторы, в т.ч. и для класса
QChar. Этот патч вносит бинарную несовместимость, из-за того что некоторые
методы сделаны как inline.
--
С Уважением
Сукиязов Сергей
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя : qt-x11-free-3.0.2-0004-step.3.diff
Тип : text/x-diff
Размер : 11367 байтов
Описание: отсутствует
Url : http://lists.kde.ru/pipermail/kde-russian/attachments/20020315/5cb81a10/attachment.bin
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя : qt-x11-free-3.0.2-0004-step.2.diff
Тип : text/x-diff
Размер : 1420 байтов
Описание: отсутствует
Url : http://lists.kde.ru/pipermail/kde-russian/attachments/20020315/5cb81a10/attachment-0001.bin
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя : qt-x11-free-3.0.2-0004-step.1.diff
Тип : text/x-diff
Размер : 28228 байтов
Описание: отсутствует
Url : http://lists.kde.ru/pipermail/kde-russian/attachments/20020315/5cb81a10/attachment-0002.bin
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя : qt-x11-free-3.0.2-0004-step.0.diff
Тип : text/x-diff
Размер : 4003 байтов
Описание: отсутствует
Url : http://lists.kde.ru/pipermail/kde-russian/attachments/20020315/5cb81a10/attachment-0003.bin
Подробная информация о списке рассылки kde-russian