Type conversion

Pyd provides a series of template functions for converting types to and from Python. Template arguments are in boldface, function arguments are in italics.

PyObject* _py(T) (T t);
Converts D item t of type T to a PyObject. The returned pointer is a new, owned reference. The following conversions are possible:
D type Python type
bool bool
C_long (usually int) int
C_longlong (usually long) long
double float
idouble, cdouble complex
char[] (as ASCII string) str
dynamic array list
associative array dict
delegate or function pointer A callable object
A wrapped class The wrapped type
A wrapped struct The wrapped type
Pointer-to-wrapped-struct The wrapped type
PydObject The wrapped object's type
PyObject* The object's type
This function will set a Python RuntimeError and return null if the conversion is not possible.
PydObject py(T) (T t);
Converts D item t of type T to a PyObject with the _py function (above), and returns a PydObject wrapping that PyObject. This will throw a wrapped Python RuntimeError if the conversion is not possible.
T d_type(T) (PyObject* o);
Attempts to convert Python object o to the D type T. Note that this means you must call this function with both the template and function arguments. The following conversions are possible:
Python type D type
Any type PyObject*
Any type PydObject
Wrapped struct Wrapped struct
Wrapped struct Pointer to wrapped struct
Wrapped class Wrapped class
Any callable delegate
Any iterable dynamic array
str char[]
complex cdouble
float double
long C_longlong (usually long)
int C_long (usually int)
bool bool
This function will throw a PydConversionException if the conversion is not possible.