[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