PyMODINIT_FUNC initrtaudio(void) { PyEval_InitThreads(); import_libnumarray(); import_libnumeric(); PyObject* module; if (PyType_Ready(&RtAudio_type) < 0) return; module = Py_InitModule3("rtaudio", rtaudio_methods, "RtAudio wrapper."); PyRTAUDIO_SINT8 = PyLong_FromUnsignedLong(RTAUDIO_SINT8); PyModule_AddObject(module, "RTAUDIO_SINT8", PyRTAUDIO_SINT8); Py_INCREF(PyRTAUDIO_SINT8); PyRTAUDIO_SINT16 = PyLong_FromUnsignedLong(RTAUDIO_SINT16); PyModule_AddObject(module, "RTAUDIO_SINT16", PyRTAUDIO_SINT16); Py_INCREF(PyRTAUDIO_SINT16); PyRTAUDIO_SINT24 = PyLong_FromUnsignedLong(RTAUDIO_SINT24); PyModule_AddObject(module, "RTAUDIO_SINT24", PyRTAUDIO_SINT24); Py_INCREF(PyRTAUDIO_SINT24); PyRTAUDIO_SINT32 = PyLong_FromUnsignedLong(RTAUDIO_SINT32); PyModule_AddObject(module, "RTAUDIO_SINT32", PyRTAUDIO_SINT32); Py_INCREF(PyRTAUDIO_SINT32); PyRTAUDIO_FLOAT32 = PyLong_FromUnsignedLong(RTAUDIO_FLOAT32); PyModule_AddObject(module, "RTAUDIO_FLOAT32", PyRTAUDIO_FLOAT32); Py_INCREF(PyRTAUDIO_FLOAT32); PyRTAUDIO_FLOAT64 = PyLong_FromUnsignedLong(RTAUDIO_FLOAT64); PyModule_AddObject(module, "RTAUDIO_FLOAT64", PyRTAUDIO_FLOAT64); Py_INCREF(PyRTAUDIO_FLOAT64); Py_INCREF(&RtAudio_type); PyModule_AddObject(module, "RtAudio", (PyObject *)&RtAudio_type); RtAudioError = PyErr_NewException("rtaudio.RtError", NULL, NULL); PyModule_AddObject(module, "RtError", RtAudioError); Py_INCREF(RtAudioError); }
/** * Start up the Python interpreter if needed, importing all necessary stuff. */ void interpreter_initialize() { if (!interpreter.initialized) { void *handle; void (*f)(); dlopen_python_hack(); /* necessary evil :( */ Py_Initialize(); if (!interpreter.array_imported) { #ifdef NUMERIC import_array(); #endif #ifdef NUMARRAY import_libnumarray(); import_libnumeric(); #endif #ifdef NUMPY import_array(); #endif } interpreter.initialized = 1; } }