glib-genmarshal
Утилита генерирующая C код маршаллера для GLib замыканий
Краткое описание
glib-genmarshal
[options...] [files...]
Описание
glib-genmarshal это маленькая утилита которая генерирует C код маршаллеров для callback-функций GClosure механизма в библиотеке GObject входящей в состав GLib. Функции маршаллеры имеют стандартную сигнатуру, их помещают в вызов замыкания, массив структур значений содержит параметры callback-функций и структуру значения для возвращаемого значения callback-функции. Маршаллер отвечает за вызов соответствующего функционального C кода замыкания, со всеми параметрами в стеке, и накапливает возвращаемые значения.
Invocation
glib-genmarshal принимает список маршаллеров для генерации ввода. Список маршаллеров читается либо из стандартного ввода либо из файлов помещаемых как дополнительный аргумент в командной строке.
Опции
--header
Генерировать содержимое заголовочного файла маршаллера.
--body
Генерировать C код файла содержащего маршаллер.
--prefix=string
, --prefix string
Определить префикс маршаллера. По умолчанию префикс `g_cclosure_marshal'
.
--skip-source
Пропустить исходное расположение замечаний в генерируемых комментариях.
--nostdinc
Не использовать стандартный маршаллер библиотеки GObject, и пропустить включённые директивы gmarshal.h
в генерируемом заголовочном файле.
--g-fatal-warnings
Сделать предупреждения фатальными, то есть немедленно выходить из программы если получено предупреждение.
-h
, --help
Напечатать краткое описание и выйти.
-v
, --version
Напечатать версию и выйти.
Формат списка маршаллеров
Списки маршаллеров обрабатываются построчно, строка может содержать комментарий в форме
или спецификацию маршаллера в форме
(может присутствовать до 16 PTYPE
).
RTYPE
часть определяет возвращаемый тип callback-функции, а PTYPE
отделённый справа двоеточием список параметров callback-функции, за исключением первого и последнего параметра которые всегда являются указателями.
Типовые параметры
В настоящее время поддерживаются следующие типы:
VOID
указывает что нет возвращаемого типа, или что отсутствуют дополнительные параметры. Если VOID
используется как список параметров, дополнительные параметры не могут присутствовать.
BOOLEAN
для логических типов (gboolean)
CHAR
для символьного типа со знаком (gchar)
UCHAR
для типа unsigned char (guchar)
INT
для типа signed integer (gint)
UINT
для типа unsigned integer (guint)
LONG
для типа signed long integer (glong)
ULONG
для типа unsigned long integer (gulong)
INT64
для типа signed 64bit integer (gint64)
UINT64
для типа unsigned 64bit integer (guint64)
ENUM
для перечислимого типа (gint)
FLAGS
для типа flag enumeration (guint)
FLOAT
для типа single-precision float (gfloat)
DOUBLE
для типа double-precision float (gdouble)
STRING
для строкового типа (gchar*)
BOXED
для типа boxed (анонимный но с подсчётом ссылок) (GBoxed*)
PARAM
для типа GParamSpec или производного (GParamSpec*)
POINTER
для типа anonymous pointer (gpointer)
OBJECT
для типа GObject или производного (GObject*)
NONE
устаревший псевдоним для VOID
BOOL
устаревший псевдоним для BOOLEAN
Пример
Генерация маршаллеров для следующих callback-функций:
Список маршаллеров будет выглядеть так:
Генерируемые маршаллеры имеют параметры закодированные в имени их функции. Для этого специфичного списка они будут
Они могут использоваться непосредственно для GClosures или будут помещены как GSignalCMarshaller c_marshaller параметр; после создания сигналов:
Смотрите также
glib-mkenums(1)
Ошибки
Нет известных ошибок.
Автор
Last updated
Was this helpful?