[英]Parse C header file to generate files
我正在將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
,這是因為我無法在需要部分函數模板專門化的調用中合並它們。
是否有工具可以實現這一目標?
node.js似乎是谷歌Chrome使用的V8 Javascript引擎的Javascript實現。 你想要創建的是GTK的一個新的javascript綁定,這應該使用GObject-introspection工作來完成,而不是手動綁定每個函數。
看看Gjs和Seed官方Javascript綁定為GTK做了些什么。
不確定是否有特定的工具,但是您應該可以使用REGEX快速啟動解析器。 BOOST正則表達式非常容易理解,應該可以迅速帶您到那里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.