Parse C заголовочный файл для генерации файлов - PullRequest
1 голос
/ 13 октября 2011

Я работаю над переносом 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, потому что я не могу объединить их в одном вызове, который требует частичной специализации шаблона функции.

Есть ли инструмент для достижения этой цели?

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

node.js представляется реализацией Javascript движка Javascript V8 , используемого Google Chrome. То, что вы хотите создать, это новая привязка javascript для GTK, и это должно быть сделано с помощью работы GObject-introspection, а не привязки каждой функции вручную.

Посмотрите, что было сделано для Gjs и Seed official Привязки Javascript для GTK .

0 голосов
/ 13 октября 2011

Не уверен, что есть какой-то конкретный инструмент, но вы должны быть в состоянии быстро создать парсер с помощью REGEX.BOOST regex довольно прост для понимания и поможет вам быстро туда добраться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...