簡體   English   中英

解析C頭文件以生成文件

[英]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_METHODGETTER_METHOD ,這是因為我無法在需要部分函數模板專門化的調用中合並它們。

是否有工具可以實現這一目標?

node.js似乎是谷歌Chrome使用的V8 Javascript引擎的Javascript實現。 你想要創建的是GTK的一個新的javascript綁定,這應該使用GObject-introspection工作來完成,而不是手動綁定每個函數。

看看GjsSeed官方Javascript綁定為GTK做了些什么。

不確定是否有特定的工具,但是您應該可以使用REGEX快速啟動解析器。 BOOST正則表達式非常容易理解,應該可以迅速帶您到那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM