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
Выводить текст после перемещения через все значения перечисления.
--commentstext
Шаблон для автоматической генерации комментариев, по умолчанию (для генерации C кода) это "/* @comment@ */".
--templatefile
Читать шаблон из полученного файла. Шаблоны окантовываются в спецформат С комментариев
где раздел (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?