blob: 002fdf74938f3226163710f578d9a2d1c1ccb918 [file] [log] [blame]
Fred Drake6659c301998-03-03 22:02:19 +00001\documentclass{manual}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00002
Guido van Rossumd358afe1998-12-23 05:02:08 +00003% XXX PM explain how to add new types to Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +00004
Guido van Rossum6938f061994-08-01 12:22:53 +00005\title{Extending and Embedding the Python Interpreter}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00006
Guido van Rossum16cd7f91994-10-06 10:29:26 +00007\input{boilerplate}
Guido van Rossum83eb9621993-11-23 16:28:45 +00008
Guido van Rossum7a2dba21993-11-05 14:45:11 +00009% Tell \index to actually write the .idx file
10\makeindex
11
12\begin{document}
13
Guido van Rossum7a2dba21993-11-05 14:45:11 +000014\maketitle
15
Fred Drake9f86b661998-07-28 21:55:19 +000016\ifhtml
17\chapter*{Front Matter\label{front}}
18\fi
19
Guido van Rossum16cd7f91994-10-06 10:29:26 +000020\input{copyright}
21
Fred Drake33698f81999-02-16 23:06:32 +000022%begin{latexonly}
23\vspace{1in}
24%end{latexonly}
25\strong{\large Acknowledgements}
26
27% XXX This needs to be checked and updated manually before each
28% release.
29
30The following people have contributed sections to this document: Jim
31Fulton, Konrad Hinsen, Chris Phoenix, and Neil Schemenauer.
32
Guido van Rossum7a2dba21993-11-05 14:45:11 +000033\begin{abstract}
34
35\noindent
Guido van Rossumb92112d1995-03-20 14:24:09 +000036Python is an interpreted, object-oriented programming language. This
Fred Drakeec9fbe91999-02-15 16:20:25 +000037document describes how to write modules in C or \Cpp{} to extend the
Guido van Rossumb92112d1995-03-20 14:24:09 +000038Python interpreter with new modules. Those modules can define new
39functions but also new object types and their methods. The document
40also describes how to embed the Python interpreter in another
41application, for use as an extension language. Finally, it shows how
42to compile and link extension modules so that they can be loaded
43dynamically (at run time) into the interpreter, if the underlying
44operating system supports this feature.
45
46This document assumes basic knowledge about Python. For an informal
Fred Drake9fa76f11999-11-10 16:01:43 +000047introduction to the language, see the
48\citetitle[../tut/tut.html]{Python Tutorial}. The
49\citetitle[../ref/ref.html]{Python Reference Manual} gives a more
50formal definition of the language. The
51\citetitle[../lib/lib.html]{Python Library Reference} documents the
52existing object types, functions and modules (both built-in and
53written in Python) that give the language its wide application range.
Guido van Rossum7a2dba21993-11-05 14:45:11 +000054
Fred Drakeec9fbe91999-02-15 16:20:25 +000055For a detailed description of the whole Python/C API, see the separate
Fred Drake9fa76f11999-11-10 16:01:43 +000056\citetitle[../api/api.html]{Python/C API Reference Manual}.
Guido van Rossumfdacc581997-10-07 14:40:16 +000057
Guido van Rossum7a2dba21993-11-05 14:45:11 +000058\end{abstract}
59
Fred Drake4d4f9e71998-01-13 22:25:02 +000060\tableofcontents
Guido van Rossum7a2dba21993-11-05 14:45:11 +000061
Guido van Rossumdb65a6c1993-11-05 17:11:16 +000062
Fred Drake8e015171999-02-17 18:12:14 +000063\chapter{Extending Python with C or \Cpp{} \label{intro}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000064
Guido van Rossum6f0132f1993-11-19 13:13:22 +000065
Guido van Rossumb92112d1995-03-20 14:24:09 +000066It is quite easy to add new built-in modules to Python, if you know
Fred Drakeec9fbe91999-02-15 16:20:25 +000067how to program in C. Such \dfn{extension modules} can do two things
Guido van Rossumb92112d1995-03-20 14:24:09 +000068that can't be done directly in Python: they can implement new built-in
Fred Drakeec9fbe91999-02-15 16:20:25 +000069object types, and they can call C library functions and system calls.
Guido van Rossum6938f061994-08-01 12:22:53 +000070
Guido van Rossum5049bcb1995-03-13 16:55:23 +000071To support extensions, the Python API (Application Programmers
Guido van Rossumb92112d1995-03-20 14:24:09 +000072Interface) defines a set of functions, macros and variables that
73provide access to most aspects of the Python run-time system. The
Fred Drakeec9fbe91999-02-15 16:20:25 +000074Python API is incorporated in a C source file by including the header
Guido van Rossumb92112d1995-03-20 14:24:09 +000075\code{"Python.h"}.
Guido van Rossum6938f061994-08-01 12:22:53 +000076
Guido van Rossumb92112d1995-03-20 14:24:09 +000077The compilation of an extension module depends on its intended use as
Fred Drake54fd8452000-04-03 04:54:28 +000078well as on your system setup; details are given in later chapters.
Guido van Rossum6938f061994-08-01 12:22:53 +000079
Guido van Rossum7a2dba21993-11-05 14:45:11 +000080
Fred Drake5e8aa541998-11-16 18:34:07 +000081\section{A Simple Example
82 \label{simpleExample}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000083
Guido van Rossumb92112d1995-03-20 14:24:09 +000084Let's create an extension module called \samp{spam} (the favorite food
85of Monty Python fans...) and let's say we want to create a Python
Fred Drakeec9fbe91999-02-15 16:20:25 +000086interface to the C library function \cfunction{system()}.\footnote{An
Guido van Rossumb92112d1995-03-20 14:24:09 +000087interface for this function already exists in the standard module
Fred Draked7bb3031998-03-03 17:52:07 +000088\module{os} --- it was chosen as a simple and straightfoward example.}
Guido van Rossumb92112d1995-03-20 14:24:09 +000089This function takes a null-terminated character string as argument and
90returns an integer. We want this function to be callable from Python
91as follows:
92
Fred Drake1e11a5c1998-02-13 07:11:32 +000093\begin{verbatim}
94>>> import spam
95>>> status = spam.system("ls -l")
96\end{verbatim}
97
Fred Drake54fd8452000-04-03 04:54:28 +000098Begin by creating a file \file{spammodule.c}. (Historically, if a
Fred Drakeec9fbe91999-02-15 16:20:25 +000099module is called \samp{spam}, the C file containing its implementation
Guido van Rossumb92112d1995-03-20 14:24:09 +0000100is called \file{spammodule.c}; if the module name is very long, like
101\samp{spammify}, the module name can be just \file{spammify.c}.)
102
103The first line of our file can be:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000104
Fred Drake1e11a5c1998-02-13 07:11:32 +0000105\begin{verbatim}
Fred Drake54fd8452000-04-03 04:54:28 +0000106#include <Python.h>
Fred Drake1e11a5c1998-02-13 07:11:32 +0000107\end{verbatim}
108
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000109which pulls in the Python API (you can add a comment describing the
110purpose of the module and a copyright notice if you like).
111
Guido van Rossumb92112d1995-03-20 14:24:09 +0000112All user-visible symbols defined by \code{"Python.h"} have a prefix of
113\samp{Py} or \samp{PY}, except those defined in standard header files.
114For convenience, and since they are used extensively by the Python
115interpreter, \code{"Python.h"} includes a few standard header files:
116\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
117\code{<stdlib.h>}. If the latter header file does not exist on your
Fred Draked7bb3031998-03-03 17:52:07 +0000118system, it declares the functions \cfunction{malloc()},
119\cfunction{free()} and \cfunction{realloc()} directly.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000120
Fred Drakeec9fbe91999-02-15 16:20:25 +0000121The next thing we add to our module file is the C function that will
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000122be called when the Python expression \samp{spam.system(\var{string})}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000123is evaluated (we'll see shortly how it ends up being called):
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000124
Fred Drake1e11a5c1998-02-13 07:11:32 +0000125\begin{verbatim}
126static PyObject *
127spam_system(self, args)
128 PyObject *self;
129 PyObject *args;
130{
131 char *command;
132 int sts;
Fred Drakea0dbddf1998-04-02 06:50:02 +0000133
Fred Drake1e11a5c1998-02-13 07:11:32 +0000134 if (!PyArg_ParseTuple(args, "s", &command))
135 return NULL;
136 sts = system(command);
137 return Py_BuildValue("i", sts);
138}
139\end{verbatim}
140
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000141There is a straightforward translation from the argument list in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000142Python (e.g.\ the single expression \code{"ls -l"}) to the arguments
Fred Drakeec9fbe91999-02-15 16:20:25 +0000143passed to the C function. The C function always has two arguments,
Guido van Rossumb92112d1995-03-20 14:24:09 +0000144conventionally named \var{self} and \var{args}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000145
Fred Drakeec9fbe91999-02-15 16:20:25 +0000146The \var{self} argument is only used when the C function implements a
Fred Drake9226d8e1999-02-22 14:55:46 +0000147built-in method, not a function. In the example, \var{self} will
148always be a \NULL{} pointer, since we are defining a function, not a
149method. (This is done so that the interpreter doesn't have to
150understand two different types of C functions.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000151
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000152The \var{args} argument will be a pointer to a Python tuple object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000153containing the arguments. Each item of the tuple corresponds to an
154argument in the call's argument list. The arguments are Python
Fred Drakeec9fbe91999-02-15 16:20:25 +0000155objects --- in order to do anything with them in our C function we have
156to convert them to C values. The function \cfunction{PyArg_ParseTuple()}
157in the Python API checks the argument types and converts them to C
Guido van Rossumb92112d1995-03-20 14:24:09 +0000158values. It uses a template string to determine the required types of
Fred Drakeec9fbe91999-02-15 16:20:25 +0000159the arguments as well as the types of the C variables into which to
Guido van Rossumb92112d1995-03-20 14:24:09 +0000160store the converted values. More about this later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000161
Fred Drake3da06a61998-02-26 18:49:12 +0000162\cfunction{PyArg_ParseTuple()} returns true (nonzero) if all arguments have
Guido van Rossumb92112d1995-03-20 14:24:09 +0000163the right type and its components have been stored in the variables
164whose addresses are passed. It returns false (zero) if an invalid
165argument list was passed. In the latter case it also raises an
Fred Drake54fd8452000-04-03 04:54:28 +0000166appropriate exception so the calling function can return
Fred Drake0fd82681998-01-09 05:39:38 +0000167\NULL{} immediately (as we saw in the example).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000168
169
Fred Drake5e8aa541998-11-16 18:34:07 +0000170\section{Intermezzo: Errors and Exceptions
171 \label{errors}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000172
173An important convention throughout the Python interpreter is the
174following: when a function fails, it should set an exception condition
Fred Drake0fd82681998-01-09 05:39:38 +0000175and return an error value (usually a \NULL{} pointer). Exceptions
Guido van Rossumb92112d1995-03-20 14:24:09 +0000176are stored in a static global variable inside the interpreter; if this
Fred Drake0fd82681998-01-09 05:39:38 +0000177variable is \NULL{} no exception has occurred. A second global
Guido van Rossumb92112d1995-03-20 14:24:09 +0000178variable stores the ``associated value'' of the exception (the second
Fred Draked7bb3031998-03-03 17:52:07 +0000179argument to \keyword{raise}). A third variable contains the stack
Guido van Rossumb92112d1995-03-20 14:24:09 +0000180traceback in case the error originated in Python code. These three
Fred Drakeec9fbe91999-02-15 16:20:25 +0000181variables are the C equivalents of the Python variables
Fred Drakef9918f21999-02-05 18:30:49 +0000182\code{sys.exc_type}, \code{sys.exc_value} and \code{sys.exc_traceback} (see
Fred Drake9fa76f11999-11-10 16:01:43 +0000183the section on module \module{sys} in the
184\citetitle[../lib/lib.html]{Python Library Reference}). It is
185important to know about them to understand how errors are passed
186around.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000187
Guido van Rossumb92112d1995-03-20 14:24:09 +0000188The Python API defines a number of functions to set various types of
189exceptions.
190
Fred Draked7bb3031998-03-03 17:52:07 +0000191The most common one is \cfunction{PyErr_SetString()}. Its arguments
Fred Drakeec9fbe91999-02-15 16:20:25 +0000192are an exception object and a C string. The exception object is
Fred Draked7bb3031998-03-03 17:52:07 +0000193usually a predefined object like \cdata{PyExc_ZeroDivisionError}. The
Fred Drakeec9fbe91999-02-15 16:20:25 +0000194C string indicates the cause of the error and is converted to a
Fred Draked7bb3031998-03-03 17:52:07 +0000195Python string object and stored as the ``associated value'' of the
196exception.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000197
Fred Draked7bb3031998-03-03 17:52:07 +0000198Another useful function is \cfunction{PyErr_SetFromErrno()}, which only
Guido van Rossumb92112d1995-03-20 14:24:09 +0000199takes an exception argument and constructs the associated value by
Fred Drake54fd8452000-04-03 04:54:28 +0000200inspection of the global variable \cdata{errno}. The most
Fred Draked7bb3031998-03-03 17:52:07 +0000201general function is \cfunction{PyErr_SetObject()}, which takes two object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000202arguments, the exception and its associated value. You don't need to
Fred Draked7bb3031998-03-03 17:52:07 +0000203\cfunction{Py_INCREF()} the objects passed to any of these functions.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000204
205You can test non-destructively whether an exception has been set with
Fred Draked7bb3031998-03-03 17:52:07 +0000206\cfunction{PyErr_Occurred()}. This returns the current exception object,
Fred Drake0fd82681998-01-09 05:39:38 +0000207or \NULL{} if no exception has occurred. You normally don't need
Fred Draked7bb3031998-03-03 17:52:07 +0000208to call \cfunction{PyErr_Occurred()} to see whether an error occurred in a
Guido van Rossumb92112d1995-03-20 14:24:09 +0000209function call, since you should be able to tell from the return value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000210
Guido van Rossumd16ddb61996-12-13 02:38:17 +0000211When a function \var{f} that calls another function \var{g} detects
Guido van Rossumb92112d1995-03-20 14:24:09 +0000212that the latter fails, \var{f} should itself return an error value
Fred Drake33698f81999-02-16 23:06:32 +0000213(e.g.\ \NULL{} or \code{-1}). It should \emph{not} call one of the
Fred Draked7bb3031998-03-03 17:52:07 +0000214\cfunction{PyErr_*()} functions --- one has already been called by \var{g}.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000215\var{f}'s caller is then supposed to also return an error indication
Fred Draked7bb3031998-03-03 17:52:07 +0000216to \emph{its} caller, again \emph{without} calling \cfunction{PyErr_*()},
Guido van Rossumb92112d1995-03-20 14:24:09 +0000217and so on --- the most detailed cause of the error was already
218reported by the function that first detected it. Once the error
219reaches the Python interpreter's main loop, this aborts the currently
220executing Python code and tries to find an exception handler specified
221by the Python programmer.
Guido van Rossum6938f061994-08-01 12:22:53 +0000222
223(There are situations where a module can actually give a more detailed
Fred Draked7bb3031998-03-03 17:52:07 +0000224error message by calling another \cfunction{PyErr_*()} function, and in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000225such cases it is fine to do so. As a general rule, however, this is
226not necessary, and can cause information about the cause of the error
227to be lost: most operations can fail for a variety of reasons.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000228
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000229To ignore an exception set by a function call that failed, the exception
Fred Draked7bb3031998-03-03 17:52:07 +0000230condition must be cleared explicitly by calling \cfunction{PyErr_Clear()}.
Fred Drakeec9fbe91999-02-15 16:20:25 +0000231The only time C code should call \cfunction{PyErr_Clear()} is if it doesn't
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000232want to pass the error on to the interpreter but wants to handle it
Fred Drake33698f81999-02-16 23:06:32 +0000233completely by itself (e.g.\ by trying something else or pretending
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000234nothing happened).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000235
Fred Drake54fd8452000-04-03 04:54:28 +0000236Every failing \cfunction{malloc()} call must be turned into an
Fred Draked7bb3031998-03-03 17:52:07 +0000237exception --- the direct caller of \cfunction{malloc()} (or
238\cfunction{realloc()}) must call \cfunction{PyErr_NoMemory()} and
239return a failure indicator itself. All the object-creating functions
Fred Drake54fd8452000-04-03 04:54:28 +0000240(for example, \cfunction{PyInt_FromLong()}) already do this, so this
241note is only relevant to those who call \cfunction{malloc()} directly.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000242
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000243Also note that, with the important exception of
Fred Drake3da06a61998-02-26 18:49:12 +0000244\cfunction{PyArg_ParseTuple()} and friends, functions that return an
Guido van Rossumb92112d1995-03-20 14:24:09 +0000245integer status usually return a positive value or zero for success and
246\code{-1} for failure, like \UNIX{} system calls.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000247
Fred Draked7bb3031998-03-03 17:52:07 +0000248Finally, be careful to clean up garbage (by making
249\cfunction{Py_XDECREF()} or \cfunction{Py_DECREF()} calls for objects
250you have already created) when you return an error indicator!
Guido van Rossum6938f061994-08-01 12:22:53 +0000251
252The choice of which exception to raise is entirely yours. There are
Fred Drakeec9fbe91999-02-15 16:20:25 +0000253predeclared C objects corresponding to all built-in Python exceptions,
Fred Drakeabfd7d61999-02-16 17:34:51 +0000254e.g.\ \cdata{PyExc_ZeroDivisionError}, which you can use directly. Of
Guido van Rossumb92112d1995-03-20 14:24:09 +0000255course, you should choose exceptions wisely --- don't use
Fred Draked7bb3031998-03-03 17:52:07 +0000256\cdata{PyExc_TypeError} to mean that a file couldn't be opened (that
257should probably be \cdata{PyExc_IOError}). If something's wrong with
Fred Drake3da06a61998-02-26 18:49:12 +0000258the argument list, the \cfunction{PyArg_ParseTuple()} function usually
Fred Draked7bb3031998-03-03 17:52:07 +0000259raises \cdata{PyExc_TypeError}. If you have an argument whose value
Fred Drakedc12ec81999-03-09 18:36:55 +0000260must be in a particular range or must satisfy other conditions,
Fred Draked7bb3031998-03-03 17:52:07 +0000261\cdata{PyExc_ValueError} is appropriate.
Guido van Rossum6938f061994-08-01 12:22:53 +0000262
263You can also define a new exception that is unique to your module.
264For this, you usually declare a static object variable at the
265beginning of your file, e.g.
266
Fred Drake1e11a5c1998-02-13 07:11:32 +0000267\begin{verbatim}
268static PyObject *SpamError;
269\end{verbatim}
270
Guido van Rossum6938f061994-08-01 12:22:53 +0000271and initialize it in your module's initialization function
Fred Drake33698f81999-02-16 23:06:32 +0000272(\cfunction{initspam()}) with an exception object, e.g.\ (leaving out
Fred Draked7bb3031998-03-03 17:52:07 +0000273the error checking for now):
Guido van Rossum6938f061994-08-01 12:22:53 +0000274
Fred Drake1e11a5c1998-02-13 07:11:32 +0000275\begin{verbatim}
276void
277initspam()
278{
279 PyObject *m, *d;
Fred Drakea0dbddf1998-04-02 06:50:02 +0000280
Fred Drake1e11a5c1998-02-13 07:11:32 +0000281 m = Py_InitModule("spam", SpamMethods);
282 d = PyModule_GetDict(m);
Fred Draked7bb3031998-03-03 17:52:07 +0000283 SpamError = PyErr_NewException("spam.error", NULL, NULL);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000284 PyDict_SetItemString(d, "error", SpamError);
285}
286\end{verbatim}
287
Guido van Rossumb92112d1995-03-20 14:24:09 +0000288Note that the Python name for the exception object is
Fred Draked7bb3031998-03-03 17:52:07 +0000289\exception{spam.error}. The \cfunction{PyErr_NewException()} function
290may create either a string or class, depending on whether the
Fred Drake9fa76f11999-11-10 16:01:43 +0000291\programopt{-X} flag was passed to the interpreter. If
292\programopt{-X} was used, \cdata{SpamError} will be a string object,
293otherwise it will be a class object with the base class being
294\exception{Exception}, described in the
295\citetitle[../lib/lib.html]{Python Library Reference} under ``Built-in
Fred Draked7bb3031998-03-03 17:52:07 +0000296Exceptions.''
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000297
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000298
Fred Drake5e8aa541998-11-16 18:34:07 +0000299\section{Back to the Example
300 \label{backToExample}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000301
302Going back to our example function, you should now be able to
303understand this statement:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000304
Fred Drake1e11a5c1998-02-13 07:11:32 +0000305\begin{verbatim}
306 if (!PyArg_ParseTuple(args, "s", &command))
307 return NULL;
308\end{verbatim}
309
Fred Drake0fd82681998-01-09 05:39:38 +0000310It returns \NULL{} (the error indicator for functions returning
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000311object pointers) if an error is detected in the argument list, relying
Fred Drake3da06a61998-02-26 18:49:12 +0000312on the exception set by \cfunction{PyArg_ParseTuple()}. Otherwise the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000313string value of the argument has been copied to the local variable
Fred Draked7bb3031998-03-03 17:52:07 +0000314\cdata{command}. This is a pointer assignment and you are not supposed
Fred Drakeec9fbe91999-02-15 16:20:25 +0000315to modify the string to which it points (so in Standard C, the variable
Fred Draked7bb3031998-03-03 17:52:07 +0000316\cdata{command} should properly be declared as \samp{const char
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000317*command}).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000318
Fred Draked7bb3031998-03-03 17:52:07 +0000319The next statement is a call to the \UNIX{} function
320\cfunction{system()}, passing it the string we just got from
321\cfunction{PyArg_ParseTuple()}:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000322
Fred Drake1e11a5c1998-02-13 07:11:32 +0000323\begin{verbatim}
324 sts = system(command);
325\end{verbatim}
326
Fred Draked7bb3031998-03-03 17:52:07 +0000327Our \function{spam.system()} function must return the value of
328\cdata{sts} as a Python object. This is done using the function
329\cfunction{Py_BuildValue()}, which is something like the inverse of
330\cfunction{PyArg_ParseTuple()}: it takes a format string and an
Fred Drakeec9fbe91999-02-15 16:20:25 +0000331arbitrary number of C values, and returns a new Python object.
Fred Draked7bb3031998-03-03 17:52:07 +0000332More info on \cfunction{Py_BuildValue()} is given later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000333
Fred Drake1e11a5c1998-02-13 07:11:32 +0000334\begin{verbatim}
335 return Py_BuildValue("i", sts);
336\end{verbatim}
337
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000338In this case, it will return an integer object. (Yes, even integers
339are objects on the heap in Python!)
Guido van Rossum6938f061994-08-01 12:22:53 +0000340
Fred Drakeec9fbe91999-02-15 16:20:25 +0000341If you have a C function that returns no useful argument (a function
Fred Draked7bb3031998-03-03 17:52:07 +0000342returning \ctype{void}), the corresponding Python function must return
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000343\code{None}. You need this idiom to do so:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000344
Fred Drake1e11a5c1998-02-13 07:11:32 +0000345\begin{verbatim}
346 Py_INCREF(Py_None);
347 return Py_None;
348\end{verbatim}
349
Fred Drakeec9fbe91999-02-15 16:20:25 +0000350\cdata{Py_None} is the C name for the special Python object
Fred Drakea0dbddf1998-04-02 06:50:02 +0000351\code{None}. It is a genuine Python object rather than a \NULL{}
352pointer, which means ``error'' in most contexts, as we have seen.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000353
354
Fred Drake5e8aa541998-11-16 18:34:07 +0000355\section{The Module's Method Table and Initialization Function
356 \label{methodTable}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000357
Fred Draked7bb3031998-03-03 17:52:07 +0000358I promised to show how \cfunction{spam_system()} is called from Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000359programs. First, we need to list its name and address in a ``method
360table'':
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000361
Fred Drake1e11a5c1998-02-13 07:11:32 +0000362\begin{verbatim}
363static PyMethodDef SpamMethods[] = {
364 ...
365 {"system", spam_system, METH_VARARGS},
366 ...
367 {NULL, NULL} /* Sentinel */
368};
369\end{verbatim}
370
Fred Drake0fd82681998-01-09 05:39:38 +0000371Note the third entry (\samp{METH_VARARGS}). This is a flag telling
Fred Drakeec9fbe91999-02-15 16:20:25 +0000372the interpreter the calling convention to be used for the C
Fred Drake0fd82681998-01-09 05:39:38 +0000373function. It should normally always be \samp{METH_VARARGS} or
Fred Drakea0dbddf1998-04-02 06:50:02 +0000374\samp{METH_VARARGS | METH_KEYWORDS}; a value of \code{0} means that an
Fred Drake3da06a61998-02-26 18:49:12 +0000375obsolete variant of \cfunction{PyArg_ParseTuple()} is used.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000376
Fred Drakeb6e50321998-02-04 20:26:31 +0000377When using only \samp{METH_VARARGS}, the function should expect
378the Python-level parameters to be passed in as a tuple acceptable for
379parsing via \cfunction{PyArg_ParseTuple()}; more information on this
380function is provided below.
381
Fred Drake2d545232000-05-10 20:33:18 +0000382The \constant{METH_KEYWORDS} bit may be set in the third field if
383keyword arguments should be passed to the function. In this case, the
384C function should accept a third \samp{PyObject *} parameter which
385will be a dictionary of keywords. Use
386\cfunction{PyArg_ParseTupleAndKeywords()} to parse the arguments to
387such a function.
Fred Drake0fd82681998-01-09 05:39:38 +0000388
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000389The method table must be passed to the interpreter in the module's
Fred Drake2d545232000-05-10 20:33:18 +0000390initialization function. The initialization function must be named
391\cfunction{init\var{name}()}, where \var{name} is the name of the
392module, and should be the only non-\keyword{static} item defined in
393the module file:
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000394
Fred Drake1e11a5c1998-02-13 07:11:32 +0000395\begin{verbatim}
396void
397initspam()
398{
399 (void) Py_InitModule("spam", SpamMethods);
400}
401\end{verbatim}
402
Fred Drake65e69002000-05-10 20:36:34 +0000403Note that for \Cpp, this method must be declared \code{extern "C"}.
404
Fred Draked7bb3031998-03-03 17:52:07 +0000405When the Python program imports module \module{spam} for the first
Fred Drake54fd8452000-04-03 04:54:28 +0000406time, \cfunction{initspam()} is called. (See below for comments about
407embedding Python.) It calls
Fred Draked7bb3031998-03-03 17:52:07 +0000408\cfunction{Py_InitModule()}, which creates a ``module object'' (which
409is inserted in the dictionary \code{sys.modules} under the key
410\code{"spam"}), and inserts built-in function objects into the newly
411created module based upon the table (an array of \ctype{PyMethodDef}
412structures) that was passed as its second argument.
413\cfunction{Py_InitModule()} returns a pointer to the module object
414that it creates (which is unused here). It aborts with a fatal error
415if the module could not be initialized satisfactorily, so the caller
416doesn't need to check for errors.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000417
Fred Drake54fd8452000-04-03 04:54:28 +0000418When embedding Python, the \cfunction{initspam()} function is not
419called automatically unless there's an entry in the
420\cdata{_PyImport_Inittab} table. The easiest way to handle this is to
421statically initialize your statically-linked modules by directly
422calling \cfunction{initspam()} after the call to
423\cfunction{Py_Initialize()} or \cfunction{PyMac_Initialize()}:
424
425\begin{verbatim}
426int main(int argc, char **argv)
427{
428 /* Pass argv[0] to the Python interpreter */
429 Py_SetProgramName(argv[0]);
430
431 /* Initialize the Python interpreter. Required. */
432 Py_Initialize();
433
434 /* Add a static module */
435 initspam();
436\end{verbatim}
437
438And example may be found in the file \file{Demo/embed/demo.c} in the
439Python source distribution.
440
Fred Drakea48a0831999-06-18 19:17:28 +0000441\strong{Note:} Removing entries from \code{sys.modules} or importing
442compiled modules into multiple interpreters within a process (or
443following a \cfunction{fork()} without an intervening
444\cfunction{exec()}) can create problems for some extension modules.
445Extension module authors should exercise caution when initializing
446internal data structures.
447
Fred Drake54fd8452000-04-03 04:54:28 +0000448A more substantial example module is included in the Python source
449distribution as \file{Modules/xxmodule.c}. This file may be used as a
450template or simply read as an example. The \program{modulator.py}
451script included in the source distribution or Windows install provides
452a simple graphical user interface for declaring the functions and
453objects which a module should implement, and can generate a template
454which can be filled in. The script lives in the
455\file{Tools/modulator/} directory; see the \file{README} file there
456for more information.
457
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000458
Fred Drake5e8aa541998-11-16 18:34:07 +0000459\section{Compilation and Linkage
460 \label{compilation}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000461
Guido van Rossumb92112d1995-03-20 14:24:09 +0000462There are two more things to do before you can use your new extension:
463compiling and linking it with the Python system. If you use dynamic
464loading, the details depend on the style of dynamic loading your
Fred Drake54fd8452000-04-03 04:54:28 +0000465system uses; see the chapters about building extension modules on
466\UNIX{} (chapter \ref{building-on-unix}) and Windows (chapter
467\ref{building-on-windows}) for more information about this.
468% XXX Add information about MacOS
Guido van Rossum6938f061994-08-01 12:22:53 +0000469
470If you can't use dynamic loading, or if you want to make your module a
471permanent part of the Python interpreter, you will have to change the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000472configuration setup and rebuild the interpreter. Luckily, this is
473very simple: just place your file (\file{spammodule.c} for example) in
Fred Drakea4a90dd1999-04-29 02:44:50 +0000474the \file{Modules/} directory of an unpacked source distribution, add
475a line to the file \file{Modules/Setup.local} describing your file:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000476
Fred Drake1e11a5c1998-02-13 07:11:32 +0000477\begin{verbatim}
478spam spammodule.o
479\end{verbatim}
480
Fred Draked7bb3031998-03-03 17:52:07 +0000481and rebuild the interpreter by running \program{make} in the toplevel
Fred Drakea4a90dd1999-04-29 02:44:50 +0000482directory. You can also run \program{make} in the \file{Modules/}
Fred Drakea0dbddf1998-04-02 06:50:02 +0000483subdirectory, but then you must first rebuild \file{Makefile}
Fred Draked7bb3031998-03-03 17:52:07 +0000484there by running `\program{make} Makefile'. (This is necessary each
485time you change the \file{Setup} file.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000486
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000487If your module requires additional libraries to link with, these can
Fred Drakea0dbddf1998-04-02 06:50:02 +0000488be listed on the line in the configuration file as well, for instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000489
Fred Drake1e11a5c1998-02-13 07:11:32 +0000490\begin{verbatim}
491spam spammodule.o -lX11
492\end{verbatim}
493
Fred Drakeec9fbe91999-02-15 16:20:25 +0000494\section{Calling Python Functions from C
Fred Drake5e8aa541998-11-16 18:34:07 +0000495 \label{callingPython}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000496
Fred Drakeec9fbe91999-02-15 16:20:25 +0000497So far we have concentrated on making C functions callable from
498Python. The reverse is also useful: calling Python functions from C.
Guido van Rossum6938f061994-08-01 12:22:53 +0000499This is especially the case for libraries that support so-called
Fred Drakeec9fbe91999-02-15 16:20:25 +0000500``callback'' functions. If a C interface makes use of callbacks, the
Guido van Rossum6938f061994-08-01 12:22:53 +0000501equivalent Python often needs to provide a callback mechanism to the
502Python programmer; the implementation will require calling the Python
Fred Drakeec9fbe91999-02-15 16:20:25 +0000503callback functions from a C callback. Other uses are also imaginable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000504
505Fortunately, the Python interpreter is easily called recursively, and
Guido van Rossum6938f061994-08-01 12:22:53 +0000506there is a standard interface to call a Python function. (I won't
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000507dwell on how to call the Python parser with a particular string as
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000508input --- if you're interested, have a look at the implementation of
Fred Drake9fa76f11999-11-10 16:01:43 +0000509the \programopt{-c} command line option in \file{Python/pythonmain.c}
510from the Python source code.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000511
512Calling a Python function is easy. First, the Python program must
513somehow pass you the Python function object. You should provide a
514function (or some other interface) to do this. When this function is
515called, save a pointer to the Python function object (be careful to
Fred Drakedc12ec81999-03-09 18:36:55 +0000516\cfunction{Py_INCREF()} it!) in a global variable --- or wherever you
Fred Draked7bb3031998-03-03 17:52:07 +0000517see fit. For example, the following function might be part of a module
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000518definition:
519
Fred Drake1e11a5c1998-02-13 07:11:32 +0000520\begin{verbatim}
521static PyObject *my_callback = NULL;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000522
Fred Drake1e11a5c1998-02-13 07:11:32 +0000523static PyObject *
Fred Drake54fd8452000-04-03 04:54:28 +0000524my_set_callback(dummy, args)
525 PyObject *dummy, *args;
Fred Drake1e11a5c1998-02-13 07:11:32 +0000526{
Fred Drake5e8aa541998-11-16 18:34:07 +0000527 PyObject *result = NULL;
528 PyObject *temp;
529
530 if (PyArg_ParseTuple(args, "O:set_callback", &temp)) {
531 if (!PyCallable_Check(temp)) {
532 PyErr_SetString(PyExc_TypeError, "parameter must be callable");
533 return NULL;
534 }
535 Py_XINCREF(temp); /* Add a reference to new callback */
536 Py_XDECREF(my_callback); /* Dispose of previous callback */
537 my_callback = temp; /* Remember new callback */
538 /* Boilerplate to return "None" */
539 Py_INCREF(Py_None);
540 result = Py_None;
541 }
542 return result;
Fred Drake1e11a5c1998-02-13 07:11:32 +0000543}
544\end{verbatim}
545
Fred Drake5e8aa541998-11-16 18:34:07 +0000546This function must be registered with the interpreter using the
Fred Drake5f342ac1999-04-29 02:47:40 +0000547\constant{METH_VARARGS} flag; this is described in section
Fred Drake5e8aa541998-11-16 18:34:07 +0000548\ref{methodTable}, ``The Module's Method Table and Initialization
549Function.'' The \cfunction{PyArg_ParseTuple()} function and its
Fred Drake5f342ac1999-04-29 02:47:40 +0000550arguments are documented in section \ref{parseTuple}, ``Format Strings
Fred Drake5e8aa541998-11-16 18:34:07 +0000551for \cfunction{PyArg_ParseTuple()}.''
552
Fred Draked7bb3031998-03-03 17:52:07 +0000553The macros \cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()}
554increment/decrement the reference count of an object and are safe in
Fred Drake5e8aa541998-11-16 18:34:07 +0000555the presence of \NULL{} pointers (but note that \var{temp} will not be
Fred Drake5f342ac1999-04-29 02:47:40 +0000556\NULL{} in this context). More info on them in section
Fred Drake5e8aa541998-11-16 18:34:07 +0000557\ref{refcounts}, ``Reference Counts.''
Guido van Rossum6938f061994-08-01 12:22:53 +0000558
Fred Drakeec9fbe91999-02-15 16:20:25 +0000559Later, when it is time to call the function, you call the C function
Fred Draked7bb3031998-03-03 17:52:07 +0000560\cfunction{PyEval_CallObject()}. This function has two arguments, both
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000561pointers to arbitrary Python objects: the Python function, and the
562argument list. The argument list must always be a tuple object, whose
563length is the number of arguments. To call the Python function with
564no arguments, pass an empty tuple; to call it with one argument, pass
Fred Draked7bb3031998-03-03 17:52:07 +0000565a singleton tuple. \cfunction{Py_BuildValue()} returns a tuple when its
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000566format string consists of zero or more format codes between
567parentheses. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000568
Fred Drake1e11a5c1998-02-13 07:11:32 +0000569\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000570 int arg;
571 PyObject *arglist;
572 PyObject *result;
573 ...
574 arg = 123;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000575 ...
576 /* Time to call the callback */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000577 arglist = Py_BuildValue("(i)", arg);
578 result = PyEval_CallObject(my_callback, arglist);
579 Py_DECREF(arglist);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000580\end{verbatim}
581
Fred Draked7bb3031998-03-03 17:52:07 +0000582\cfunction{PyEval_CallObject()} returns a Python object pointer: this is
583the return value of the Python function. \cfunction{PyEval_CallObject()} is
Guido van Rossumb92112d1995-03-20 14:24:09 +0000584``reference-count-neutral'' with respect to its arguments. In the
Guido van Rossum6938f061994-08-01 12:22:53 +0000585example a new tuple was created to serve as the argument list, which
Fred Draked7bb3031998-03-03 17:52:07 +0000586is \cfunction{Py_DECREF()}-ed immediately after the call.
Guido van Rossum6938f061994-08-01 12:22:53 +0000587
Fred Draked7bb3031998-03-03 17:52:07 +0000588The return value of \cfunction{PyEval_CallObject()} is ``new'': either it
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000589is a brand new object, or it is an existing object whose reference
590count has been incremented. So, unless you want to save it in a
Fred Draked7bb3031998-03-03 17:52:07 +0000591global variable, you should somehow \cfunction{Py_DECREF()} the result,
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000592even (especially!) if you are not interested in its value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000593
594Before you do this, however, it is important to check that the return
Fred Draked7bb3031998-03-03 17:52:07 +0000595value isn't \NULL{}. If it is, the Python function terminated by
Fred Drakeec9fbe91999-02-15 16:20:25 +0000596raising an exception. If the C code that called
Fred Draked7bb3031998-03-03 17:52:07 +0000597\cfunction{PyEval_CallObject()} is called from Python, it should now
598return an error indication to its Python caller, so the interpreter
599can print a stack trace, or the calling Python code can handle the
600exception. If this is not possible or desirable, the exception should
601be cleared by calling \cfunction{PyErr_Clear()}. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000602
Fred Drake1e11a5c1998-02-13 07:11:32 +0000603\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000604 if (result == NULL)
605 return NULL; /* Pass error back */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000606 ...use result...
607 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000608\end{verbatim}
609
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000610Depending on the desired interface to the Python callback function,
Fred Draked7bb3031998-03-03 17:52:07 +0000611you may also have to provide an argument list to
612\cfunction{PyEval_CallObject()}. In some cases the argument list is
613also provided by the Python program, through the same interface that
614specified the callback function. It can then be saved and used in the
615same manner as the function object. In other cases, you may have to
616construct a new tuple to pass as the argument list. The simplest way
617to do this is to call \cfunction{Py_BuildValue()}. For example, if
618you want to pass an integral event code, you might use the following
619code:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000620
Fred Drake1e11a5c1998-02-13 07:11:32 +0000621\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000622 PyObject *arglist;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000623 ...
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000624 arglist = Py_BuildValue("(l)", eventcode);
625 result = PyEval_CallObject(my_callback, arglist);
626 Py_DECREF(arglist);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000627 if (result == NULL)
628 return NULL; /* Pass error back */
629 /* Here maybe use the result */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000630 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000631\end{verbatim}
632
Fred Draked7bb3031998-03-03 17:52:07 +0000633Note the placement of \samp{Py_DECREF(arglist)} immediately after the
634call, before the error check! Also note that strictly spoken this
635code is not complete: \cfunction{Py_BuildValue()} may run out of
636memory, and this should be checked.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000637
638
Fred Drake5e8aa541998-11-16 18:34:07 +0000639\section{Format Strings for \cfunction{PyArg_ParseTuple()}
640 \label{parseTuple}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000641
Fred Drake3da06a61998-02-26 18:49:12 +0000642The \cfunction{PyArg_ParseTuple()} function is declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000643
Fred Drake1e11a5c1998-02-13 07:11:32 +0000644\begin{verbatim}
645int PyArg_ParseTuple(PyObject *arg, char *format, ...);
646\end{verbatim}
647
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000648The \var{arg} argument must be a tuple object containing an argument
Fred Drakeec9fbe91999-02-15 16:20:25 +0000649list passed from Python to a C function. The \var{format} argument
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000650must be a format string, whose syntax is explained below. The
651remaining arguments must be addresses of variables whose type is
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000652determined by the format string. For the conversion to succeed, the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000653\var{arg} object must match the format and the format must be
654exhausted.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000655
Fred Drake3da06a61998-02-26 18:49:12 +0000656Note that while \cfunction{PyArg_ParseTuple()} checks that the Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000657arguments have the required types, it cannot check the validity of the
Fred Drakeec9fbe91999-02-15 16:20:25 +0000658addresses of C variables passed to the call: if you make mistakes
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000659there, your code will probably crash or at least overwrite random bits
660in memory. So be careful!
661
662A format string consists of zero or more ``format units''. A format
663unit describes one Python object; it is usually a single character or
664a parenthesized sequence of format units. With a few exceptions, a
665format unit that is not a parenthesized sequence normally corresponds
Fred Drake3da06a61998-02-26 18:49:12 +0000666to a single address argument to \cfunction{PyArg_ParseTuple()}. In the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000667following description, the quoted form is the format unit; the entry
668in (round) parentheses is the Python object type that matches the
Fred Drakeec9fbe91999-02-15 16:20:25 +0000669format unit; and the entry in [square] brackets is the type of the C
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000670variable(s) whose address should be passed. (Use the \samp{\&}
671operator to pass a variable's address.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000672
Fred Drake54fd8452000-04-03 04:54:28 +0000673Note that any Python object references which are provided to the
674caller are \emph{borrowed} references; do not decrement their
675reference count!
676
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000677\begin{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000678
Fred Drake3fe985f1998-03-04 03:51:42 +0000679\item[\samp{s} (string) {[char *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000680Convert a Python string to a C pointer to a character string. You
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000681must not provide storage for the string itself; a pointer to an
682existing string is stored into the character pointer variable whose
Fred Drakeec9fbe91999-02-15 16:20:25 +0000683address you pass. The C string is null-terminated. The Python string
Fred Drake3da06a61998-02-26 18:49:12 +0000684must not contain embedded null bytes; if it does, a \exception{TypeError}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000685exception is raised.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000686
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000687\item[\samp{s\#} (string) {[char *, int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000688This variant on \samp{s} stores into two C variables, the first one
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000689a pointer to a character string, the second one its length. In this
690case the Python string may contain embedded null bytes.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000691
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000692\item[\samp{z} (string or \code{None}) {[char *]}]
693Like \samp{s}, but the Python object may also be \code{None}, in which
Fred Drakeec9fbe91999-02-15 16:20:25 +0000694case the C pointer is set to \NULL{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000695
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000696\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000697This is to \samp{s\#} as \samp{z} is to \samp{s}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000698
Fred Drake25871c02000-05-03 15:17:02 +0000699\item[\samp{u} (Unicode string) {[Py_UNICODE *]}]
700Convert a Python Unicode object to a C pointer to a null-terminated
701buffer of Unicode (UCS-2) data. As with \samp{s}, there is no need
702to provide storage for the Unicode data buffer; a pointer to the
703existing Unicode data is stored into the Py_UNICODE pointer variable whose
704address you pass.
705
706\item[\samp{u\#} (Unicode string) {[Py_UNICODE *, int]}]
707This variant on \samp{u} stores into two C variables, the first one
708a pointer to a Unicode data buffer, the second one its length.
709
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000710\item[\samp{b} (integer) {[char]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000711Convert a Python integer to a tiny int, stored in a C \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000712
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000713\item[\samp{h} (integer) {[short int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000714Convert a Python integer to a C \ctype{short int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000715
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000716\item[\samp{i} (integer) {[int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000717Convert a Python integer to a plain C \ctype{int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000718
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000719\item[\samp{l} (integer) {[long int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000720Convert a Python integer to a C \ctype{long int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000721
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000722\item[\samp{c} (string of length 1) {[char]}]
723Convert a Python character, represented as a string of length 1, to a
Fred Drakeec9fbe91999-02-15 16:20:25 +0000724C \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000725
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000726\item[\samp{f} (float) {[float]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000727Convert a Python floating point number to a C \ctype{float}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000728
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000729\item[\samp{d} (float) {[double]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000730Convert a Python floating point number to a C \ctype{double}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000731
Fred Drakeb6e50321998-02-04 20:26:31 +0000732\item[\samp{D} (complex) {[Py_complex]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000733Convert a Python complex number to a C \ctype{Py_complex} structure.
Fred Drakeb6e50321998-02-04 20:26:31 +0000734
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000735\item[\samp{O} (object) {[PyObject *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000736Store a Python object (without any conversion) in a C object pointer.
737The C program thus receives the actual object that was passed. The
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000738object's reference count is not increased. The pointer stored is not
Fred Drake0fd82681998-01-09 05:39:38 +0000739\NULL{}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000740
Fred Drake3fe985f1998-03-04 03:51:42 +0000741\item[\samp{O!} (object) {[\var{typeobject}, PyObject *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000742Store a Python object in a C object pointer. This is similar to
743\samp{O}, but takes two C arguments: the first is the address of a
744Python type object, the second is the address of the C variable (of
Fred Draked7bb3031998-03-03 17:52:07 +0000745type \ctype{PyObject *}) into which the object pointer is stored.
Fred Drake54fd8452000-04-03 04:54:28 +0000746If the Python object does not have the required type,
747\exception{TypeError} is raised.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000748
Fred Drake3fe985f1998-03-04 03:51:42 +0000749\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000750Convert a Python object to a C variable through a \var{converter}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000751function. This takes two arguments: the first is a function, the
Fred Drakeec9fbe91999-02-15 16:20:25 +0000752second is the address of a C variable (of arbitrary type), converted
Fred Draked7bb3031998-03-03 17:52:07 +0000753to \ctype{void *}. The \var{converter} function in turn is called as
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000754follows:
755
Fred Drake82ac24f1999-07-02 14:29:14 +0000756\var{status}\code{ = }\var{converter}\code{(}\var{object}, \var{address}\code{);}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000757
758where \var{object} is the Python object to be converted and
Fred Draked7bb3031998-03-03 17:52:07 +0000759\var{address} is the \ctype{void *} argument that was passed to
760\cfunction{PyArg_ConvertTuple()}. The returned \var{status} should be
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000761\code{1} for a successful conversion and \code{0} if the conversion
762has failed. When the conversion fails, the \var{converter} function
763should raise an exception.
764
765\item[\samp{S} (string) {[PyStringObject *]}]
Guido van Rossum2474d681998-02-26 17:07:11 +0000766Like \samp{O} but requires that the Python object is a string object.
Fred Drake54fd8452000-04-03 04:54:28 +0000767Raises \exception{TypeError} if the object is not a string object.
768The C variable may also be declared as \ctype{PyObject *}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000769
Fred Drake25871c02000-05-03 15:17:02 +0000770\item[\samp{U} (Unicode string) {[PyUnicodeObject *]}]
771Like \samp{O} but requires that the Python object is a Unicode object.
772Raises \exception{TypeError} if the object is not a Unicode object.
773The C variable may also be declared as \ctype{PyObject *}.
774
Fred Drake8779f641999-08-27 15:28:15 +0000775\item[\samp{t\#} (read-only character buffer) {[char *, int]}]
776Like \samp{s\#}, but accepts any object which implements the read-only
777buffer interface. The \ctype{char *} variable is set to point to the
778first byte of the buffer, and the \ctype{int} is set to the length of
779the buffer. Only single-segment buffer objects are accepted;
780\exception{TypeError} is raised for all others.
781
782\item[\samp{w} (read-write character buffer) {[char *]}]
783Similar to \samp{s}, but accepts any object which implements the
784read-write buffer interface. The caller must determine the length of
785the buffer by other means, or use \samp{w\#} instead. Only
786single-segment buffer objects are accepted; \exception{TypeError} is
787raised for all others.
788
789\item[\samp{w\#} (read-write character buffer) {[char *, int]}]
790Like \samp{s\#}, but accepts any object which implements the
791read-write buffer interface. The \ctype{char *} variable is set to
792point to the first byte of the buffer, and the \ctype{int} is set to
793the length of the buffer. Only single-segment buffer objects are
794accepted; \exception{TypeError} is raised for all others.
795
Fred Drake3fe985f1998-03-04 03:51:42 +0000796\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Fred Drake29fb54f1999-02-18 03:50:01 +0000797The object must be a Python sequence whose length is the number of
798format units in \var{items}. The C arguments must correspond to the
799individual format units in \var{items}. Format units for sequences
800may be nested.
801
802\strong{Note:} Prior to Python version 1.5.2, this format specifier
803only accepted a tuple containing the individual parameters, not an
Fred Drake54fd8452000-04-03 04:54:28 +0000804arbitrary sequence. Code which previously caused
Fred Drake29fb54f1999-02-18 03:50:01 +0000805\exception{TypeError} to be raised here may now proceed without an
806exception. This is not expected to be a problem for existing code.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000807
808\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000809
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000810It is possible to pass Python long integers where integers are
Fred Drake1aedbd81998-02-16 14:47:27 +0000811requested; however no proper range checking is done --- the most
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000812significant bits are silently truncated when the receiving field is
813too small to receive the value (actually, the semantics are inherited
Fred Drakedc12ec81999-03-09 18:36:55 +0000814from downcasts in C --- your mileage may vary).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000815
816A few other characters have a meaning in a format string. These may
817not occur inside nested parentheses. They are:
818
819\begin{description}
820
821\item[\samp{|}]
822Indicates that the remaining arguments in the Python argument list are
Fred Drakeec9fbe91999-02-15 16:20:25 +0000823optional. The C variables corresponding to optional arguments should
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000824be initialized to their default value --- when an optional argument is
Fred Drake40e72f71998-03-03 19:37:38 +0000825not specified, \cfunction{PyArg_ParseTuple()} does not touch the contents
Fred Drakeec9fbe91999-02-15 16:20:25 +0000826of the corresponding C variable(s).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000827
828\item[\samp{:}]
829The list of format units ends here; the string after the colon is used
830as the function name in error messages (the ``associated value'' of
Fred Drakedc12ec81999-03-09 18:36:55 +0000831the exception that \cfunction{PyArg_ParseTuple()} raises).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000832
833\item[\samp{;}]
834The list of format units ends here; the string after the colon is used
835as the error message \emph{instead} of the default error message.
836Clearly, \samp{:} and \samp{;} mutually exclude each other.
837
838\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000839
840Some example calls:
841
Fred Drake0fd82681998-01-09 05:39:38 +0000842\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000843 int ok;
844 int i, j;
845 long k, l;
846 char *s;
847 int size;
848
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000849 ok = PyArg_ParseTuple(args, ""); /* No arguments */
Guido van Rossum6938f061994-08-01 12:22:53 +0000850 /* Python call: f() */
Fred Drake33698f81999-02-16 23:06:32 +0000851\end{verbatim}
Fred Drake0fd82681998-01-09 05:39:38 +0000852
Fred Drake33698f81999-02-16 23:06:32 +0000853\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000854 ok = PyArg_ParseTuple(args, "s", &s); /* A string */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000855 /* Possible Python call: f('whoops!') */
Fred Drake33698f81999-02-16 23:06:32 +0000856\end{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000857
Fred Drake33698f81999-02-16 23:06:32 +0000858\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000859 ok = PyArg_ParseTuple(args, "lls", &k, &l, &s); /* Two longs and a string */
Guido van Rossum6938f061994-08-01 12:22:53 +0000860 /* Possible Python call: f(1, 2, 'three') */
Fred Drake33698f81999-02-16 23:06:32 +0000861\end{verbatim}
Fred Drake0fd82681998-01-09 05:39:38 +0000862
Fred Drake33698f81999-02-16 23:06:32 +0000863\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000864 ok = PyArg_ParseTuple(args, "(ii)s#", &i, &j, &s, &size);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000865 /* A pair of ints and a string, whose size is also returned */
Guido van Rossum7e924dd1997-02-10 16:51:52 +0000866 /* Possible Python call: f((1, 2), 'three') */
Fred Drake33698f81999-02-16 23:06:32 +0000867\end{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000868
Fred Drake33698f81999-02-16 23:06:32 +0000869\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000870 {
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000871 char *file;
872 char *mode = "r";
873 int bufsize = 0;
874 ok = PyArg_ParseTuple(args, "s|si", &file, &mode, &bufsize);
875 /* A string, and optionally another string and an integer */
876 /* Possible Python calls:
877 f('spam')
878 f('spam', 'w')
879 f('spam', 'wb', 100000) */
880 }
Fred Drake33698f81999-02-16 23:06:32 +0000881\end{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000882
Fred Drake33698f81999-02-16 23:06:32 +0000883\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000884 {
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000885 int left, top, right, bottom, h, v;
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000886 ok = PyArg_ParseTuple(args, "((ii)(ii))(ii)",
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000887 &left, &top, &right, &bottom, &h, &v);
Fred Drakea0dbddf1998-04-02 06:50:02 +0000888 /* A rectangle and a point */
889 /* Possible Python call:
890 f(((0, 0), (400, 300)), (10, 10)) */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000891 }
Fred Drake33698f81999-02-16 23:06:32 +0000892\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000893
Fred Drake33698f81999-02-16 23:06:32 +0000894\begin{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000895 {
896 Py_complex c;
897 ok = PyArg_ParseTuple(args, "D:myfunction", &c);
898 /* a complex, also providing a function name for errors */
899 /* Possible Python call: myfunction(1+2j) */
900 }
Fred Drake0fd82681998-01-09 05:39:38 +0000901\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000902
903
Fred Drake5e8aa541998-11-16 18:34:07 +0000904\section{Keyword Parsing with \cfunction{PyArg_ParseTupleAndKeywords()}
905 \label{parseTupleAndKeywords}}
Fred Drakeb6e50321998-02-04 20:26:31 +0000906
907The \cfunction{PyArg_ParseTupleAndKeywords()} function is declared as
908follows:
909
Fred Drake1e11a5c1998-02-13 07:11:32 +0000910\begin{verbatim}
911int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,
912 char *format, char **kwlist, ...);
913\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000914
915The \var{arg} and \var{format} parameters are identical to those of the
916\cfunction{PyArg_ParseTuple()} function. The \var{kwdict} parameter
917is the dictionary of keywords received as the third parameter from the
918Python runtime. The \var{kwlist} parameter is a \NULL{}-terminated
919list of strings which identify the parameters; the names are matched
920with the type information from \var{format} from left to right.
921
922\strong{Note:} Nested tuples cannot be parsed when using keyword
923arguments! Keyword parameters passed in which are not present in the
Fred Drakecd05ca91998-03-07 05:32:08 +0000924\var{kwlist} will cause \exception{TypeError} to be raised.
Fred Drakeb6e50321998-02-04 20:26:31 +0000925
926Here is an example module which uses keywords, based on an example by
Fred Drakea0dbddf1998-04-02 06:50:02 +0000927Geoff Philbrick (\email{philbrick@hks.com}):%
928\index{Philbrick, Geoff}
Fred Drakeb6e50321998-02-04 20:26:31 +0000929
930\begin{verbatim}
931#include <stdio.h>
932#include "Python.h"
933
934static PyObject *
935keywdarg_parrot(self, args, keywds)
936 PyObject *self;
937 PyObject *args;
938 PyObject *keywds;
939{
940 int voltage;
941 char *state = "a stiff";
942 char *action = "voom";
943 char *type = "Norwegian Blue";
944
945 static char *kwlist[] = {"voltage", "state", "action", "type", NULL};
946
947 if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss", kwlist,
948 &voltage, &state, &action, &type))
949 return NULL;
950
951 printf("-- This parrot wouldn't %s if you put %i Volts through it.\n",
952 action, voltage);
953 printf("-- Lovely plumage, the %s -- It's %s!\n", type, state);
954
955 Py_INCREF(Py_None);
956
957 return Py_None;
958}
959
960static PyMethodDef keywdarg_methods[] = {
Fred Drakedc12ec81999-03-09 18:36:55 +0000961 /* The cast of the function is necessary since PyCFunction values
962 * only take two PyObject* parameters, and keywdarg_parrot() takes
963 * three.
964 */
Fred Drakeb6e50321998-02-04 20:26:31 +0000965 {"parrot", (PyCFunction)keywdarg_parrot, METH_VARARGS|METH_KEYWORDS},
966 {NULL, NULL} /* sentinel */
967};
968
969void
970initkeywdarg()
971{
972 /* Create the module and add the functions */
Fred Drakecd05ca91998-03-07 05:32:08 +0000973 Py_InitModule("keywdarg", keywdarg_methods);
Fred Drakeb6e50321998-02-04 20:26:31 +0000974}
975\end{verbatim}
976
977
Fred Drake5e8aa541998-11-16 18:34:07 +0000978\section{The \cfunction{Py_BuildValue()} Function
979 \label{buildValue}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000980
Fred Draked7bb3031998-03-03 17:52:07 +0000981This function is the counterpart to \cfunction{PyArg_ParseTuple()}. It is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000982declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000983
Fred Drake1e11a5c1998-02-13 07:11:32 +0000984\begin{verbatim}
985PyObject *Py_BuildValue(char *format, ...);
986\end{verbatim}
987
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000988It recognizes a set of format units similar to the ones recognized by
Fred Draked7bb3031998-03-03 17:52:07 +0000989\cfunction{PyArg_ParseTuple()}, but the arguments (which are input to the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000990function, not output) must not be pointers, just values. It returns a
Fred Drakeec9fbe91999-02-15 16:20:25 +0000991new Python object, suitable for returning from a C function called
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000992from Python.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000993
Fred Draked7bb3031998-03-03 17:52:07 +0000994One difference with \cfunction{PyArg_ParseTuple()}: while the latter
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000995requires its first argument to be a tuple (since Python argument lists
Fred Draked7bb3031998-03-03 17:52:07 +0000996are always represented as tuples internally),
997\cfunction{Py_BuildValue()} does not always build a tuple. It builds
998a tuple only if its format string contains two or more format units.
999If the format string is empty, it returns \code{None}; if it contains
1000exactly one format unit, it returns whatever object is described by
1001that format unit. To force it to return a tuple of size 0 or one,
1002parenthesize the format string.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001003
Fred Drake2b9e1802000-06-28 15:32:29 +00001004When memory buffers are passed as parameters to supply data to build
1005objects, as for the \samp{s} and \samp{s\#} formats, the required data
1006is copied. Buffers provided by the caller are never referenced by the
Fred Drakeec105d02000-06-28 16:15:08 +00001007objects created by \cfunction{Py_BuildValue()}. In other words, if
1008your code invokes \cfunction{malloc()} and passes the allocated memory
1009to \cfunction{Py_BuildValue()}, your code is responsible for
1010calling \cfunction{free()} for that memory once
1011\cfunction{Py_BuildValue()} returns.
Fred Drake2b9e1802000-06-28 15:32:29 +00001012
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001013In the following description, the quoted form is the format unit; the
1014entry in (round) parentheses is the Python object type that the format
1015unit will return; and the entry in [square] brackets is the type of
Fred Drakeec9fbe91999-02-15 16:20:25 +00001016the C value(s) to be passed.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001017
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001018The characters space, tab, colon and comma are ignored in format
1019strings (but not within format units such as \samp{s\#}). This can be
1020used to make long format strings a tad more readable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001021
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001022\begin{description}
1023
1024\item[\samp{s} (string) {[char *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +00001025Convert a null-terminated C string to a Python object. If the C
Fred Drake2b9e1802000-06-28 15:32:29 +00001026string pointer is \NULL{}, \code{None} is used.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001027
1028\item[\samp{s\#} (string) {[char *, int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +00001029Convert a C string and its length to a Python object. If the C string
Fred Drake0fd82681998-01-09 05:39:38 +00001030pointer is \NULL{}, the length is ignored and \code{None} is
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001031returned.
1032
1033\item[\samp{z} (string or \code{None}) {[char *]}]
1034Same as \samp{s}.
1035
1036\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
1037Same as \samp{s\#}.
1038
Fred Drake3c3507f2000-04-28 14:43:33 +00001039\item[\samp{u} (Unicode string) {[Py_UNICODE *]}]
1040Convert a null-terminated buffer of Unicode (UCS-2) data to a Python
1041Unicode object. If the Unicode buffer pointer is \NULL,
1042\code{None} is returned.
1043
1044\item[\samp{u\#} (Unicode string) {[Py_UNICODE *, int]}]
1045Convert a Unicode (UCS-2) data buffer and its length to a Python
1046Unicode object. If the Unicode buffer pointer is \NULL, the length
1047is ignored and \code{None} is returned.
1048
Fred Drake25871c02000-05-03 15:17:02 +00001049\item[\samp{u} (Unicode string) {[Py_UNICODE *]}]
1050Convert a null-terminated buffer of Unicode (UCS-2) data to a Python Unicode
1051object. If the Unicode buffer pointer is \NULL{}, \code{None} is returned.
1052
1053\item[\samp{u\#} (Unicode string) {[Py_UNICODE *, int]}]
1054Convert a Unicode (UCS-2) data buffer and its length to a Python Unicode
1055object. If the Unicode buffer pointer is \NULL{}, the length is ignored and
1056\code{None} is returned.
1057
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001058\item[\samp{i} (integer) {[int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +00001059Convert a plain C \ctype{int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001060
1061\item[\samp{b} (integer) {[char]}]
1062Same as \samp{i}.
1063
1064\item[\samp{h} (integer) {[short int]}]
1065Same as \samp{i}.
1066
1067\item[\samp{l} (integer) {[long int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +00001068Convert a C \ctype{long int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001069
1070\item[\samp{c} (string of length 1) {[char]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +00001071Convert a C \ctype{int} representing a character to a Python string of
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001072length 1.
1073
1074\item[\samp{d} (float) {[double]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +00001075Convert a C \ctype{double} to a Python floating point number.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001076
1077\item[\samp{f} (float) {[float]}]
1078Same as \samp{d}.
1079
1080\item[\samp{O} (object) {[PyObject *]}]
1081Pass a Python object untouched (except for its reference count, which
Fred Drake0fd82681998-01-09 05:39:38 +00001082is incremented by one). If the object passed in is a \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001083pointer, it is assumed that this was caused because the call producing
1084the argument found an error and set an exception. Therefore,
Fred Draked7bb3031998-03-03 17:52:07 +00001085\cfunction{Py_BuildValue()} will return \NULL{} but won't raise an
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001086exception. If no exception has been raised yet,
Fred Draked7bb3031998-03-03 17:52:07 +00001087\cdata{PyExc_SystemError} is set.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001088
1089\item[\samp{S} (object) {[PyObject *]}]
1090Same as \samp{O}.
1091
Fred Drake25871c02000-05-03 15:17:02 +00001092\item[\samp{U} (object) {[PyObject *]}]
1093Same as \samp{O}.
1094
Guido van Rossumd358afe1998-12-23 05:02:08 +00001095\item[\samp{N} (object) {[PyObject *]}]
1096Same as \samp{O}, except it doesn't increment the reference count on
1097the object. Useful when the object is created by a call to an object
1098constructor in the argument list.
1099
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001100\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
1101Convert \var{anything} to a Python object through a \var{converter}
1102function. The function is called with \var{anything} (which should be
Fred Draked7bb3031998-03-03 17:52:07 +00001103compatible with \ctype{void *}) as its argument and should return a
Fred Drake0fd82681998-01-09 05:39:38 +00001104``new'' Python object, or \NULL{} if an error occurred.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001105
1106\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +00001107Convert a sequence of C values to a Python tuple with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001108of items.
1109
1110\item[\samp{[\var{items}]} (list) {[\var{matching-items}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +00001111Convert a sequence of C values to a Python list with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001112of items.
1113
1114\item[\samp{\{\var{items}\}} (dictionary) {[\var{matching-items}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +00001115Convert a sequence of C values to a Python dictionary. Each pair of
1116consecutive C values adds one item to the dictionary, serving as key
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001117and value, respectively.
1118
1119\end{description}
1120
1121If there is an error in the format string, the
Fred Draked7bb3031998-03-03 17:52:07 +00001122\cdata{PyExc_SystemError} exception is raised and \NULL{} returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001123
1124Examples (to the left the call, to the right the resulting Python value):
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001125
Fred Drake1e11a5c1998-02-13 07:11:32 +00001126\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001127 Py_BuildValue("") None
1128 Py_BuildValue("i", 123) 123
Guido van Rossumf23e0fe1995-03-18 11:04:29 +00001129 Py_BuildValue("iii", 123, 456, 789) (123, 456, 789)
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001130 Py_BuildValue("s", "hello") 'hello'
1131 Py_BuildValue("ss", "hello", "world") ('hello', 'world')
1132 Py_BuildValue("s#", "hello", 4) 'hell'
1133 Py_BuildValue("()") ()
1134 Py_BuildValue("(i)", 123) (123,)
1135 Py_BuildValue("(ii)", 123, 456) (123, 456)
1136 Py_BuildValue("(i,i)", 123, 456) (123, 456)
1137 Py_BuildValue("[i,i]", 123, 456) [123, 456]
Guido van Rossumf23e0fe1995-03-18 11:04:29 +00001138 Py_BuildValue("{s:i,s:i}",
1139 "abc", 123, "def", 456) {'abc': 123, 'def': 456}
1140 Py_BuildValue("((ii)(ii)) (ii)",
1141 1, 2, 3, 4, 5, 6) (((1, 2), (3, 4)), (5, 6))
Fred Drake1e11a5c1998-02-13 07:11:32 +00001142\end{verbatim}
1143
Fred Drake8e015171999-02-17 18:12:14 +00001144
Fred Drake5e8aa541998-11-16 18:34:07 +00001145\section{Reference Counts
1146 \label{refcounts}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001147
Fred Drakeec9fbe91999-02-15 16:20:25 +00001148In languages like C or \Cpp{}, the programmer is responsible for
1149dynamic allocation and deallocation of memory on the heap. In C,
Fred Draked7bb3031998-03-03 17:52:07 +00001150this is done using the functions \cfunction{malloc()} and
1151\cfunction{free()}. In \Cpp{}, the operators \keyword{new} and
1152\keyword{delete} are used with essentially the same meaning; they are
1153actually implemented using \cfunction{malloc()} and
1154\cfunction{free()}, so we'll restrict the following discussion to the
1155latter.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001156
Fred Draked7bb3031998-03-03 17:52:07 +00001157Every block of memory allocated with \cfunction{malloc()} should
1158eventually be returned to the pool of available memory by exactly one
1159call to \cfunction{free()}. It is important to call
1160\cfunction{free()} at the right time. If a block's address is
1161forgotten but \cfunction{free()} is not called for it, the memory it
1162occupies cannot be reused until the program terminates. This is
1163called a \dfn{memory leak}. On the other hand, if a program calls
1164\cfunction{free()} for a block and then continues to use the block, it
1165creates a conflict with re-use of the block through another
1166\cfunction{malloc()} call. This is called \dfn{using freed memory}.
1167It has the same bad consequences as referencing uninitialized data ---
1168core dumps, wrong results, mysterious crashes.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001169
1170Common causes of memory leaks are unusual paths through the code. For
1171instance, a function may allocate a block of memory, do some
1172calculation, and then free the block again. Now a change in the
1173requirements for the function may add a test to the calculation that
1174detects an error condition and can return prematurely from the
1175function. It's easy to forget to free the allocated memory block when
1176taking this premature exit, especially when it is added later to the
1177code. Such leaks, once introduced, often go undetected for a long
1178time: the error exit is taken only in a small fraction of all calls,
1179and most modern machines have plenty of virtual memory, so the leak
1180only becomes apparent in a long-running process that uses the leaking
1181function frequently. Therefore, it's important to prevent leaks from
1182happening by having a coding convention or strategy that minimizes
1183this kind of errors.
1184
Fred Draked7bb3031998-03-03 17:52:07 +00001185Since Python makes heavy use of \cfunction{malloc()} and
1186\cfunction{free()}, it needs a strategy to avoid memory leaks as well
1187as the use of freed memory. The chosen method is called
1188\dfn{reference counting}. The principle is simple: every object
1189contains a counter, which is incremented when a reference to the
1190object is stored somewhere, and which is decremented when a reference
1191to it is deleted. When the counter reaches zero, the last reference
1192to the object has been deleted and the object is freed.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001193
1194An alternative strategy is called \dfn{automatic garbage collection}.
1195(Sometimes, reference counting is also referred to as a garbage
1196collection strategy, hence my use of ``automatic'' to distinguish the
1197two.) The big advantage of automatic garbage collection is that the
Fred Draked7bb3031998-03-03 17:52:07 +00001198user doesn't need to call \cfunction{free()} explicitly. (Another claimed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001199advantage is an improvement in speed or memory usage --- this is no
Fred Drakeec9fbe91999-02-15 16:20:25 +00001200hard fact however.) The disadvantage is that for C, there is no
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001201truly portable automatic garbage collector, while reference counting
Fred Draked7bb3031998-03-03 17:52:07 +00001202can be implemented portably (as long as the functions \cfunction{malloc()}
Fred Drakeec9fbe91999-02-15 16:20:25 +00001203and \cfunction{free()} are available --- which the C Standard guarantees).
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001204Maybe some day a sufficiently portable automatic garbage collector
Fred Drakeec9fbe91999-02-15 16:20:25 +00001205will be available for C. Until then, we'll have to live with
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001206reference counts.
1207
Fred Drake5e8aa541998-11-16 18:34:07 +00001208\subsection{Reference Counting in Python
1209 \label{refcountsInPython}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001210
1211There are two macros, \code{Py_INCREF(x)} and \code{Py_DECREF(x)},
1212which handle the incrementing and decrementing of the reference count.
Fred Draked7bb3031998-03-03 17:52:07 +00001213\cfunction{Py_DECREF()} also frees the object when the count reaches zero.
1214For flexibility, it doesn't call \cfunction{free()} directly --- rather, it
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001215makes a call through a function pointer in the object's \dfn{type
1216object}. For this purpose (and others), every object also contains a
1217pointer to its type object.
1218
1219The big question now remains: when to use \code{Py_INCREF(x)} and
1220\code{Py_DECREF(x)}? Let's first introduce some terms. Nobody
1221``owns'' an object; however, you can \dfn{own a reference} to an
1222object. An object's reference count is now defined as the number of
1223owned references to it. The owner of a reference is responsible for
Fred Draked7bb3031998-03-03 17:52:07 +00001224calling \cfunction{Py_DECREF()} when the reference is no longer
1225needed. Ownership of a reference can be transferred. There are three
1226ways to dispose of an owned reference: pass it on, store it, or call
1227\cfunction{Py_DECREF()}. Forgetting to dispose of an owned reference
1228creates a memory leak.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001229
1230It is also possible to \dfn{borrow}\footnote{The metaphor of
1231``borrowing'' a reference is not completely correct: the owner still
1232has a copy of the reference.} a reference to an object. The borrower
Fred Draked7bb3031998-03-03 17:52:07 +00001233of a reference should not call \cfunction{Py_DECREF()}. The borrower must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001234not hold on to the object longer than the owner from which it was
1235borrowed. Using a borrowed reference after the owner has disposed of
1236it risks using freed memory and should be avoided
1237completely.\footnote{Checking that the reference count is at least 1
1238\strong{does not work} --- the reference count itself could be in
1239freed memory and may thus be reused for another object!}
1240
1241The advantage of borrowing over owning a reference is that you don't
1242need to take care of disposing of the reference on all possible paths
1243through the code --- in other words, with a borrowed reference you
1244don't run the risk of leaking when a premature exit is taken. The
1245disadvantage of borrowing over leaking is that there are some subtle
1246situations where in seemingly correct code a borrowed reference can be
1247used after the owner from which it was borrowed has in fact disposed
1248of it.
1249
1250A borrowed reference can be changed into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001251\cfunction{Py_INCREF()}. This does not affect the status of the owner from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001252which the reference was borrowed --- it creates a new owned reference,
1253and gives full owner responsibilities (i.e., the new owner must
1254dispose of the reference properly, as well as the previous owner).
1255
Fred Drake8e015171999-02-17 18:12:14 +00001256
Fred Drake5e8aa541998-11-16 18:34:07 +00001257\subsection{Ownership Rules
1258 \label{ownershipRules}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001259
1260Whenever an object reference is passed into or out of a function, it
1261is part of the function's interface specification whether ownership is
1262transferred with the reference or not.
1263
1264Most functions that return a reference to an object pass on ownership
1265with the reference. In particular, all functions whose function it is
Fred Draked7bb3031998-03-03 17:52:07 +00001266to create a new object, e.g.\ \cfunction{PyInt_FromLong()} and
1267\cfunction{Py_BuildValue()}, pass ownership to the receiver. Even if in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001268fact, in some cases, you don't receive a reference to a brand new
1269object, you still receive ownership of the reference. For instance,
Fred Draked7bb3031998-03-03 17:52:07 +00001270\cfunction{PyInt_FromLong()} maintains a cache of popular values and can
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001271return a reference to a cached item.
1272
1273Many functions that extract objects from other objects also transfer
1274ownership with the reference, for instance
Fred Draked7bb3031998-03-03 17:52:07 +00001275\cfunction{PyObject_GetAttrString()}. The picture is less clear, here,
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001276however, since a few common routines are exceptions:
Fred Draked7bb3031998-03-03 17:52:07 +00001277\cfunction{PyTuple_GetItem()}, \cfunction{PyList_GetItem()},
1278\cfunction{PyDict_GetItem()}, and \cfunction{PyDict_GetItemString()}
1279all return references that you borrow from the tuple, list or
1280dictionary.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001281
Fred Draked7bb3031998-03-03 17:52:07 +00001282The function \cfunction{PyImport_AddModule()} also returns a borrowed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001283reference, even though it may actually create the object it returns:
1284this is possible because an owned reference to the object is stored in
1285\code{sys.modules}.
1286
1287When you pass an object reference into another function, in general,
1288the function borrows the reference from you --- if it needs to store
Fred Draked7bb3031998-03-03 17:52:07 +00001289it, it will use \cfunction{Py_INCREF()} to become an independent
1290owner. There are exactly two important exceptions to this rule:
1291\cfunction{PyTuple_SetItem()} and \cfunction{PyList_SetItem()}. These
1292functions take over ownership of the item passed to them --- even if
1293they fail! (Note that \cfunction{PyDict_SetItem()} and friends don't
Fred Drakea0dbddf1998-04-02 06:50:02 +00001294take over ownership --- they are ``normal.'')
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001295
Fred Drakeec9fbe91999-02-15 16:20:25 +00001296When a C function is called from Python, it borrows references to its
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001297arguments from the caller. The caller owns a reference to the object,
1298so the borrowed reference's lifetime is guaranteed until the function
1299returns. Only when such a borrowed reference must be stored or passed
1300on, it must be turned into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001301\cfunction{Py_INCREF()}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001302
Fred Drakeec9fbe91999-02-15 16:20:25 +00001303The object reference returned from a C function that is called from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001304Python must be an owned reference --- ownership is tranferred from the
1305function to its caller.
1306
Fred Drake8e015171999-02-17 18:12:14 +00001307
Fred Drake5e8aa541998-11-16 18:34:07 +00001308\subsection{Thin Ice
1309 \label{thinIce}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001310
1311There are a few situations where seemingly harmless use of a borrowed
1312reference can lead to problems. These all have to do with implicit
1313invocations of the interpreter, which can cause the owner of a
1314reference to dispose of it.
1315
1316The first and most important case to know about is using
Fred Draked7bb3031998-03-03 17:52:07 +00001317\cfunction{Py_DECREF()} on an unrelated object while borrowing a
1318reference to a list item. For instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001319
Fred Drake1e11a5c1998-02-13 07:11:32 +00001320\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001321bug(PyObject *list) {
1322 PyObject *item = PyList_GetItem(list, 0);
Fred Drakea0dbddf1998-04-02 06:50:02 +00001323
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001324 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1325 PyObject_Print(item, stdout, 0); /* BUG! */
1326}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001327\end{verbatim}
1328
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001329This function first borrows a reference to \code{list[0]}, then
1330replaces \code{list[1]} with the value \code{0}, and finally prints
1331the borrowed reference. Looks harmless, right? But it's not!
1332
Fred Draked7bb3031998-03-03 17:52:07 +00001333Let's follow the control flow into \cfunction{PyList_SetItem()}. The list
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001334owns references to all its items, so when item 1 is replaced, it has
1335to dispose of the original item 1. Now let's suppose the original
1336item 1 was an instance of a user-defined class, and let's further
Fred Draked7bb3031998-03-03 17:52:07 +00001337suppose that the class defined a \method{__del__()} method. If this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001338class instance has a reference count of 1, disposing of it will call
Fred Draked7bb3031998-03-03 17:52:07 +00001339its \method{__del__()} method.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001340
Fred Draked7bb3031998-03-03 17:52:07 +00001341Since it is written in Python, the \method{__del__()} method can execute
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001342arbitrary Python code. Could it perhaps do something to invalidate
Fred Draked7bb3031998-03-03 17:52:07 +00001343the reference to \code{item} in \cfunction{bug()}? You bet! Assuming
1344that the list passed into \cfunction{bug()} is accessible to the
1345\method{__del__()} method, it could execute a statement to the effect of
1346\samp{del list[0]}, and assuming this was the last reference to that
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001347object, it would free the memory associated with it, thereby
1348invalidating \code{item}.
1349
1350The solution, once you know the source of the problem, is easy:
1351temporarily increment the reference count. The correct version of the
1352function reads:
1353
Fred Drake1e11a5c1998-02-13 07:11:32 +00001354\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001355no_bug(PyObject *list) {
1356 PyObject *item = PyList_GetItem(list, 0);
Fred Drakea0dbddf1998-04-02 06:50:02 +00001357
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001358 Py_INCREF(item);
1359 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1360 PyObject_Print(item, stdout, 0);
1361 Py_DECREF(item);
1362}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001363\end{verbatim}
1364
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001365This is a true story. An older version of Python contained variants
Fred Drakeec9fbe91999-02-15 16:20:25 +00001366of this bug and someone spent a considerable amount of time in a C
Fred Draked7bb3031998-03-03 17:52:07 +00001367debugger to figure out why his \method{__del__()} methods would fail...
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001368
1369The second case of problems with a borrowed reference is a variant
1370involving threads. Normally, multiple threads in the Python
1371interpreter can't get in each other's way, because there is a global
1372lock protecting Python's entire object space. However, it is possible
1373to temporarily release this lock using the macro
1374\code{Py_BEGIN_ALLOW_THREADS}, and to re-acquire it using
1375\code{Py_END_ALLOW_THREADS}. This is common around blocking I/O
1376calls, to let other threads use the CPU while waiting for the I/O to
1377complete. Obviously, the following function has the same problem as
1378the previous one:
1379
Fred Drake1e11a5c1998-02-13 07:11:32 +00001380\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001381bug(PyObject *list) {
1382 PyObject *item = PyList_GetItem(list, 0);
1383 Py_BEGIN_ALLOW_THREADS
1384 ...some blocking I/O call...
1385 Py_END_ALLOW_THREADS
1386 PyObject_Print(item, stdout, 0); /* BUG! */
1387}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001388\end{verbatim}
1389
Fred Drake8e015171999-02-17 18:12:14 +00001390
Fred Drake5e8aa541998-11-16 18:34:07 +00001391\subsection{NULL Pointers
1392 \label{nullPointers}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001393
Fred Drakea0dbddf1998-04-02 06:50:02 +00001394In general, functions that take object references as arguments do not
Fred Drake0fd82681998-01-09 05:39:38 +00001395expect you to pass them \NULL{} pointers, and will dump core (or
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001396cause later core dumps) if you do so. Functions that return object
Fred Drake0fd82681998-01-09 05:39:38 +00001397references generally return \NULL{} only to indicate that an
1398exception occurred. The reason for not testing for \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001399arguments is that functions often pass the objects they receive on to
Fred Drake0fd82681998-01-09 05:39:38 +00001400other function --- if each function were to test for \NULL{},
Fred Drake1739be52000-06-30 17:58:34 +00001401there would be a lot of redundant tests and the code would run more
1402slowly.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001403
Fred Drakee743fd01998-11-24 17:07:29 +00001404It is better to test for \NULL{} only at the ``source'', i.e.\ when a
1405pointer that may be \NULL{} is received, e.g.\ from
Fred Draked7bb3031998-03-03 17:52:07 +00001406\cfunction{malloc()} or from a function that may raise an exception.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001407
Fred Draked7bb3031998-03-03 17:52:07 +00001408The macros \cfunction{Py_INCREF()} and \cfunction{Py_DECREF()}
Fred Drakea0dbddf1998-04-02 06:50:02 +00001409do not check for \NULL{} pointers --- however, their variants
Fred Draked7bb3031998-03-03 17:52:07 +00001410\cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()} do.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001411
1412The macros for checking for a particular object type
Fred Drake0fd82681998-01-09 05:39:38 +00001413(\code{Py\var{type}_Check()}) don't check for \NULL{} pointers ---
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001414again, there is much code that calls several of these in a row to test
1415an object against various different expected types, and this would
Fred Drake0fd82681998-01-09 05:39:38 +00001416generate redundant tests. There are no variants with \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001417checking.
1418
Fred Drakeec9fbe91999-02-15 16:20:25 +00001419The C function calling mechanism guarantees that the argument list
1420passed to C functions (\code{args} in the examples) is never
Fred Drake52e2d511999-04-05 21:26:37 +00001421\NULL{} --- in fact it guarantees that it is always a tuple.\footnote{
1422These guarantees don't hold when you use the ``old'' style
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001423calling convention --- this is still found in much existing code.}
1424
Fred Drake0fd82681998-01-09 05:39:38 +00001425It is a severe error to ever let a \NULL{} pointer ``escape'' to
Fred Drake1739be52000-06-30 17:58:34 +00001426the Python user.
1427
1428% Frank Stajano:
1429% A pedagogically buggy example, along the lines of the previous listing,
1430% would be helpful here -- showing in more concrete terms what sort of
1431% actions could cause the problem. I can't very well imagine it from the
1432% description.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001433
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001434
Fred Drake5e8aa541998-11-16 18:34:07 +00001435\section{Writing Extensions in \Cpp{}
1436 \label{cplusplus}}
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001437
Guido van Rossum16d6e711994-08-08 12:30:22 +00001438It is possible to write extension modules in \Cpp{}. Some restrictions
Guido van Rossumed39cd01995-10-08 00:17:19 +00001439apply. If the main program (the Python interpreter) is compiled and
Fred Drakeec9fbe91999-02-15 16:20:25 +00001440linked by the C compiler, global or static objects with constructors
Guido van Rossumed39cd01995-10-08 00:17:19 +00001441cannot be used. This is not a problem if the main program is linked
Guido van Rossumafcd5891998-02-05 19:59:39 +00001442by the \Cpp{} compiler. Functions that will be called by the
1443Python interpreter (in particular, module initalization functions)
1444have to be declared using \code{extern "C"}.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001445It is unnecessary to enclose the Python header files in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001446\code{extern "C" \{...\}} --- they use this form already if the symbol
Fred Drake0fd82681998-01-09 05:39:38 +00001447\samp{__cplusplus} is defined (all recent \Cpp{} compilers define this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001448symbol).
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001449
Fred Drakee743fd01998-11-24 17:07:29 +00001450
Fred Drakeec9fbe91999-02-15 16:20:25 +00001451\section{Providing a C API for an Extension Module
1452 \label{using-cobjects}}
1453\sectionauthor{Konrad Hinsen}{hinsen@cnrs-orleans.fr}
Fred Drakee743fd01998-11-24 17:07:29 +00001454
Fred Drakeec9fbe91999-02-15 16:20:25 +00001455Many extension modules just provide new functions and types to be
1456used from Python, but sometimes the code in an extension module can
1457be useful for other extension modules. For example, an extension
1458module could implement a type ``collection'' which works like lists
1459without order. Just like the standard Python list type has a C API
1460which permits extension modules to create and manipulate lists, this
1461new collection type should have a set of C functions for direct
1462manipulation from other extension modules.
1463
1464At first sight this seems easy: just write the functions (without
1465declaring them \keyword{static}, of course), provide an appropriate
1466header file, and document the C API. And in fact this would work if
1467all extension modules were always linked statically with the Python
1468interpreter. When modules are used as shared libraries, however, the
1469symbols defined in one module may not be visible to another module.
1470The details of visibility depend on the operating system; some systems
1471use one global namespace for the Python interpreter and all extension
Fred Drake33698f81999-02-16 23:06:32 +00001472modules (e.g.\ Windows), whereas others require an explicit list of
1473imported symbols at module link time (e.g.\ AIX), or offer a choice of
Fred Drakeec9fbe91999-02-15 16:20:25 +00001474different strategies (most Unices). And even if symbols are globally
1475visible, the module whose functions one wishes to call might not have
1476been loaded yet!
1477
1478Portability therefore requires not to make any assumptions about
1479symbol visibility. This means that all symbols in extension modules
1480should be declared \keyword{static}, except for the module's
1481initialization function, in order to avoid name clashes with other
1482extension modules (as discussed in section~\ref{methodTable}). And it
1483means that symbols that \emph{should} be accessible from other
1484extension modules must be exported in a different way.
1485
1486Python provides a special mechanism to pass C-level information (i.e.
1487pointers) from one extension module to another one: CObjects.
1488A CObject is a Python data type which stores a pointer (\ctype{void
1489*}). CObjects can only be created and accessed via their C API, but
1490they can be passed around like any other Python object. In particular,
1491they can be assigned to a name in an extension module's namespace.
1492Other extension modules can then import this module, retrieve the
1493value of this name, and then retrieve the pointer from the CObject.
1494
1495There are many ways in which CObjects can be used to export the C API
1496of an extension module. Each name could get its own CObject, or all C
1497API pointers could be stored in an array whose address is published in
1498a CObject. And the various tasks of storing and retrieving the pointers
1499can be distributed in different ways between the module providing the
1500code and the client modules.
1501
1502The following example demonstrates an approach that puts most of the
1503burden on the writer of the exporting module, which is appropriate
1504for commonly used library modules. It stores all C API pointers
1505(just one in the example!) in an array of \ctype{void} pointers which
1506becomes the value of a CObject. The header file corresponding to
1507the module provides a macro that takes care of importing the module
1508and retrieving its C API pointers; client modules only have to call
1509this macro before accessing the C API.
1510
1511The exporting module is a modification of the \module{spam} module from
1512section~\ref{simpleExample}. The function \function{spam.system()}
1513does not call the C library function \cfunction{system()} directly,
1514but a function \cfunction{PySpam_System()}, which would of course do
1515something more complicated in reality (such as adding ``spam'' to
1516every command). This function \cfunction{PySpam_System()} is also
1517exported to other extension modules.
1518
1519The function \cfunction{PySpam_System()} is a plain C function,
1520declared \keyword{static} like everything else:
1521
1522\begin{verbatim}
1523static int
1524PySpam_System(command)
1525 char *command;
1526{
1527 return system(command);
1528}
1529\end{verbatim}
1530
1531The function \cfunction{spam_system()} is modified in a trivial way:
1532
1533\begin{verbatim}
1534static PyObject *
1535spam_system(self, args)
1536 PyObject *self;
1537 PyObject *args;
1538{
1539 char *command;
1540 int sts;
1541
1542 if (!PyArg_ParseTuple(args, "s", &command))
1543 return NULL;
1544 sts = PySpam_System(command);
1545 return Py_BuildValue("i", sts);
1546}
1547\end{verbatim}
1548
1549In the beginning of the module, right after the line
Fred Drake8e015171999-02-17 18:12:14 +00001550
Fred Drakeec9fbe91999-02-15 16:20:25 +00001551\begin{verbatim}
1552#include "Python.h"
1553\end{verbatim}
Fred Drake8e015171999-02-17 18:12:14 +00001554
Fred Drakeec9fbe91999-02-15 16:20:25 +00001555two more lines must be added:
Fred Drake8e015171999-02-17 18:12:14 +00001556
Fred Drakeec9fbe91999-02-15 16:20:25 +00001557\begin{verbatim}
1558#define SPAM_MODULE
1559#include "spammodule.h"
1560\end{verbatim}
1561
1562The \code{\#define} is used to tell the header file that it is being
1563included in the exporting module, not a client module. Finally,
1564the module's initialization function must take care of initializing
1565the C API pointer array:
Fred Drake8e015171999-02-17 18:12:14 +00001566
Fred Drakeec9fbe91999-02-15 16:20:25 +00001567\begin{verbatim}
1568void
1569initspam()
1570{
1571 PyObject *m, *d;
1572 static void *PySpam_API[PySpam_API_pointers];
1573 PyObject *c_api_object;
1574 m = Py_InitModule("spam", SpamMethods);
1575
1576 /* Initialize the C API pointer array */
1577 PySpam_API[PySpam_System_NUM] = (void *)PySpam_System;
1578
1579 /* Create a CObject containing the API pointer array's address */
1580 c_api_object = PyCObject_FromVoidPtr((void *)PySpam_API, NULL);
1581
1582 /* Create a name for this object in the module's namespace */
1583 d = PyModule_GetDict(m);
1584 PyDict_SetItemString(d, "_C_API", c_api_object);
1585}
1586\end{verbatim}
1587
1588Note that \code{PySpam_API} is declared \code{static}; otherwise
1589the pointer array would disappear when \code{initspam} terminates!
1590
1591The bulk of the work is in the header file \file{spammodule.h},
1592which looks like this:
1593
1594\begin{verbatim}
1595#ifndef Py_SPAMMODULE_H
1596#define Py_SPAMMODULE_H
1597#ifdef __cplusplus
1598extern "C" {
1599#endif
1600
1601/* Header file for spammodule */
1602
1603/* C API functions */
1604#define PySpam_System_NUM 0
1605#define PySpam_System_RETURN int
Greg Steinc2844af2000-07-09 16:27:33 +00001606#define PySpam_System_PROTO (char *command)
Fred Drakeec9fbe91999-02-15 16:20:25 +00001607
1608/* Total number of C API pointers */
1609#define PySpam_API_pointers 1
1610
1611
1612#ifdef SPAM_MODULE
1613/* This section is used when compiling spammodule.c */
1614
1615static PySpam_System_RETURN PySpam_System PySpam_System_PROTO;
1616
1617#else
1618/* This section is used in modules that use spammodule's API */
1619
1620static void **PySpam_API;
1621
1622#define PySpam_System \
1623 (*(PySpam_System_RETURN (*)PySpam_System_PROTO) PySpam_API[PySpam_System_NUM])
1624
1625#define import_spam() \
1626{ \
1627 PyObject *module = PyImport_ImportModule("spam"); \
1628 if (module != NULL) { \
1629 PyObject *module_dict = PyModule_GetDict(module); \
1630 PyObject *c_api_object = PyDict_GetItemString(module_dict, "_C_API"); \
1631 if (PyCObject_Check(c_api_object)) { \
1632 PySpam_API = (void **)PyCObject_AsVoidPtr(c_api_object); \
1633 } \
1634 } \
1635}
1636
1637#endif
1638
1639#ifdef __cplusplus
1640}
1641#endif
1642
1643#endif /* !defined(Py_SPAMMODULE_H */
1644\end{verbatim}
1645
1646All that a client module must do in order to have access to the
1647function \cfunction{PySpam_System()} is to call the function (or
1648rather macro) \cfunction{import_spam()} in its initialization
1649function:
1650
1651\begin{verbatim}
1652void
1653initclient()
1654{
1655 PyObject *m;
1656
1657 Py_InitModule("client", ClientMethods);
1658 import_spam();
1659}
1660\end{verbatim}
1661
1662The main disadvantage of this approach is that the file
1663\file{spammodule.h} is rather complicated. However, the
1664basic structure is the same for each function that is
1665exported, so it has to be learned only once.
1666
1667Finally it should be mentioned that CObjects offer additional
1668functionality, which is especially useful for memory allocation and
1669deallocation of the pointer stored in a CObject. The details
Fred Drake9fa76f11999-11-10 16:01:43 +00001670are described in the \citetitle[../api/api.html]{Python/C API
1671Reference Manual} in the section ``CObjects'' and in the
1672implementation of CObjects (files \file{Include/cobject.h} and
1673\file{Objects/cobject.c} in the Python source code distribution).
Fred Drakeec9fbe91999-02-15 16:20:25 +00001674
1675
1676\chapter{Building C and \Cpp{} Extensions on \UNIX{}
Fred Drake3de61bc1999-02-16 21:14:16 +00001677 \label{building-on-unix}}
Fred Drakee743fd01998-11-24 17:07:29 +00001678
Fred Drake33698f81999-02-16 23:06:32 +00001679\sectionauthor{Jim Fulton}{jim@Digicool.com}
Fred Drakee743fd01998-11-24 17:07:29 +00001680
1681
1682%The make file make file, building C extensions on Unix
1683
1684
1685Starting in Python 1.4, Python provides a special make file for
1686building make files for building dynamically-linked extensions and
1687custom interpreters. The make file make file builds a make file
1688that reflects various system variables determined by configure when
1689the Python interpreter was built, so people building module's don't
1690have to resupply these settings. This vastly simplifies the process
1691of building extensions and custom interpreters on Unix systems.
1692
1693The make file make file is distributed as the file
1694\file{Misc/Makefile.pre.in} in the Python source distribution. The
1695first step in building extensions or custom interpreters is to copy
1696this make file to a development directory containing extension module
1697source.
1698
1699The make file make file, \file{Makefile.pre.in} uses metadata
1700provided in a file named \file{Setup}. The format of the \file{Setup}
1701file is the same as the \file{Setup} (or \file{Setup.in}) file
1702provided in the \file{Modules/} directory of the Python source
Fred Drake33698f81999-02-16 23:06:32 +00001703distribution. The \file{Setup} file contains variable definitions:
Fred Drakee743fd01998-11-24 17:07:29 +00001704
1705\begin{verbatim}
1706EC=/projects/ExtensionClass
1707\end{verbatim}
1708
1709and module description lines. It can also contain blank lines and
1710comment lines that start with \character{\#}.
1711
1712A module description line includes a module name, source files,
1713options, variable references, and other input files, such
Fred Drake54fd8452000-04-03 04:54:28 +00001714as libraries or object files. Consider a simple example:
Fred Drakee743fd01998-11-24 17:07:29 +00001715
1716\begin{verbatim}
1717ExtensionClass ExtensionClass.c
1718\end{verbatim}
1719
1720This is the simplest form of a module definition line. It defines a
Fred Drake8e015171999-02-17 18:12:14 +00001721module, \module{ExtensionClass}, which has a single source file,
Fred Drakee743fd01998-11-24 17:07:29 +00001722\file{ExtensionClass.c}.
1723
Fred Drake8e015171999-02-17 18:12:14 +00001724This slightly more complex example uses an \strong{-I} option to
1725specify an include directory:
Fred Drakee743fd01998-11-24 17:07:29 +00001726
1727\begin{verbatim}
Fred Drake8e015171999-02-17 18:12:14 +00001728EC=/projects/ExtensionClass
Fred Drakee743fd01998-11-24 17:07:29 +00001729cPersistence cPersistence.c -I$(EC)
Fred Drake8e015171999-02-17 18:12:14 +00001730\end{verbatim} % $ <-- bow to font lock
Fred Drakee743fd01998-11-24 17:07:29 +00001731
1732This example also illustrates the format for variable references.
1733
1734For systems that support dynamic linking, the \file{Setup} file should
1735begin:
1736
1737\begin{verbatim}
1738*shared*
1739\end{verbatim}
1740
1741to indicate that the modules defined in \file{Setup} are to be built
Fred Drakedc12ec81999-03-09 18:36:55 +00001742as dynamically linked modules. A line containing only \samp{*static*}
1743can be used to indicate the subsequently listed modules should be
1744statically linked.
Fred Drakee743fd01998-11-24 17:07:29 +00001745
1746Here is a complete \file{Setup} file for building a
1747\module{cPersistent} module:
1748
1749\begin{verbatim}
1750# Set-up file to build the cPersistence module.
1751# Note that the text should begin in the first column.
1752*shared*
1753
1754# We need the path to the directory containing the ExtensionClass
1755# include file.
1756EC=/projects/ExtensionClass
1757cPersistence cPersistence.c -I$(EC)
Fred Drake8e015171999-02-17 18:12:14 +00001758\end{verbatim} % $ <-- bow to font lock
Fred Drakee743fd01998-11-24 17:07:29 +00001759
1760After the \file{Setup} file has been created, \file{Makefile.pre.in}
1761is run with the \samp{boot} target to create a make file:
1762
1763\begin{verbatim}
1764make -f Makefile.pre.in boot
1765\end{verbatim}
1766
1767This creates the file, Makefile. To build the extensions, simply
1768run the created make file:
1769
1770\begin{verbatim}
1771make
1772\end{verbatim}
1773
1774It's not necessary to re-run \file{Makefile.pre.in} if the
1775\file{Setup} file is changed. The make file automatically rebuilds
1776itself if the \file{Setup} file changes.
1777
Fred Drake8e015171999-02-17 18:12:14 +00001778
1779\section{Building Custom Interpreters \label{custom-interps}}
Fred Drakee743fd01998-11-24 17:07:29 +00001780
1781The make file built by \file{Makefile.pre.in} can be run with the
1782\samp{static} target to build an interpreter:
1783
1784\begin{verbatim}
1785make static
1786\end{verbatim}
1787
1788Any modules defined in the Setup file before the \samp{*shared*} line
1789will be statically linked into the interpreter. Typically, a
1790\samp{*shared*} line is omitted from the Setup file when a custom
1791interpreter is desired.
1792
Fred Drake8e015171999-02-17 18:12:14 +00001793
1794\section{Module Definition Options \label{module-defn-options}}
Fred Drakee743fd01998-11-24 17:07:29 +00001795
1796Several compiler options are supported:
1797
1798\begin{tableii}{l|l}{}{Option}{Meaning}
1799 \lineii{-C}{Tell the C pre-processor not to discard comments}
1800 \lineii{-D\var{name}=\var{value}}{Define a macro}
1801 \lineii{-I\var{dir}}{Specify an include directory, \var{dir}}
Fred Drake33698f81999-02-16 23:06:32 +00001802 \lineii{-L\var{dir}}{Specify a link-time library directory, \var{dir}}
1803 \lineii{-R\var{dir}}{Specify a run-time library directory, \var{dir}}
Fred Drakee743fd01998-11-24 17:07:29 +00001804 \lineii{-l\var{lib}}{Link a library, \var{lib}}
1805 \lineii{-U\var{name}}{Undefine a macro}
1806\end{tableii}
1807
1808Other compiler options can be included (snuck in) by putting them
Fred Drakedc12ec81999-03-09 18:36:55 +00001809in variables.
Fred Drakee743fd01998-11-24 17:07:29 +00001810
1811Source files can include files with \file{.c}, \file{.C}, \file{.cc},
Fred Drake8e015171999-02-17 18:12:14 +00001812\file{.cpp}, \file{.cxx}, and \file{.c++} extensions.
Fred Drakee743fd01998-11-24 17:07:29 +00001813
Fred Drake8e015171999-02-17 18:12:14 +00001814Other input files include files with \file{.a}, \file{.o}, \file{.sl},
1815and \file{.so} extensions.
Fred Drakee743fd01998-11-24 17:07:29 +00001816
1817
Fred Drake8e015171999-02-17 18:12:14 +00001818\section{Example \label{module-defn-example}}
Fred Drakee743fd01998-11-24 17:07:29 +00001819
1820Here is a more complicated example from \file{Modules/Setup.in}:
1821
1822\begin{verbatim}
1823GMP=/ufs/guido/src/gmp
1824mpz mpzmodule.c -I$(GMP) $(GMP)/libgmp.a
1825\end{verbatim}
1826
1827which could also be written as:
1828
1829\begin{verbatim}
1830mpz mpzmodule.c -I$(GMP) -L$(GMP) -lgmp
1831\end{verbatim}
1832
1833
1834\section{Distributing your extension modules
1835 \label{distributing}}
1836
1837When distributing your extension modules in source form, make sure to
1838include a \file{Setup} file. The \file{Setup} file should be named
1839\file{Setup.in} in the distribution. The make file make file,
1840\file{Makefile.pre.in}, will copy \file{Setup.in} to \file{Setup}.
1841Distributing a \file{Setup.in} file makes it easy for people to
1842customize the \file{Setup} file while keeping the original in
1843\file{Setup.in}.
1844
1845It is a good idea to include a copy of \file{Makefile.pre.in} for
1846people who do not have a source distribution of Python.
1847
1848Do not distribute a make file. People building your modules
Fred Drake8e015171999-02-17 18:12:14 +00001849should use \file{Makefile.pre.in} to build their own make file. A
1850\file{README} file included in the package should provide simple
1851instructions to perform the build.
Fred Drakee743fd01998-11-24 17:07:29 +00001852
Fred Drake33698f81999-02-16 23:06:32 +00001853Work is being done to make building and installing Python extensions
1854easier for all platforms; this work in likely to supplant the current
1855approach at some point in the future. For more information or to
1856participate in the effort, refer to
1857\url{http://www.python.org/sigs/distutils-sig/} on the Python Web
1858site.
1859
Fred Drakee743fd01998-11-24 17:07:29 +00001860
Fred Drake3de61bc1999-02-16 21:14:16 +00001861\chapter{Building C and \Cpp{} Extensions on Windows
Fred Drake33698f81999-02-16 23:06:32 +00001862 \label{building-on-windows}}
Fred Drake3de61bc1999-02-16 21:14:16 +00001863
1864
1865This chapter briefly explains how to create a Windows extension module
Fred Drake33698f81999-02-16 23:06:32 +00001866for Python using Microsoft Visual \Cpp{}, and follows with more
1867detailed background information on how it works. The explanatory
1868material is useful for both the Windows programmer learning to build
Fred Drake54fd8452000-04-03 04:54:28 +00001869Python extensions and the \UNIX{} programmer interested in producing
Fred Drake33698f81999-02-16 23:06:32 +00001870software which can be successfully built on both \UNIX{} and Windows.
1871
Fred Drake8e015171999-02-17 18:12:14 +00001872
Fred Drake33698f81999-02-16 23:06:32 +00001873\section{A Cookbook Approach \label{win-cookbook}}
1874
1875\sectionauthor{Neil Schemenauer}{neil_schemenauer@transcanada.com}
1876
1877This section provides a recipe for building a Python extension on
1878Windows.
Fred Drake3de61bc1999-02-16 21:14:16 +00001879
1880Grab the binary installer from \url{http://www.python.org/} and
1881install Python. The binary installer has all of the required header
1882files except for \file{config.h}.
1883
1884Get the source distribution and extract it into a convenient location.
1885Copy the \file{config.h} from the \file{PC/} directory into the
1886\file{include/} directory created by the installer.
1887
1888Create a \file{Setup} file for your extension module, as described in
Fred Drake54fd8452000-04-03 04:54:28 +00001889chapter \ref{building-on-unix}.
Fred Drake3de61bc1999-02-16 21:14:16 +00001890
1891Get David Ascher's \file{compile.py} script from
Fred Drakec0fcbc11999-04-29 02:30:04 +00001892\url{http://starship.python.net/crew/da/compile/}. Run the script to
Fred Drake3de61bc1999-02-16 21:14:16 +00001893create Microsoft Visual \Cpp{} project files.
1894
Fred Drake54fd8452000-04-03 04:54:28 +00001895Open the DSW file in Visual \Cpp{} and select \strong{Build}.
Fred Drake3de61bc1999-02-16 21:14:16 +00001896
1897If your module creates a new type, you may have trouble with this line:
1898
1899\begin{verbatim}
1900 PyObject_HEAD_INIT(&PyType_Type)
1901\end{verbatim}
1902
1903Change it to:
1904
1905\begin{verbatim}
1906 PyObject_HEAD_INIT(NULL)
1907\end{verbatim}
1908
1909and add the following to the module initialization function:
1910
1911\begin{verbatim}
1912 MyObject_Type.ob_type = &PyType_Type;
1913\end{verbatim}
1914
1915Refer to section 3 of the Python FAQ
1916(\url{http://www.python.org/doc/FAQ.html}) for details on why you must
1917do this.
1918
1919
Fred Drake33698f81999-02-16 23:06:32 +00001920\section{Differences Between \UNIX{} and Windows
1921 \label{dynamic-linking}}
1922\sectionauthor{Chris Phoenix}{cphoenix@best.com}
1923
1924
1925\UNIX{} and Windows use completely different paradigms for run-time
1926loading of code. Before you try to build a module that can be
1927dynamically loaded, be aware of how your system works.
1928
Fred Drake54fd8452000-04-03 04:54:28 +00001929In \UNIX{}, a shared object (\file{.so}) file contains code to be used by the
Fred Drake33698f81999-02-16 23:06:32 +00001930program, and also the names of functions and data that it expects to
1931find in the program. When the file is joined to the program, all
1932references to those functions and data in the file's code are changed
1933to point to the actual locations in the program where the functions
1934and data are placed in memory. This is basically a link operation.
1935
1936In Windows, a dynamic-link library (\file{.dll}) file has no dangling
1937references. Instead, an access to functions or data goes through a
1938lookup table. So the DLL code does not have to be fixed up at runtime
1939to refer to the program's memory; instead, the code already uses the
1940DLL's lookup table, and the lookup table is modified at runtime to
1941point to the functions and data.
1942
1943In \UNIX{}, there is only one type of library file (\file{.a}) which
1944contains code from several object files (\file{.o}). During the link
1945step to create a shared object file (\file{.so}), the linker may find
1946that it doesn't know where an identifier is defined. The linker will
1947look for it in the object files in the libraries; if it finds it, it
1948will include all the code from that object file.
1949
1950In Windows, there are two types of library, a static library and an
1951import library (both called \file{.lib}). A static library is like a
1952\UNIX{} \file{.a} file; it contains code to be included as necessary.
1953An import library is basically used only to reassure the linker that a
1954certain identifier is legal, and will be present in the program when
1955the DLL is loaded. So the linker uses the information from the
1956import library to build the lookup table for using identifiers that
1957are not included in the DLL. When an application or a DLL is linked,
1958an import library may be generated, which will need to be used for all
1959future DLLs that depend on the symbols in the application or DLL.
1960
1961Suppose you are building two dynamic-load modules, B and C, which should
1962share another block of code A. On \UNIX{}, you would \emph{not} pass
1963\file{A.a} to the linker for \file{B.so} and \file{C.so}; that would
1964cause it to be included twice, so that B and C would each have their
1965own copy. In Windows, building \file{A.dll} will also build
1966\file{A.lib}. You \emph{do} pass \file{A.lib} to the linker for B and
1967C. \file{A.lib} does not contain code; it just contains information
1968which will be used at runtime to access A's code.
1969
1970In Windows, using an import library is sort of like using \samp{import
1971spam}; it gives you access to spam's names, but does not create a
1972separate copy. On \UNIX{}, linking with a library is more like
1973\samp{from spam import *}; it does create a separate copy.
1974
1975
1976\section{Using DLLs in Practice \label{win-dlls}}
1977\sectionauthor{Chris Phoenix}{cphoenix@best.com}
1978
1979Windows Python is built in Microsoft Visual \Cpp{}; using other
1980compilers may or may not work (though Borland seems to). The rest of
1981this section is MSV\Cpp{} specific.
1982
1983When creating DLLs in Windows, you must pass \file{python15.lib} to
1984the linker. To build two DLLs, spam and ni (which uses C functions
1985found in spam), you could use these commands:
1986
1987\begin{verbatim}
1988cl /LD /I/python/include spam.c ../libs/python15.lib
1989cl /LD /I/python/include ni.c spam.lib ../libs/python15.lib
1990\end{verbatim}
1991
1992The first command created three files: \file{spam.obj},
1993\file{spam.dll} and \file{spam.lib}. \file{Spam.dll} does not contain
1994any Python functions (such as \cfunction{PyArg_ParseTuple()}), but it
1995does know how to find the Python code thanks to \file{python15.lib}.
1996
1997The second command created \file{ni.dll} (and \file{.obj} and
1998\file{.lib}), which knows how to find the necessary functions from
1999spam, and also from the Python executable.
2000
2001Not every identifier is exported to the lookup table. If you want any
2002other modules (including Python) to be able to see your identifiers,
2003you have to say \samp{_declspec(dllexport)}, as in \samp{void
2004_declspec(dllexport) initspam(void)} or \samp{PyObject
2005_declspec(dllexport) *NiGetSpamData(void)}.
2006
2007Developer Studio will throw in a lot of import libraries that you do
2008not really need, adding about 100K to your executable. To get rid of
2009them, use the Project Settings dialog, Link tab, to specify
2010\emph{ignore default libraries}. Add the correct
2011\file{msvcrt\var{xx}.lib} to the list of libraries.
2012
2013
Fred Drake5e8aa541998-11-16 18:34:07 +00002014\chapter{Embedding Python in Another Application
2015 \label{embedding}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00002016
2017Embedding Python is similar to extending it, but not quite. The
2018difference is that when you extend Python, the main program of the
Guido van Rossum16d6e711994-08-08 12:30:22 +00002019application is still the Python interpreter, while if you embed
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00002020Python, the main program may have nothing to do with Python ---
Guido van Rossum7a2dba21993-11-05 14:45:11 +00002021instead, some parts of the application occasionally call the Python
2022interpreter to run some Python code.
2023
2024So if you are embedding Python, you are providing your own main
2025program. One of the things this main program has to do is initialize
2026the Python interpreter. At the very least, you have to call the
Fred Drake54fd8452000-04-03 04:54:28 +00002027function \cfunction{Py_Initialize()} (on MacOS, call
2028\cfunction{PyMac_Initialize()} instead). There are optional calls to
Fred Draked7bb3031998-03-03 17:52:07 +00002029pass command line arguments to Python. Then later you can call the
2030interpreter from any part of the application.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00002031
2032There are several different ways to call the interpreter: you can pass
Fred Draked7bb3031998-03-03 17:52:07 +00002033a string containing Python statements to
2034\cfunction{PyRun_SimpleString()}, or you can pass a stdio file pointer
2035and a file name (for identification in error messages only) to
2036\cfunction{PyRun_SimpleFile()}. You can also call the lower-level
2037operations described in the previous chapters to construct and use
2038Python objects.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00002039
2040A simple demo of embedding Python can be found in the directory
Fred Drake295fb431999-02-16 17:29:42 +00002041\file{Demo/embed/} of the source distribution.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00002042
Guido van Rossum7a2dba21993-11-05 14:45:11 +00002043
Fred Drake5e8aa541998-11-16 18:34:07 +00002044\section{Embedding Python in \Cpp{}
2045 \label{embeddingInCplusplus}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00002046
Guido van Rossum16d6e711994-08-08 12:30:22 +00002047It is also possible to embed Python in a \Cpp{} program; precisely how this
2048is done will depend on the details of the \Cpp{} system used; in general you
2049will need to write the main program in \Cpp{}, and use the \Cpp{} compiler
2050to compile and link your program. There is no need to recompile Python
2051itself using \Cpp{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00002052
Guido van Rossum7a2dba21993-11-05 14:45:11 +00002053\end{document}