OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 04 Июль, 2020 03:21

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Вторник, 26 Ноябрь, 2019 16:26 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4593
Откуда: Россия, Орёл
Такого рода средства рассованы по нескольким модулям.
Код:
   (* decode filename from HostLang.enc encoding *)
   PROCEDURE Long (ss: Iconv.PtrSTR; OUT s: ARRAY OF CHAR);
   (* encode filename to HostLang.enc encoding *)
   PROCEDURE Short (IN s: ARRAY OF CHAR; OUT ss: ARRAY OF SHORTCHAR);
А системные вызовы, для которых цепочки туда-сюда гонять приходится, нужны не только для модулей реализации ББ. Каждый раз копировать?

В нашей консольной сборке такой модуль был для этих целей выделен. Одна копия кода процедур-преобразователей была только в HostFiles.
Код:
Host1K12 C S         HostStringConv — системные средства преобразования цепочек

DEFINITION Host1K12   (* nonportable (i386) *);

   PROCEDURE MbToUcs2 (IN x: ARRAY OF SHORTCHAR; OUT y: ARRAY OF CHAR; OUT result: INTEGER);
   PROCEDURE MbToUcs2P (x: POINTER TO ARRAY [untagged] OF SHORTCHAR; OUT y: ARRAY OF CHAR; OUT result: INTEGER);
   PROCEDURE Ucs2ToMb (IN x: ARRAY OF CHAR; OUT y: ARRAY OF SHORTCHAR);

END Host1K12.

Есть какие-то причины, почему так не удобно сделать здесь?

И, второй вопрос, может и HostFiles стоит собирать с опорой на такой модуль, чтобы копий не было вообще?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Ноябрь, 2019 22:54 
Аватара пользователя

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 462
Откуда: Егорьевск
Да, можно так сделать. И ещё уже наверное можно убрать поддержку всех кодировок, кроме UTF-8.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Ноябрь, 2019 20:20 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4593
Откуда: Россия, Орёл
Да, это было бы хорошо. Сильно прочистит код. Конверсию из UTF8 я бы положил в System, но не в Strings и Kernel, а отдельным модулем.
Код:
MODULE Utf8;
   PROCEDURE ReadStr (IN x: ARRAY OF BYTE; pos, len: INTEGER; OUT y: ARRAY OF CHAR; OUT res: INTEGER);
   PROCEDURE WriteStr (IN x: ARRAY OF CHAR; OUT y: ARRAY OF BYTE; pos: INTEGER; OUT len: INTEGER);
Или вариант с SHORTCHAR вместо BYTE.

Маленький модуль, только преобразователь UTF8. Его можно линковать в пускач и импортировать в Kernel и HostFiles.

А Strings/Kernel от Utf8 освободятся. Если надо сохранить совместимость, то из Strings сделать трансляцию в Utf8.
Кто что думает на этот счет?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 11 Февраль, 2020 22:53 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2757
В ветку dev18 добавили модуль System/Mod/Utf8.odc
В нем сейчас реализация скопирована из ядра.
Используем его уже в HostDialog и HostDates версии 1.8-a1.
Планируется везде заменить использование Strings на этот Utf8, где конвертация делается.

В ядро этот модуль не надо импортировать. Ядро должно автономно работать, или вообще откажемся от SHORTCHAR в компиляторе, как Борис предлагает, то и в ядре эти преобразования не понадобятся.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Март, 2020 19:35 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 243
Коллеги, может, пока джин еще в бутылке, стоит переназвать модуль просто Utf? А то потом захочется добавить UTF16, UCS какой-нибудь... Да и читать Utf приятней чем Utf8 )


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Март, 2020 20:56 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2757
Согласен. Александр предлагает Unicode тогда назвать. Сможем туда поместить разные кроссплатформенные реализации IsAlpha и т.п.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Март, 2020 21:45 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 243
Unicode? Even better!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Март, 2020 22:19 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1289
А можно назвать Everything и помещать туда, что потребуется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Март, 2020 23:23 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1289
Что-то я запутался. В kernel же есть преобразования. Или у вас не 1.7?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Март, 2020 23:30 
Аватара пользователя

Зарегистрирован: Воскресенье, 09 Декабрь, 2018 15:14
Сообщения: 62
Откуда: Equestria
Иван Денисов писал(а):
Согласен. Александр предлагает Unicode тогда назвать. Сможем туда поместить разные кроссплатформенные реализации IsAlpha и т.п.
У меня в bmbb давно есть такой модуль(HostUnicode), что бы не тягать в Kernel, а прикручивать через хук.
(* этот модуль у меня был сгенерирован автоматически утилиткой на сишке, можно ещё оптимизировать выхлоп *)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 01 Март, 2020 23:50 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 243
А что не поместится в Everything, помещать в ОйВсё - даром штоли у нас кириллица поддерживается, и все эти пляски с УТФ8? :wink:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Март, 2020 04:47 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4593
Откуда: Россия, Орёл
Иван Денисов писал(а):
Согласен. Александр предлагает Unicode тогда назвать. Сможем туда поместить разные кроссплатформенные реализации IsAlpha и т.п.

Есть одна проблема. Преобразование UTF8 <-> UCS2 это тривиальная задача. А кроссплатформенные реализации IsAlpha -- нет. UCS2 -- это не ASCII. Иван Горячев к этому вопросу подходил серьезно, там целая подсистема.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Март, 2020 06:50 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2757
Я уверен, что подсистему любого размера возможно поместить в один модуль :)
Правда размер приложение будет увеличиваться. Но зато мы сможем убрать из Strings зависимость от ядра, что важно при разработке динамических библиотек на Блэкбоксе.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Март, 2020 07:00 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2757
Trurl писал(а):
Что-то я запутался. В kernel же есть преобразования. Или у вас не 1.7?

В этом подфоруме сейчас больше обсуждаем версию 1.8.
В 1.7.2 кросс-платформенной сборки сейчас статус бета и там никаких нововведений не планируется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Март, 2020 07:59 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1289
Та все же, вы планируете в 1.8 убрать то, что добавили в 1.7?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Март, 2020 08:04 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2757
Trurl писал(а):
Та все же, вы планируете в 1.8 убрать то, что добавили в 1.7?

Некоторые рациональные изменения будут, которые противоречат решениям, примененным в 1.7
1. которые понизят издержки орловско/воронежской команды по использованию их разработок на новой версии
2. которые упростят поддержку кросс-платформенности

Однако будет больше именений 1.8 от 1.6, чем 1.7 от 1.6 в совокупности.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Март, 2020 08:12 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2757
Возвращаясь к теме utf8, в ядре предлагается убрать экспорт процедур преобразований. А использовать в компиляторе и средствах отладки модуль Unicode, который будет упаковывать/распаковывать идентификаторы в/из ARRAY OF SHORTCHAR.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Март, 2020 18:15 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2757
SovietPony писал(а):
Иван Денисов писал(а):
Согласен. Александр предлагает Unicode тогда назвать. Сможем туда поместить разные кроссплатформенные реализации IsAlpha и т.п.
У меня в bmbb давно есть такой модуль(HostUnicode), что бы не тягать в Kernel, а прикручивать через хук.
(* этот модуль у меня был сгенерирован автоматически утилиткой на сишке, можно ещё оптимизировать выхлоп *)

Снимаем шляпу, вы сделали большое дело! Помещу его сюда, чтобы людям было проще ознакомиться.


Вложения:
HostUnicode.txt [18.36 КБ]
Скачиваний: 89
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Март, 2020 19:57 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2757
Думал думал и придумал, что надо этот код вставлять напрямую в Strings. Раз он кросс-платформенный раз. А также раз Евгений считает, что надо отдельным модулем. А нам модули совершенно не надо плодить в огромном количестве. Есть отличное место для этих процедур - Strings.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Март, 2020 20:21 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9269
Откуда: Россия, Орёл
Чрезмерный размер Strings тоже не особо хорош. Иногда он статически линкуется, например.
Если только иметь там интерфейс, а реализацию хранить отдельно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2020, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB