238
PyInit__dbus_bindings(void)
237
240
init_dbus_bindings(void)
239
PyObject *this_module, *c_api;
243
PyObject *this_module = NULL, *c_api;
240
244
static const int API_count = DBUS_BINDINGS_API_COUNT;
241
245
static _dbus_py_func_ptr dbus_bindings_API[DBUS_BINDINGS_API_COUNT];
248
static struct PyModuleDef moduledef = {
249
PyModuleDef_HEAD_INIT,
250
"_dbus_bindings", /* m_name */
251
module_doc, /* m_doc */
253
module_functions, /* m_methods */
255
NULL, /* m_traverse */
243
261
dbus_bindings_API[0] = (_dbus_py_func_ptr)&API_count;
244
262
dbus_bindings_API[1] = (_dbus_py_func_ptr)DBusPyConnection_BorrowDBusConnection;
245
263
dbus_bindings_API[2] = (_dbus_py_func_ptr)DBusPyNativeMainLoop_New4;
247
265
default_main_loop = NULL;
249
/* I'd rather not initialize threads if we can help it - dbus-python and
250
pygobject both release and re-obtain the GIL on a regular basis, which is
251
much simpler (basically free) before threads are initialized.
253
However, on Python < 2.4.2c1 you aren't allowed to call
254
PyGILState_Release without initializing threads first. */
255
if (strcmp(Py_GetVersion(), "2.4.2c1") < 0) {
256
PyEval_InitThreads();
259
if (!dbus_py_init_generic()) return;
260
if (!dbus_py_init_abstract()) return;
261
if (!dbus_py_init_signature()) return;
262
if (!dbus_py_init_int_types()) return;
263
if (!dbus_py_init_unixfd_type()) return;
264
if (!dbus_py_init_string_types()) return;
265
if (!dbus_py_init_float_types()) return;
266
if (!dbus_py_init_container_types()) return;
267
if (!dbus_py_init_byte_types()) return;
268
if (!dbus_py_init_message_types()) return;
269
if (!dbus_py_init_pending_call()) return;
270
if (!dbus_py_init_mainloop()) return;
271
if (!dbus_py_init_libdbus_conn_types()) return;
272
if (!dbus_py_init_conn_types()) return;
273
if (!dbus_py_init_server_types()) return;
275
this_module = Py_InitModule3("_dbus_bindings", module_functions, module_doc);
276
if (!this_module) return;
278
if (!dbus_py_insert_abstract_types(this_module)) return;
279
if (!dbus_py_insert_signature(this_module)) return;
280
if (!dbus_py_insert_int_types(this_module)) return;
281
if (!dbus_py_insert_unixfd_type(this_module)) return;
282
if (!dbus_py_insert_string_types(this_module)) return;
283
if (!dbus_py_insert_float_types(this_module)) return;
284
if (!dbus_py_insert_container_types(this_module)) return;
285
if (!dbus_py_insert_byte_types(this_module)) return;
286
if (!dbus_py_insert_message_types(this_module)) return;
287
if (!dbus_py_insert_pending_call(this_module)) return;
288
if (!dbus_py_insert_mainloop_types(this_module)) return;
289
if (!dbus_py_insert_libdbus_conn_types(this_module)) return;
290
if (!dbus_py_insert_conn_types(this_module)) return;
291
if (!dbus_py_insert_server_types(this_module)) return;
267
if (!dbus_py_init_generic()) goto init_error;
268
if (!dbus_py_init_abstract()) goto init_error;
269
if (!dbus_py_init_signature()) goto init_error;
270
if (!dbus_py_init_int_types()) goto init_error;
271
if (!dbus_py_init_unixfd_type()) goto init_error;
272
if (!dbus_py_init_string_types()) goto init_error;
273
if (!dbus_py_init_float_types()) goto init_error;
274
if (!dbus_py_init_container_types()) goto init_error;
275
if (!dbus_py_init_byte_types()) goto init_error;
276
if (!dbus_py_init_message_types()) goto init_error;
277
if (!dbus_py_init_pending_call()) goto init_error;
278
if (!dbus_py_init_mainloop()) goto init_error;
279
if (!dbus_py_init_libdbus_conn_types()) goto init_error;
280
if (!dbus_py_init_conn_types()) goto init_error;
281
if (!dbus_py_init_server_types()) goto init_error;
284
this_module = PyModule_Create(&moduledef);
286
this_module = Py_InitModule3("_dbus_bindings",
287
module_functions, module_doc);
289
if (!this_module) goto init_error;
291
if (!dbus_py_insert_abstract_types(this_module)) goto init_error;
292
if (!dbus_py_insert_signature(this_module)) goto init_error;
293
if (!dbus_py_insert_int_types(this_module)) goto init_error;
294
if (!dbus_py_insert_unixfd_type(this_module)) goto init_error;
295
if (!dbus_py_insert_string_types(this_module)) goto init_error;
296
if (!dbus_py_insert_float_types(this_module)) goto init_error;
297
if (!dbus_py_insert_container_types(this_module)) goto init_error;
298
if (!dbus_py_insert_byte_types(this_module)) goto init_error;
299
if (!dbus_py_insert_message_types(this_module)) goto init_error;
300
if (!dbus_py_insert_pending_call(this_module)) goto init_error;
301
if (!dbus_py_insert_mainloop_types(this_module)) goto init_error;
302
if (!dbus_py_insert_libdbus_conn_types(this_module)) goto init_error;
303
if (!dbus_py_insert_conn_types(this_module)) goto init_error;
304
if (!dbus_py_insert_server_types(this_module)) goto init_error;
293
306
if (PyModule_AddStringConstant(this_module, "BUS_DAEMON_NAME",
294
DBUS_SERVICE_DBUS) < 0) return;
307
DBUS_SERVICE_DBUS) < 0) goto init_error;
295
308
if (PyModule_AddStringConstant(this_module, "BUS_DAEMON_PATH",
296
DBUS_PATH_DBUS) < 0) return;
309
DBUS_PATH_DBUS) < 0) goto init_error;
297
310
if (PyModule_AddStringConstant(this_module, "BUS_DAEMON_IFACE",
298
DBUS_INTERFACE_DBUS) < 0) return;
311
DBUS_INTERFACE_DBUS) < 0) goto init_error;
299
312
if (PyModule_AddStringConstant(this_module, "LOCAL_PATH",
300
DBUS_PATH_LOCAL) < 0) return;
313
DBUS_PATH_LOCAL) < 0) goto init_error;
301
314
if (PyModule_AddStringConstant(this_module, "LOCAL_IFACE",
302
DBUS_INTERFACE_LOCAL) < 0) return;
315
DBUS_INTERFACE_LOCAL) < 0) goto init_error;
303
316
if (PyModule_AddStringConstant(this_module, "INTROSPECTABLE_IFACE",
304
DBUS_INTERFACE_INTROSPECTABLE) < 0) return;
317
DBUS_INTERFACE_INTROSPECTABLE) < 0)
305
319
if (PyModule_AddStringConstant(this_module, "PEER_IFACE",
306
DBUS_INTERFACE_PEER) < 0) return;
320
DBUS_INTERFACE_PEER) < 0) goto init_error;
307
321
if (PyModule_AddStringConstant(this_module, "PROPERTIES_IFACE",
308
DBUS_INTERFACE_PROPERTIES) < 0) return;
322
DBUS_INTERFACE_PROPERTIES) < 0)
309
324
if (PyModule_AddStringConstant(this_module,
310
325
"DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER",
311
DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER) < 0) return;
326
DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER) < 0)
312
328
if (PyModule_AddStringConstant(this_module,
313
329
"DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER",
314
DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER) < 0) return;
330
DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER) < 0)
315
332
if (PyModule_AddStringConstant(this_module,
316
333
"DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE",
317
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE) < 0) return;
334
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE) < 0)
319
337
#define ADD_CONST_VAL(x, v) \
320
if (PyModule_AddIntConstant(this_module, x, v) < 0) return;
338
if (PyModule_AddIntConstant(this_module, x, v) < 0) goto init_error;
321
339
#define ADD_CONST_PREFIXED(x) ADD_CONST_VAL(#x, DBUS_##x)
322
340
#define ADD_CONST(x) ADD_CONST_VAL(#x, x)