Це команда glib-genmarshal, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн емулятор Windows або онлайн емулятор MAC OS
ПРОГРАМА:
ІМ'Я
glib-genmarshal - утиліта генерації коду C для замикань GLib
СИНТАКСИС
гліб-генмаршал [ВАРІАНТ...] [ФАЙЛ...]
ОПИС
гліб-генмаршал це невелика утиліта, яка генерує розпорядники коду C для зворотного виклику
функції механізму GClosure у підбібліотеці GObject GLib. Розпорядник
функції мають стандартну сигнатуру, вони передаються при закритті, що викликає, масив
структури значень, що містять параметри функції зворотного виклику, і структуру значень для
повертає значення зворотного виклику. Потім розпорядник несе відповідальність за викликом відповідного C
код функції закриття з усіма параметрами в стеку і зібрати його
повертається значення.
гліб-генмаршал приймає список розпорядників для створення в якості вхідних даних. Список розпорядників є
або читати зі стандартного введення, або з файлів, які передаються як додаткові аргументи на
command line.
Маршаллер список формат
Списки розпорядників обробляються по рядку, рядок може містити коментар у формі
of
або специфікацію форми
RTYPE:PTYPE
RTYPE:PTYPE,PTYPE
RTYPE:PTYPE,PTYPE,PTYPE
(до 16 PTYPEs може бути присутнім).
Команда RTYPE частина визначає тип повернення зворотного виклику та PTYPEсправа до товстої кишки
вкажіть список параметрів зворотного виклику, за винятком першого та останнього аргументів, які
завжди є вказівниками.
Параметр Типи
На даний момент підтримуються такі типи:
VOID
вказує відсутність типу повернення або відсутність додаткових параметрів. Якщо VOID використовується як параметр
список, додаткові параметри можуть бути присутніми.
BOOLEAN
для логічних типів (gboolean)
CHAR
для типів підписаних символів (gchar)
УЧАР
для непідписаних типів символів (guchar)
INT
для цілих типів зі знаком (gint)
UINT
для цілих типів без знака (guint)
ДОВГО
для довгих цілих типів зі знаком (glong)
ULONG
для довгих цілих типів без знака (gulong)
INT64
для 64-розрядних цілих типів зі знаком (gint64)
UINT64
для 64-розрядних цілих типів без знака (guint64)
ЕНУМ
для типів перерахування (gint)
ФЛАГИ
для типів перерахування прапорів (guint)
ПЛОС
для одноточних типів float (gfloat)
ПОДВІЙНИЙ
для типів float подвійної точності (gdouble)
STRING
для типів рядків (gchar*)
У КОРОБКІ
для коробкових (анонімних, але врахованих посилань) типів (GBoxed*)
ПАРАМ
для GParamSpec або похідних типів (GParamSpec*)
Вказівник
для анонімних типів покажчиків (gpointer)
ОБ'ЄКТ
для GObject або похідних типів (GObject*)
ВАРІАНТ
для типів GVariant (GVariant*)
NONE
застарілий псевдонім для VOID
BOOL
застарілий псевдонім для BOOLEAN
ВАРІАНТИ
--заголовок
Згенеруйте вміст файлу заголовка маршалерів.
-- тіло
Згенеруйте вміст файлу коду C маршалерів.
--префікс=ПРЕФІКС
Вкажіть префікс маршаллера. Префікс за замовчуванням – `g_cclosure_marshal'.
--skip-source
Пропускати зауваження про місцезнаходження джерела в створених коментарях.
--stdinc
Використовуйте стандартні розпорядники бібліотеки GObject і включіть gmarshal.h
створені заголовні файли.
--nostdinc
Не використовуйте стандартні розпорядники бібліотеки GObject і пропустіть gmarshal.h
включати директиву в згенеровані заголовні файли.
-- внутрішній
Позначте згенеровані функції як внутрішні, використовуючи G_GNUC_INTERNAL.
--валісти-маршали
Створити валіст-маршалери для використання з g_signal_set_va_marshaller().
-v, -- версія
Інформація про версію для друку.
--g-фатальні-попередження
Зробіть попередження фатальними, тобто негайно вийдіть з попередження.
-h, --допомога
Надрукуйте коротку довідку та вийдіть.
-v, -- версія
Роздрукувати версію та вийти.
приклад
Щоб створити маршалери для таких функцій зворотного виклику:
void foo (gpointer data1,
дані gpointer2);
панель пустої (gpointer data1,
gint param1,
дані gpointer2);
gfloat baz (gpointer data1,
gboolean param1,
guchar param2,
дані gpointer2);
Файл marshaller.list має виглядати так:
VOID: VOID
VOID:INT
FLOAT:BOOLEAN,UCHAR
і ви називаєте glib-genmarshal так:
glib-genmarshal --заголовок marshaller.list > marshaller.h
glib-genmarshal --body marshaller.list > marshaller.c
Згенеровані розпорядники мають аргументи, закодовані в імені функції. Для цього
окремий список, вони є
g_cclosure_user_marshal_VOID__VOID(),
g_cclosure_user_marshal_VOID__INT(),
g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR().
Їх можна використовувати безпосередньо для GClosures або передавати як GSignalCMarshaller
c_marshaller; аргумент при створенні сигналів:
GClosure *cc_foo, *cc_bar, *cc_baz;
cc_foo = g_cclosure_new (NULL, foo, NULL);
g_closure_set_marshal (cc_foo, g_cclosure_user_marshal_VOID__VOID);
cc_bar = g_cclosure_new (NULL, бар, NULL);
g_closure_set_marshal (cc_bar, g_cclosure_user_marshal_VOID__INT);
cc_baz = g_cclosure_new (NULL, baz, NULL);
g_closure_set_marshal (cc_baz, g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR);
Використовуйте glib-genmarshal онлайн за допомогою служб onworks.net