这是 glib-genmarshal 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
glib-genmarshal - 用于 GLib 闭包的 C 代码编组器生成实用程序
概要
油腔滑调的元帅 [选项...] [文件...]
商品描述
油腔滑调的元帅 是一个小实用程序,它为回调生成 C 代码编组器
GLib 的 GObject 子库中 GClosure 机制的功能。 元帅
函数有一个标准签名,它们在调用闭包中传递,一个数组
值结构保存回调函数参数和值结构
回调的返回值。 然后编组器负责调用相应的 C
具有堆栈上所有参数的闭包的代码函数并收集其
返回值。
油腔滑调的元帅 将要生成的编组器列表作为输入。 编组器列表是
从标准输入或从作为附加参数传递的文件中读取
命令行。
马歇尔 名单 格式
编组器列表是逐行处理的,一行可以包含以下形式的注释
of
或格式的编组器规范
类型:P型
类型:P型,P型
类型:P型,P型,P型
(最多16个 P型s 可能存在)。
- 类型 部分指定回调的返回类型和 P型对结肠的权利
指定回调的参数列表,除了第一个和最后一个参数
总是指针。
产品型号 类型
目前,支持以下类型:
VOID
表示没有返回类型,或者没有额外的参数。 如果 VOID 用作参数
列表,可以不存在附加参数。
布尔
对于布尔类型 (gboolean)
CHAR
对于有符号字符类型 (gchar)
乌卡
对于无符号字符类型 (guchar)
INT
对于有符号整数类型 (gint)
联合会
对于无符号整数类型 (guint)
长
对于有符号长整数类型 (glong)
乌龙
对于无符号长整数类型 (gulong)
INT64
对于有符号的 64 位整数类型 (gint64)
整数 64
对于无符号 64 位整数类型 (guint64)
枚举
对于枚举类型(gint)
旗帜
对于标志枚举类型(guint)
FLOAT
对于单精度浮点类型 (gfloat)
双盒套装
对于双精度浮点类型 (gdouble)
STRING
对于字符串类型 (gchar*)
盒装
用于盒装(匿名但引用计数)类型 (GBoxed*)
参数
用于 GParamSpec 或派生类型 (GParamSpec*)
指针
对于匿名指针类型(gpointer)
宾语
用于 GObject 或派生类型 (GObject*)
变体
对于 GVariant 类型 (GVariant*)
没有
不推荐使用的别名 VOID
BOOL
不推荐使用的别名 布尔
配置
--标题
生成编组器的头文件内容。
- 身体
生成编组器的 C 代码文件内容。
--前缀=字首
指定编组器前缀。 默认前缀是`g_cclosure_marshal'。
--跳过源
在生成的注释中跳过源位置注释。
--标准
使用 GObject 库的标准编组器,并将 gmarshal.h 包含在
生成的头文件。
--nostdinc
不要使用 GObject 库的标准编组器,并跳过 gmarshal.h
在生成的头文件中包含指令。
- 内部的
使用 G_GNUC_INTERNAL 将生成的函数标记为内部函数。
--valist-marshallers
生成 valist marshaller,与 g_signal_set_va_marshaller() 一起使用。
-v, - 版
打印版本信息。
--g-致命警告
使警告致命,即一旦出现警告立即退出。
-h, - 帮帮我
打印简要帮助并退出。
-v, - 版
打印版本并退出。
例
为以下回调函数生成编组器:
void foo(gpointer data1,
gpointer 数据2);
空栏(gpointer data1,
金特参数1,
gpointer 数据2);
gfloat baz(g指针数据1,
布尔参数1,
guchar 参数2,
gpointer 数据2);
marshaller.list 文件必须如下所示:
无效:无效
无效:INT
浮点数:布尔值,UCHAR
你像这样调用 glib-genmarshal:
glib-genmarshal --header 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; 关于创建信号的论点:
GClsure *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);
使用 onworks.net 服务在线使用 glib-genmarshal