我正在努力将GTK +移植到node.js,一个难点是将GTK +函数转换为相应的C ++调用。例如,
void gtk_window_set_title (GtkWindow *window,
const gchar *title);
G_CONST_RETURN gchar *gtk_window_get_title (GtkWindow *window);
void gtk_window_set_role (GtkWindow *window,
const gchar *role);
void gtk_window_set_startup_id (GtkWindow *window,
const gchar *startup_id);
G_CONST_RETURN gchar *gtk_window_get_role (GtkWindow *window);
将转换为:
SETTER_METHOD (Window , "setTitle" , gtk_window_set_title , const gchar*) ;
GETTER_METHOD (Window , "getTitle" , gtk_window_get_title , const gchar*) ;
SETTER_METHOD (Window , "setRole" , gtk_window_set_role , const gchar*) ;
SETTER_METHOD (Window , "setStartupId" , gtk_window_set_startup_id , const gchar*) ;
GETTER_METHOD (Window , "getRole" , gtk_window_get_role , const gchar*) ;
所以1)我必须在新的宏调用中保留C声明的参数(实际上,它们将扩展为模板参数)。并且2)函数返回一些东西并且那些返回什么都必须被区分,它们将被称为SETTER_METHOD
或GETTER_METHOD
,这是因为我不能在一个需要部分函数模板特化的调用中合并它们。
有没有工具来实现这一目标?
答案 0 :(得分:3)
node.js似乎是Google Chrome使用的V8 Javascript引擎的Javascript实现。您想要创建的是GTK的新javascript绑定,这应该使用GObject-introspection工作完成,而不是手动绑定每个函数。
了解Gjs和Seed官方Javascript bindings for GTK所做的工作。
答案 1 :(得分:0)
不确定是否有特定工具,但您应该能够使用REGEX启动快速解析器。 BOOST正则表达式很容易理解,应该很快就能帮助你。