Ada_Ru форум

Обсуждение языка Ада

[ada_ru] Ada2012 Unicode NCURSES под Windows.

Оставить новое сообщение

Сообщения

Sergey Dukov
[ada_ru] Ada2012 Unicode NCURSES под Windows.
2018-03-04 08:53:55

Предлагаю пакет (Binding) Ada2012 Unicode NCURSES под Windows.

Исходники и пояснения в проекте http://www.rtsdd.ru/Ada2012_Unicode_NCURSES.aspx.

Сергей Дюков.

 

 

[Non-text portions of this message have been removed]

Здравствуйте, Сергей!

 

Предлагаю пакет (Binding) Ada2012 Unicode NCURSES под Windows.

 

Исходники и пояснения в проекте http://www.rtsdd.ru/Ada2012_Unicode_NCURSES.aspx.

 

Интересно.

 

На ум ещё приходят PDCurses, который вроде бы как лучше для Windows (но это не точно), а также Linenoise NG и winlibs/wineditline с интерфейсом, аналогичным readline. Оригинальный readline работает поверх ncurses, насчёт этих не знаю. В идеале они, наверное, должны дружить (в смысле, реализации API ncurses и API readline) на всех платформах, если

подобрать комбинацию.

 

Или в ncurses уже есть функционал, аналогичный readline?

 

Если появляется контрольный пакет из кроссплатформенных юникодных реализаций ncurses+readline, я на своём сайте «Всё о Паскале» могу наконец начинать ссылаться со страниц, посвящённых процедурам модуля Crt, на страницы, посвящённые такому заменителю.

 

С уважением,

Левашев Иван,

Барнаул

 

--

If you want to get to the top, you have to start at the bottom

Здравствуйте, Иван!

Пакет AdaCursesW -- это привязка (binding) к WIDEC-варианту покуроченной библиотеки ncurses-6.0. Необходимость модификации связана с невозможностью в Windows установить в Locale кодовую страницу UTF-8. В проекте http://www.rtsdd.ru/gnat_gpl_2017_building_up_mingw64.aspx http://www.rtsdd.ru/gnat_gpl_2017_building_up_mingw64.aspx есть пакет AdaCurses, который является простым переносом пакета Ada95 дистрибутива ncurses-6.0 (создан правильный .gpr файл, а все остальные исходники остались неизменными). Пакет AdaCursesW -- UNICODE-вариант пакета AdaCurses, а потому именно ncurses.

Теперь насчет пакета readline, -- он просто завит от ncurses, и в нём та же проблема с кодовой страницей UTF-8. Но в readline есть и другая проблема. Для синхронизации обработчиков событий в readline используется механизм "select" для регулярных файлов, каналов (pipe), входных и выходных потоков терминала, а в Windows этот механизм доступен только для сетевых сокетов. Поэтому при применении пакета readline нужно моделировать этот механизм, а это большая заморока.

С уважением и наилучшими пожеланиями,

Сергей Дюков.

Волжский.

 

 

[Non-text portions of this message have been removed]

Здравствуйте, Сергей!

 

>Пакет AdaCursesW -- UNICODE-вариант пакета AdaCurses, а потому именно

ncurses.

 

У PDCurses программный интерфейс совместим, поэтому если не получается с одним, можно до некоторой степени заменить другим.

 

PDCurses is a public domain curses programming library for DOS,

OS/2, Windows, X11 and SDL2. While development of the original

curses library halted in the mid-1990s, the development of ncurses and PDCurses continued. PDCurses implements most of the functions available in the original X/Open and System V R4 curses.

 

То есть, сам ncurses — не оригинален в своём API. И AdaCursesW можно перебазировать.

 

То есть, поддержка Windows в PDCurses началась гораздо раньше. Юникод там есть. Может быть, там всё не так плохо, как в ncurses.

 

Теперь насчет пакета readline, -- он просто завит от ncurses, и в нём та же проблема с кодовой страницей UTF-8.

 

Дело не в конкретном пакете, а в API, которое реализуют и другие указанные пакеты по тому же принципу взаимозаменяемости. Я смутно припоминаю, что WinEditLine я успешно использовал, но не уверен, была ли это Ада.

 

WinEditLine работает с консолью Windows напрямую.

 

Меня смущает, не могут ли быть конфликты, если использовать сразу две библиотеки без согласования их друг с другом. Когда на позиксе одно через другое, то они согласованы. А когда на Windows обе лезут в общую консоль… вот смущает этот момент. Может быть, Linenoise NG через PDCurses пустить или какой-то аналогичный хитрый вариант подружить одно с другим.

 

 

С уважением,

Левашев Иван,

Барнаул

 

--

If you want to get to the top, you have to start at the bottom

Здравствуйте, Иван!

И ncurses и readline это posix пакеты скомпилированные под MINGW, и работают почти так же как в Linux или Cygwin, с этим всё в порядке. Проблема в том, что они используют сишные функции для преобразования char* в wchar_t* и наоборот, а правила преобразования берутся из локали, а потому под Windows char* -- это всё что угодно, только не UTF-8.

На сомом деле, библиотеку AdaCursesW перенести на другие платформы гораздо проще, чем приспособить её под Windows.

С уважением и наилучшими пожеланиями, Сергей Дюков.

Волжский.

 

 

[Non-text portions of this message have been removed]

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти