glib-mkenums
Утилита генерирующая описание перечислимых типов языка C
Краткое описание
glib-mkenums
[options...] [files...]
Описание
glib-mkenums это небольшой perl-скрипт анализирующий C код извлекая определения перечислений и создавая описания перечислений основываясь на текстовых шаблонах определённых пользователем. Чаще всего этот скрипт используется для производства C кода содержащего значения перечислений как строки, таким образом программы могут обеспечить строковые названия значений для самоанализа.
Invocation
glib-mkenums принимает в качестве ввода список допустимых файлов с кодом на C. Опции определяют управление текстом вывода, определённые замены выполненные в текстовых шаблонах для ключевых слов окантовываются символами @.
Options
--fhead
text
Выводить текст
перед обработкой введённых файлов.
--fprod
text
Выводить текст
каждый раз когда начинается обработка нового введённого файла.
--ftail
text
Выводить текст
после обработки всех введённых файлов.
--eprod
text
Выводить текст
каждый раз когда встречается неожиданное перечисление в ведённых файлах.
--vhead
text
Выводить текст
перед выполнением перемещения через набор значений перечисления.
--vprod
text
Выводить текст
для каждого значения перечисления.
--vtail
text
Выводить текст
после перемещения через все значения перечисления.
--comments
text
Шаблон для автоматической генерации комментариев, по умолчанию (для генерации C кода) это "/* @comment@ */"
.
--template
file
Читать шаблон из полученного файла. Шаблоны окантовываются в спецформат С комментариев
где раздел (section) может быть file-header
, file-production
, file-tail
, enumeration-production
, value-header
, value-production
, value-tail
иликомментарием
.
--help
Напечатать короткое описание и выйти.
--version
Напечатать версию и выйти.
Производимые текстовые подстановки
Определённые ключевые слова окантованные в символы @ будут заменены в итоговом тексте. Для демонстрации подстановки ключевых слов ниже, принят следующий пример перечисления:
@EnumName@
Имя перечисления обрабатываемого в текущий момент, имена перечислений подразумевают правильное пространство имён и используют смешанный регистр для разделения слов в имени (например PrefixTheXEnum).
@enum_name@
Имя перечисления состоящее из слов в нижнем регистре разделённых символом подчеркивания (например prefix_the_xenum).
@ENUMNAME@
Имя перечисления состоящее из слов в верхнем регистре и разделённых символом подчеркивания (например PREFIX_THE_XENUM).
@ENUMSHORT@
Имя перечисления состоящее из слов в верхнем регистре и разделённых символом подчёркивания, с удалением префикса (например THE_XENUM).
@VALUENAME@
Названия значений перечислений обрабатываемых в текущий момент со словами в верхнем регистре разделёнными символом подчёркивания, это принятое буквальное обозначение значений перечисления в исходниках C (например PREFIX_THE_XVALUE).
@valuenick@
Псевдоним для значения перечисления обрабатываемого в данный момент, обычно генерируется пропуском основных префиксных слов всех значений текущего перечисления, слова в нижнем регистре и разделены знаком минус (например the-xvalue).
@type@
Заменяется либо "enum" либо "flags", в зависимости от того имеет ли значение перечисления определённые операторы побитного смещения или нет (например flags).
@Type@
Тоже самое как @type@
с первой заглавной буквой (например Flags).
@TYPE@
Тоже самое как @type@
только в верхнем регистре (например FLAGS).
@filename@
Имя текущего обрабатываемого файла (например foo.h).
Trigraph расширения
Некоторые C комментарии обрабатываются по особенному в анализируемом определении перечисления, Каждый комментарий начинается последовательностью трёх символов /*<
и заканчивается последовательностью трёх символов >*/
. В определении перечисления, могут быть определены опции "skip" и "flags", указывающие что это определение перечисления будет пропущено, или будет обработано как флаговое определение, либо для определения основных префиксов пропускаемых во всех значениях для генерации псевдонимов значений, соответственно. Опция "lowercase_name" может быть использована для определения разделителя слов используемого в функциях *_get_type(). Например, /*< lowercase_name=gnome_vfs_uri_hide_options >*/.
В определении значения, могут поддерживаться опции "skip" и "nick". Первая послужит причиной для пропуска значения, а вторая может использоваться для автоматической генерации псевдонима. Например:
Смотрите также
glib-genmarshal(1)
Last updated
Was this helpful?