OberonCore
https://forum.oberoncore.ru/

#014 Создание заголовочных модулей в подсистеме Lin
https://forum.oberoncore.ru/viewtopic.php?f=134&t=6449
Страница 1 из 1

Автор:  Евгений Темиргалеев [ Понедельник, 14 Октябрь, 2019 17:51 ]
Заголовок сообщения:  #014 Создание заголовочных модулей в подсистеме Lin

Часто приходится генерить заголовки в Lin?

В Lin лежат "скрипты" для генерации интерфейсных модулей. Интересуют два вопроса. Часто с их помощью перегенирируются модули? Какие причины побудили генератор делать не на ББ?
Код:
bbcp/Lin/Mod

Каталоги
attic
gen-Ioctl
gen-Libc
gen-LibW
gen-Net
gen-Termios

Файлы
Dl.odc
Dl.txt
Iconv.odc
Iconv.txt
Ioctl.txt
Libc.txt
LibW.txt
Net.txt
Rt.txt
Termios.txt

Автор:  Alexander Shiryaev [ Вторник, 15 Октябрь, 2019 20:31 ]
Заголовок сообщения:  Re: Часто приходится генерить заголовки в Lin?

Для GNU/Linux - нечасто. Там вообще почти ничего не менятся.
Для OpenBSD - часто.

Генераторы проще всего было писать на С, т. к. не нужно парсить заголовочные файлы, а они все на C.
Часть написана на Python - так было проще сделать. Можно переписать.

Автор:  Info21 [ Вторник, 15 Октябрь, 2019 21:04 ]
Заголовок сообщения:  Re: Часто приходится генерить заголовки в Lin?

Alexander Shiryaev писал(а):
Можно переписать.
Надо переписать ))

Автор:  Евгений Темиргалеев [ Среда, 16 Октябрь, 2019 15:44 ]
Заголовок сообщения:  Re: Часто приходится генерить заголовки в Lin?

Alexander Shiryaev писал(а):
Генераторы проще всего было писать на С, т. к. не нужно парсить заголовочные файлы, а они все на C.
Парсить, на мой взгляд, проще не заголовочные файлы, а освобожденную от макросов и условной компиляции выдачу препроцессора.

Код:
$ cat mkioctl.cpp
#include <sys/ioctl.h>

CONST
    _FIOCLEX = FIOCLEX;
    _FIONCLEX = FIONCLEX;

Код:
$ cpp mkioctl.cpp
...
# 27 "/usr/include/x86_64-linux-gnu/bits/ioctl-types.h" 3 4
struct winsize
  {
    unsigned short int ws_row;
    unsigned short int ws_col;
    unsigned short int ws_xpixel;
    unsigned short int ws_ypixel;
  };


struct termio
  {
    unsigned short int c_iflag;
    unsigned short int c_oflag;
    unsigned short int c_cflag;
    unsigned short int c_lflag;
    unsigned char c_line;
    unsigned char c_cc[8];
};
# 30 "/usr/include/x86_64-linux-gnu/sys/ioctl.h" 2 3 4
...
extern int ioctl (int __fd, unsigned long int __request, ...) throw ();

}
# 2 "mkioctl.cpp" 2


# 3 "mkioctl.cpp"
CONST
    _FIOCLEX =
# 4 "mkioctl.cpp" 3 4
              0x5451
# 4 "mkioctl.cpp"
                     ;
    _FIONCLEX =
# 5 "mkioctl.cpp" 3 4
               0x5450
# 5 "mkioctl.cpp"
                       ;

Автор:  Alexander Shiryaev [ Среда, 16 Октябрь, 2019 21:26 ]
Заголовок сообщения:  Re: Часто приходится генерить заголовки в Lin?

Да, так и надо будет сделать.

Автор:  Иван Денисов [ Вторник, 11 Февраль, 2020 23:31 ]
Заголовок сообщения:  Re: Часто приходится генерить заголовки в Lin?

Генератор теперь создает odc файлы вместо текстовых. Спасибо Александру!
Если кому-то нужен пример создания odc из Питона, можете обратиться в исходным кодам этих генераторов.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/