The basics
Module basics
The most minimal working Pyd module looks something like this:
import pyd.pyd; extern (C) void PydMain() { module_init(); }
The first line imports Pyd:
import pyd.pyd;
The pyd
module in the pyd
package publicly imports all of the other components of Pyd.
The PydMain
function is called when the module is imported by Python. You will call most of Pyd's API from here. At the very least, PydMain
must contain a call to module_init
. The module_init
function has the following form:
PyObject* module_init(char[] docstring="");
It does little more than call Py_InitModule and return the new module object. This object is also available via the Pyd_Module_p
property once you've called module_init
.
Due to the way in which Pyd implements function and class wrapping, any calls to def
must occur before the call to module_init
, and any calls to wrap_class
must occur after the call. I know this seems like a rather arbitrary rule, but it is important. Calls to def
in the wrong place will simply be ignored, and calls to wrap_class
in the wrong place will throw an assert.
PydMain
will catch any D exception that is thrown from inside it, and safely pass that exception to Python.