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