Ada_Ru форум

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

GEMA vs. привязки

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

Сообщения

Иван Левашев
GEMA vs. привязки
2009-03-10 22:29:48

Не так давно в c.l.a пробегал хинт использовать GEMA.

 

http://groups.google.com/groups?threadm=2d7b3ed5-8df2-4c89-b21b-a12af93235ad%40w1g2000prk.googlegroups.com

 

 

Сейчас немного экспериментирую с JEDI.

JEDI — довольно хорошо поддерживаемая (в смысле актуальности) WinAPI

привязка для Delphi. Вот было бы неплохо перегнать её в Аду.

 

Прилагаю мои экспериментальные наработки. Чтобы запустить, нужно:

распаковать GEMA-Win32API.zip куда-нибудь, например, у меня это было C:\home\Programming\GEMA-Win32API

 

И докачать остальные ингридиенты:

1. JEDI

http://jedi-apilib.sourceforge.net/

 

Здесь нужно взять JEDI API Windows Headers, распотрошить его, найти в нём директорию jwapi2.2a/Win32API и скопировать её в рабочую.

 

2. GEMA

http://gema.sourceforge.net/new/dnld.shtml

 

из файла gema-1.4RC-exe-win.zip

странно, почему-то письмо обрезано...

 

продолжение:

 

наконец, нужно создать Win32API_out, в которую попадают результаты ковертации.

 

Конвертор пока ничего особенного из себя не представляет, зато он может быть интересен как пример использования GEMA. GEMA — мощный инструмент, но документации по ней мало, было много на сайте anthus.com, но он просто перестал существовать. Часть документов перенесена на sourceforge wiki:

http://www.anthus.com/Gema/WhyILoveGema.html

 

Но там форматирование убило примеры:

1. Replace all single quotes (') by double quotes (") except within comments delimited by "{" and "}". code

{}=$0

'="

 

Это, конечно, не работает.

 

К счастью, здесь: http://gema.wiki.sourceforge.net/Gema+Challenge

всё нормально.

 

С помощью GEMA можно автоматизировать генерацию разного рода пыли и клея. В её отсутствие генератор кода — это нечто абстрактное, нечто, что создаётся только если сильно захотеть. А GEMA сразу даёт ключи от машины.

 

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

sourceforge wiki:

http://www.anthus.com/Gema/WhyILoveGema.html

 

http://gema.wiki.sourceforge.net/WhyILoveGema

 

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

Чуть обновлённая версия:

 

http://octagram.gorodok.net/P/GEMA-Win32API-01072009.7z

 

Основное изменение -- это ранняя реализация пакета

Jwa.Strings, который должен восполнить неудобства

стандартных строковых типов, в том числе при

взаимодействии с C API. Строки по образу и

подобию срисованы с Delphi, а именно: счётчик ссылок и

обязательный нулевой символ после символьных данных

для совместимости с const char* (aka PChar)

 

Для этих строк я постарался предоставить интерфейс,

аналогичный Unbounded_String. В Unbounded_String

иногда тип доступа out, а у меня in out, чтобы можно

было при случае переиспользовать уже размещённый буффер.

 

Взял тесты из ACATS, заменил Unbounded_String на

String_8, To_Unbounded_String на To_String_8 и далее

в том же духе. Тесты проходят, но нужно ещё тестировать.

 

Потом по-хорошему надо более оптимальную реализацию

для x86 сделать. Мне не хватает Делфёвых

FillChar(), Move(), а менеджер памяти не предоставляет

realloc, хотя это тоже могло быть полезным. У FastMM

исходные коды открыты, можно попробовать портировать

на Аду. Быстрые реализации Move() и FillChar() тоже

наверняка есть. Не в Паскале, так в Сишной

библиотеке под приемлемой лицензией.

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

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