static PyObject * python_api_win_create(PyObject *self, PyObject *args) { PyObject *tag = NULL; PyObject *p_callback = NULL; if (!PyArg_ParseTuple(args, "OO", &tag, &p_callback)) { Py_RETURN_NONE; } char *tag_str = python_str_or_unicode_to_string(tag); char *plugin_name = _python_plugin_name(); if (p_callback && PyCallable_Check(p_callback)) { allow_python_threads(); api_win_create(plugin_name, tag_str, p_callback, python_window_callback, NULL); free(tag_str); disable_python_threads(); } free(plugin_name); Py_RETURN_NONE; }
static void c_api_win_create(const char *filename, char *tag, void(*callback)(char *tag, char *line)) { char *plugin_name = _c_plugin_name(filename); WindowWrapper *wrapper = malloc(sizeof(WindowWrapper)); wrapper->func = callback; api_win_create(plugin_name, tag, wrapper, c_window_callback, free); free(plugin_name); }