blob: d645af78740522a60a8e2c3aa8c3e138ee635b66 [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 Drake3da06a61998-02-26 18:49:12 +000047introduction to the language, see the Python Tutorial. The \emph{Python
48Reference Manual} gives a more formal definition of the language. The
49\emph{Python Library Reference} documents the existing object types,
Guido van Rossumb92112d1995-03-20 14:24:09 +000050functions and modules (both built-in and written in Python) that give
51the language its wide application range.
Guido van Rossum7a2dba21993-11-05 14:45:11 +000052
Fred Drakeec9fbe91999-02-15 16:20:25 +000053For a detailed description of the whole Python/C API, see the separate
Fred Drake8e015171999-02-17 18:12:14 +000054\emph{Python/C API Reference Manual}.
Guido van Rossumfdacc581997-10-07 14:40:16 +000055
56
Guido van Rossum7a2dba21993-11-05 14:45:11 +000057\end{abstract}
58
Fred Drake4d4f9e71998-01-13 22:25:02 +000059\tableofcontents
Guido van Rossum7a2dba21993-11-05 14:45:11 +000060
Guido van Rossumdb65a6c1993-11-05 17:11:16 +000061
Fred Drake8e015171999-02-17 18:12:14 +000062\chapter{Extending Python with C or \Cpp{} \label{intro}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000063
Guido van Rossum6f0132f1993-11-19 13:13:22 +000064
Guido van Rossumb92112d1995-03-20 14:24:09 +000065It is quite easy to add new built-in modules to Python, if you know
Fred Drakeec9fbe91999-02-15 16:20:25 +000066how to program in C. Such \dfn{extension modules} can do two things
Guido van Rossumb92112d1995-03-20 14:24:09 +000067that can't be done directly in Python: they can implement new built-in
Fred Drakeec9fbe91999-02-15 16:20:25 +000068object types, and they can call C library functions and system calls.
Guido van Rossum6938f061994-08-01 12:22:53 +000069
Guido van Rossum5049bcb1995-03-13 16:55:23 +000070To support extensions, the Python API (Application Programmers
Guido van Rossumb92112d1995-03-20 14:24:09 +000071Interface) defines a set of functions, macros and variables that
72provide access to most aspects of the Python run-time system. The
Fred Drakeec9fbe91999-02-15 16:20:25 +000073Python API is incorporated in a C source file by including the header
Guido van Rossumb92112d1995-03-20 14:24:09 +000074\code{"Python.h"}.
Guido van Rossum6938f061994-08-01 12:22:53 +000075
Guido van Rossumb92112d1995-03-20 14:24:09 +000076The compilation of an extension module depends on its intended use as
77well as on your system setup; details are given in a later section.
Guido van Rossum6938f061994-08-01 12:22:53 +000078
Guido van Rossum7a2dba21993-11-05 14:45:11 +000079
Fred Drake5e8aa541998-11-16 18:34:07 +000080\section{A Simple Example
81 \label{simpleExample}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +000082
Guido van Rossumb92112d1995-03-20 14:24:09 +000083Let's create an extension module called \samp{spam} (the favorite food
84of Monty Python fans...) and let's say we want to create a Python
Fred Drakeec9fbe91999-02-15 16:20:25 +000085interface to the C library function \cfunction{system()}.\footnote{An
Guido van Rossumb92112d1995-03-20 14:24:09 +000086interface for this function already exists in the standard module
Fred Draked7bb3031998-03-03 17:52:07 +000087\module{os} --- it was chosen as a simple and straightfoward example.}
Guido van Rossumb92112d1995-03-20 14:24:09 +000088This function takes a null-terminated character string as argument and
89returns an integer. We want this function to be callable from Python
90as follows:
91
Fred Drake1e11a5c1998-02-13 07:11:32 +000092\begin{verbatim}
93>>> import spam
94>>> status = spam.system("ls -l")
95\end{verbatim}
96
Fred Drakea0dbddf1998-04-02 06:50:02 +000097Begin by creating a file \file{spammodule.c}. (In general, if a
Fred Drakeec9fbe91999-02-15 16:20:25 +000098module is called \samp{spam}, the C file containing its implementation
Guido van Rossumb92112d1995-03-20 14:24:09 +000099is called \file{spammodule.c}; if the module name is very long, like
100\samp{spammify}, the module name can be just \file{spammify.c}.)
101
102The first line of our file can be:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000103
Fred Drake1e11a5c1998-02-13 07:11:32 +0000104\begin{verbatim}
105#include "Python.h"
106\end{verbatim}
107
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000108which pulls in the Python API (you can add a comment describing the
109purpose of the module and a copyright notice if you like).
110
Guido van Rossumb92112d1995-03-20 14:24:09 +0000111All user-visible symbols defined by \code{"Python.h"} have a prefix of
112\samp{Py} or \samp{PY}, except those defined in standard header files.
113For convenience, and since they are used extensively by the Python
114interpreter, \code{"Python.h"} includes a few standard header files:
115\code{<stdio.h>}, \code{<string.h>}, \code{<errno.h>}, and
116\code{<stdlib.h>}. If the latter header file does not exist on your
Fred Draked7bb3031998-03-03 17:52:07 +0000117system, it declares the functions \cfunction{malloc()},
118\cfunction{free()} and \cfunction{realloc()} directly.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000119
Fred Drakeec9fbe91999-02-15 16:20:25 +0000120The next thing we add to our module file is the C function that will
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000121be called when the Python expression \samp{spam.system(\var{string})}
Guido van Rossumb92112d1995-03-20 14:24:09 +0000122is evaluated (we'll see shortly how it ends up being called):
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000123
Fred Drake1e11a5c1998-02-13 07:11:32 +0000124\begin{verbatim}
125static PyObject *
126spam_system(self, args)
127 PyObject *self;
128 PyObject *args;
129{
130 char *command;
131 int sts;
Fred Drakea0dbddf1998-04-02 06:50:02 +0000132
Fred Drake1e11a5c1998-02-13 07:11:32 +0000133 if (!PyArg_ParseTuple(args, "s", &command))
134 return NULL;
135 sts = system(command);
136 return Py_BuildValue("i", sts);
137}
138\end{verbatim}
139
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000140There is a straightforward translation from the argument list in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000141Python (e.g.\ the single expression \code{"ls -l"}) to the arguments
Fred Drakeec9fbe91999-02-15 16:20:25 +0000142passed to the C function. The C function always has two arguments,
Guido van Rossumb92112d1995-03-20 14:24:09 +0000143conventionally named \var{self} and \var{args}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000144
Fred Drakeec9fbe91999-02-15 16:20:25 +0000145The \var{self} argument is only used when the C function implements a
Fred Drake9226d8e1999-02-22 14:55:46 +0000146built-in method, not a function. In the example, \var{self} will
147always be a \NULL{} pointer, since we are defining a function, not a
148method. (This is done so that the interpreter doesn't have to
149understand two different types of C functions.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000150
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000151The \var{args} argument will be a pointer to a Python tuple object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000152containing the arguments. Each item of the tuple corresponds to an
153argument in the call's argument list. The arguments are Python
Fred Drakeec9fbe91999-02-15 16:20:25 +0000154objects --- in order to do anything with them in our C function we have
155to convert them to C values. The function \cfunction{PyArg_ParseTuple()}
156in the Python API checks the argument types and converts them to C
Guido van Rossumb92112d1995-03-20 14:24:09 +0000157values. It uses a template string to determine the required types of
Fred Drakeec9fbe91999-02-15 16:20:25 +0000158the arguments as well as the types of the C variables into which to
Guido van Rossumb92112d1995-03-20 14:24:09 +0000159store the converted values. More about this later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000160
Fred Drake3da06a61998-02-26 18:49:12 +0000161\cfunction{PyArg_ParseTuple()} returns true (nonzero) if all arguments have
Guido van Rossumb92112d1995-03-20 14:24:09 +0000162the right type and its components have been stored in the variables
163whose addresses are passed. It returns false (zero) if an invalid
164argument list was passed. In the latter case it also raises an
165appropriate exception by so the calling function can return
Fred Drake0fd82681998-01-09 05:39:38 +0000166\NULL{} immediately (as we saw in the example).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000167
168
Fred Drake5e8aa541998-11-16 18:34:07 +0000169\section{Intermezzo: Errors and Exceptions
170 \label{errors}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000171
172An important convention throughout the Python interpreter is the
173following: when a function fails, it should set an exception condition
Fred Drake0fd82681998-01-09 05:39:38 +0000174and return an error value (usually a \NULL{} pointer). Exceptions
Guido van Rossumb92112d1995-03-20 14:24:09 +0000175are stored in a static global variable inside the interpreter; if this
Fred Drake0fd82681998-01-09 05:39:38 +0000176variable is \NULL{} no exception has occurred. A second global
Guido van Rossumb92112d1995-03-20 14:24:09 +0000177variable stores the ``associated value'' of the exception (the second
Fred Draked7bb3031998-03-03 17:52:07 +0000178argument to \keyword{raise}). A third variable contains the stack
Guido van Rossumb92112d1995-03-20 14:24:09 +0000179traceback in case the error originated in Python code. These three
Fred Drakeec9fbe91999-02-15 16:20:25 +0000180variables are the C equivalents of the Python variables
Fred Drakef9918f21999-02-05 18:30:49 +0000181\code{sys.exc_type}, \code{sys.exc_value} and \code{sys.exc_traceback} (see
182the section on module \module{sys} in the \emph{Python Library
Fred Draked7bb3031998-03-03 17:52:07 +0000183Reference}). It is important to know about them to understand how
184errors are passed around.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000185
Guido van Rossumb92112d1995-03-20 14:24:09 +0000186The Python API defines a number of functions to set various types of
187exceptions.
188
Fred Draked7bb3031998-03-03 17:52:07 +0000189The most common one is \cfunction{PyErr_SetString()}. Its arguments
Fred Drakeec9fbe91999-02-15 16:20:25 +0000190are an exception object and a C string. The exception object is
Fred Draked7bb3031998-03-03 17:52:07 +0000191usually a predefined object like \cdata{PyExc_ZeroDivisionError}. The
Fred Drakeec9fbe91999-02-15 16:20:25 +0000192C string indicates the cause of the error and is converted to a
Fred Draked7bb3031998-03-03 17:52:07 +0000193Python string object and stored as the ``associated value'' of the
194exception.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000195
Fred Draked7bb3031998-03-03 17:52:07 +0000196Another useful function is \cfunction{PyErr_SetFromErrno()}, which only
Guido van Rossumb92112d1995-03-20 14:24:09 +0000197takes an exception argument and constructs the associated value by
Fred Draked7bb3031998-03-03 17:52:07 +0000198inspection of the (\UNIX{}) global variable \cdata{errno}. The most
199general function is \cfunction{PyErr_SetObject()}, which takes two object
Guido van Rossumb92112d1995-03-20 14:24:09 +0000200arguments, the exception and its associated value. You don't need to
Fred Draked7bb3031998-03-03 17:52:07 +0000201\cfunction{Py_INCREF()} the objects passed to any of these functions.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000202
203You can test non-destructively whether an exception has been set with
Fred Draked7bb3031998-03-03 17:52:07 +0000204\cfunction{PyErr_Occurred()}. This returns the current exception object,
Fred Drake0fd82681998-01-09 05:39:38 +0000205or \NULL{} if no exception has occurred. You normally don't need
Fred Draked7bb3031998-03-03 17:52:07 +0000206to call \cfunction{PyErr_Occurred()} to see whether an error occurred in a
Guido van Rossumb92112d1995-03-20 14:24:09 +0000207function call, since you should be able to tell from the return value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000208
Guido van Rossumd16ddb61996-12-13 02:38:17 +0000209When a function \var{f} that calls another function \var{g} detects
Guido van Rossumb92112d1995-03-20 14:24:09 +0000210that the latter fails, \var{f} should itself return an error value
Fred Drake33698f81999-02-16 23:06:32 +0000211(e.g.\ \NULL{} or \code{-1}). It should \emph{not} call one of the
Fred Draked7bb3031998-03-03 17:52:07 +0000212\cfunction{PyErr_*()} functions --- one has already been called by \var{g}.
Guido van Rossumb92112d1995-03-20 14:24:09 +0000213\var{f}'s caller is then supposed to also return an error indication
Fred Draked7bb3031998-03-03 17:52:07 +0000214to \emph{its} caller, again \emph{without} calling \cfunction{PyErr_*()},
Guido van Rossumb92112d1995-03-20 14:24:09 +0000215and so on --- the most detailed cause of the error was already
216reported by the function that first detected it. Once the error
217reaches the Python interpreter's main loop, this aborts the currently
218executing Python code and tries to find an exception handler specified
219by the Python programmer.
Guido van Rossum6938f061994-08-01 12:22:53 +0000220
221(There are situations where a module can actually give a more detailed
Fred Draked7bb3031998-03-03 17:52:07 +0000222error message by calling another \cfunction{PyErr_*()} function, and in
Guido van Rossumb92112d1995-03-20 14:24:09 +0000223such cases it is fine to do so. As a general rule, however, this is
224not necessary, and can cause information about the cause of the error
225to be lost: most operations can fail for a variety of reasons.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000226
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000227To ignore an exception set by a function call that failed, the exception
Fred Draked7bb3031998-03-03 17:52:07 +0000228condition must be cleared explicitly by calling \cfunction{PyErr_Clear()}.
Fred Drakeec9fbe91999-02-15 16:20:25 +0000229The only time C code should call \cfunction{PyErr_Clear()} is if it doesn't
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000230want to pass the error on to the interpreter but wants to handle it
Fred Drake33698f81999-02-16 23:06:32 +0000231completely by itself (e.g.\ by trying something else or pretending
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000232nothing happened).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000233
Fred Draked7bb3031998-03-03 17:52:07 +0000234Note that a failing \cfunction{malloc()} call must be turned into an
235exception --- the direct caller of \cfunction{malloc()} (or
236\cfunction{realloc()}) must call \cfunction{PyErr_NoMemory()} and
237return a failure indicator itself. All the object-creating functions
238(\cfunction{PyInt_FromLong()} etc.) already do this, so only if you
239call \cfunction{malloc()} directly this note is of importance.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000240
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000241Also note that, with the important exception of
Fred Drake3da06a61998-02-26 18:49:12 +0000242\cfunction{PyArg_ParseTuple()} and friends, functions that return an
Guido van Rossumb92112d1995-03-20 14:24:09 +0000243integer status usually return a positive value or zero for success and
244\code{-1} for failure, like \UNIX{} system calls.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000245
Fred Draked7bb3031998-03-03 17:52:07 +0000246Finally, be careful to clean up garbage (by making
247\cfunction{Py_XDECREF()} or \cfunction{Py_DECREF()} calls for objects
248you have already created) when you return an error indicator!
Guido van Rossum6938f061994-08-01 12:22:53 +0000249
250The choice of which exception to raise is entirely yours. There are
Fred Drakeec9fbe91999-02-15 16:20:25 +0000251predeclared C objects corresponding to all built-in Python exceptions,
Fred Drakeabfd7d61999-02-16 17:34:51 +0000252e.g.\ \cdata{PyExc_ZeroDivisionError}, which you can use directly. Of
Guido van Rossumb92112d1995-03-20 14:24:09 +0000253course, you should choose exceptions wisely --- don't use
Fred Draked7bb3031998-03-03 17:52:07 +0000254\cdata{PyExc_TypeError} to mean that a file couldn't be opened (that
255should probably be \cdata{PyExc_IOError}). If something's wrong with
Fred Drake3da06a61998-02-26 18:49:12 +0000256the argument list, the \cfunction{PyArg_ParseTuple()} function usually
Fred Draked7bb3031998-03-03 17:52:07 +0000257raises \cdata{PyExc_TypeError}. If you have an argument whose value
Fred Drakedc12ec81999-03-09 18:36:55 +0000258must be in a particular range or must satisfy other conditions,
Fred Draked7bb3031998-03-03 17:52:07 +0000259\cdata{PyExc_ValueError} is appropriate.
Guido van Rossum6938f061994-08-01 12:22:53 +0000260
261You can also define a new exception that is unique to your module.
262For this, you usually declare a static object variable at the
263beginning of your file, e.g.
264
Fred Drake1e11a5c1998-02-13 07:11:32 +0000265\begin{verbatim}
266static PyObject *SpamError;
267\end{verbatim}
268
Guido van Rossum6938f061994-08-01 12:22:53 +0000269and initialize it in your module's initialization function
Fred Drake33698f81999-02-16 23:06:32 +0000270(\cfunction{initspam()}) with an exception object, e.g.\ (leaving out
Fred Draked7bb3031998-03-03 17:52:07 +0000271the error checking for now):
Guido van Rossum6938f061994-08-01 12:22:53 +0000272
Fred Drake1e11a5c1998-02-13 07:11:32 +0000273\begin{verbatim}
274void
275initspam()
276{
277 PyObject *m, *d;
Fred Drakea0dbddf1998-04-02 06:50:02 +0000278
Fred Drake1e11a5c1998-02-13 07:11:32 +0000279 m = Py_InitModule("spam", SpamMethods);
280 d = PyModule_GetDict(m);
Fred Draked7bb3031998-03-03 17:52:07 +0000281 SpamError = PyErr_NewException("spam.error", NULL, NULL);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000282 PyDict_SetItemString(d, "error", SpamError);
283}
284\end{verbatim}
285
Guido van Rossumb92112d1995-03-20 14:24:09 +0000286Note that the Python name for the exception object is
Fred Draked7bb3031998-03-03 17:52:07 +0000287\exception{spam.error}. The \cfunction{PyErr_NewException()} function
288may create either a string or class, depending on whether the
289\samp{-X} flag was passed to the interpreter. If \samp{-X} was used,
290\cdata{SpamError} will be a string object, otherwise it will be a
291class object with the base class being \exception{Exception},
292described in the \emph{Python Library Reference} under ``Built-in
293Exceptions.''
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000294
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000295
Fred Drake5e8aa541998-11-16 18:34:07 +0000296\section{Back to the Example
297 \label{backToExample}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000298
299Going back to our example function, you should now be able to
300understand this statement:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000301
Fred Drake1e11a5c1998-02-13 07:11:32 +0000302\begin{verbatim}
303 if (!PyArg_ParseTuple(args, "s", &command))
304 return NULL;
305\end{verbatim}
306
Fred Drake0fd82681998-01-09 05:39:38 +0000307It returns \NULL{} (the error indicator for functions returning
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000308object pointers) if an error is detected in the argument list, relying
Fred Drake3da06a61998-02-26 18:49:12 +0000309on the exception set by \cfunction{PyArg_ParseTuple()}. Otherwise the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000310string value of the argument has been copied to the local variable
Fred Draked7bb3031998-03-03 17:52:07 +0000311\cdata{command}. This is a pointer assignment and you are not supposed
Fred Drakeec9fbe91999-02-15 16:20:25 +0000312to modify the string to which it points (so in Standard C, the variable
Fred Draked7bb3031998-03-03 17:52:07 +0000313\cdata{command} should properly be declared as \samp{const char
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000314*command}).
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000315
Fred Draked7bb3031998-03-03 17:52:07 +0000316The next statement is a call to the \UNIX{} function
317\cfunction{system()}, passing it the string we just got from
318\cfunction{PyArg_ParseTuple()}:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000319
Fred Drake1e11a5c1998-02-13 07:11:32 +0000320\begin{verbatim}
321 sts = system(command);
322\end{verbatim}
323
Fred Draked7bb3031998-03-03 17:52:07 +0000324Our \function{spam.system()} function must return the value of
325\cdata{sts} as a Python object. This is done using the function
326\cfunction{Py_BuildValue()}, which is something like the inverse of
327\cfunction{PyArg_ParseTuple()}: it takes a format string and an
Fred Drakeec9fbe91999-02-15 16:20:25 +0000328arbitrary number of C values, and returns a new Python object.
Fred Draked7bb3031998-03-03 17:52:07 +0000329More info on \cfunction{Py_BuildValue()} is given later.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000330
Fred Drake1e11a5c1998-02-13 07:11:32 +0000331\begin{verbatim}
332 return Py_BuildValue("i", sts);
333\end{verbatim}
334
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000335In this case, it will return an integer object. (Yes, even integers
336are objects on the heap in Python!)
Guido van Rossum6938f061994-08-01 12:22:53 +0000337
Fred Drakeec9fbe91999-02-15 16:20:25 +0000338If you have a C function that returns no useful argument (a function
Fred Draked7bb3031998-03-03 17:52:07 +0000339returning \ctype{void}), the corresponding Python function must return
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000340\code{None}. You need this idiom to do so:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000341
Fred Drake1e11a5c1998-02-13 07:11:32 +0000342\begin{verbatim}
343 Py_INCREF(Py_None);
344 return Py_None;
345\end{verbatim}
346
Fred Drakeec9fbe91999-02-15 16:20:25 +0000347\cdata{Py_None} is the C name for the special Python object
Fred Drakea0dbddf1998-04-02 06:50:02 +0000348\code{None}. It is a genuine Python object rather than a \NULL{}
349pointer, which means ``error'' in most contexts, as we have seen.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000350
351
Fred Drake5e8aa541998-11-16 18:34:07 +0000352\section{The Module's Method Table and Initialization Function
353 \label{methodTable}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000354
Fred Draked7bb3031998-03-03 17:52:07 +0000355I promised to show how \cfunction{spam_system()} is called from Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000356programs. First, we need to list its name and address in a ``method
357table'':
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000358
Fred Drake1e11a5c1998-02-13 07:11:32 +0000359\begin{verbatim}
360static PyMethodDef SpamMethods[] = {
361 ...
362 {"system", spam_system, METH_VARARGS},
363 ...
364 {NULL, NULL} /* Sentinel */
365};
366\end{verbatim}
367
Fred Drake0fd82681998-01-09 05:39:38 +0000368Note the third entry (\samp{METH_VARARGS}). This is a flag telling
Fred Drakeec9fbe91999-02-15 16:20:25 +0000369the interpreter the calling convention to be used for the C
Fred Drake0fd82681998-01-09 05:39:38 +0000370function. It should normally always be \samp{METH_VARARGS} or
Fred Drakea0dbddf1998-04-02 06:50:02 +0000371\samp{METH_VARARGS | METH_KEYWORDS}; a value of \code{0} means that an
Fred Drake3da06a61998-02-26 18:49:12 +0000372obsolete variant of \cfunction{PyArg_ParseTuple()} is used.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000373
Fred Drakeb6e50321998-02-04 20:26:31 +0000374When using only \samp{METH_VARARGS}, the function should expect
375the Python-level parameters to be passed in as a tuple acceptable for
376parsing via \cfunction{PyArg_ParseTuple()}; more information on this
377function is provided below.
378
Fred Draked7bb3031998-03-03 17:52:07 +0000379The \constant{METH_KEYWORDS} bit may be set in the third field if keyword
Fred Drakeec9fbe91999-02-15 16:20:25 +0000380arguments should be passed to the function. In this case, the C
Fred Drake0fd82681998-01-09 05:39:38 +0000381function should accept a third \samp{PyObject *} parameter which will
Fred Drake3da06a61998-02-26 18:49:12 +0000382be a dictionary of keywords. Use \cfunction{PyArg_ParseTupleAndKeywords()}
Fred Drakedc12ec81999-03-09 18:36:55 +0000383to parse the arguments to such a function.
Fred Drake0fd82681998-01-09 05:39:38 +0000384
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000385The method table must be passed to the interpreter in the module's
386initialization function (which should be the only non-\code{static}
387item defined in the module file):
388
Fred Drake1e11a5c1998-02-13 07:11:32 +0000389\begin{verbatim}
390void
391initspam()
392{
393 (void) Py_InitModule("spam", SpamMethods);
394}
395\end{verbatim}
396
Fred Draked7bb3031998-03-03 17:52:07 +0000397When the Python program imports module \module{spam} for the first
398time, \cfunction{initspam()} is called. It calls
399\cfunction{Py_InitModule()}, which creates a ``module object'' (which
400is inserted in the dictionary \code{sys.modules} under the key
401\code{"spam"}), and inserts built-in function objects into the newly
402created module based upon the table (an array of \ctype{PyMethodDef}
403structures) that was passed as its second argument.
404\cfunction{Py_InitModule()} returns a pointer to the module object
405that it creates (which is unused here). It aborts with a fatal error
406if the module could not be initialized satisfactorily, so the caller
407doesn't need to check for errors.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000408
409
Fred Drake5e8aa541998-11-16 18:34:07 +0000410\section{Compilation and Linkage
411 \label{compilation}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000412
Guido van Rossumb92112d1995-03-20 14:24:09 +0000413There are two more things to do before you can use your new extension:
414compiling and linking it with the Python system. If you use dynamic
415loading, the details depend on the style of dynamic loading your
Fred Drakea0dbddf1998-04-02 06:50:02 +0000416system uses; see the chapter ``Dynamic Loading'' for more information
417about this.
Guido van Rossum6938f061994-08-01 12:22:53 +0000418
419If you can't use dynamic loading, or if you want to make your module a
420permanent part of the Python interpreter, you will have to change the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000421configuration setup and rebuild the interpreter. Luckily, this is
422very simple: just place your file (\file{spammodule.c} for example) in
Fred Drakea4a90dd1999-04-29 02:44:50 +0000423the \file{Modules/} directory of an unpacked source distribution, add
424a line to the file \file{Modules/Setup.local} describing your file:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000425
Fred Drake1e11a5c1998-02-13 07:11:32 +0000426\begin{verbatim}
427spam spammodule.o
428\end{verbatim}
429
Fred Draked7bb3031998-03-03 17:52:07 +0000430and rebuild the interpreter by running \program{make} in the toplevel
Fred Drakea4a90dd1999-04-29 02:44:50 +0000431directory. You can also run \program{make} in the \file{Modules/}
Fred Drakea0dbddf1998-04-02 06:50:02 +0000432subdirectory, but then you must first rebuild \file{Makefile}
Fred Draked7bb3031998-03-03 17:52:07 +0000433there by running `\program{make} Makefile'. (This is necessary each
434time you change the \file{Setup} file.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000435
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000436If your module requires additional libraries to link with, these can
Fred Drakea0dbddf1998-04-02 06:50:02 +0000437be listed on the line in the configuration file as well, for instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000438
Fred Drake1e11a5c1998-02-13 07:11:32 +0000439\begin{verbatim}
440spam spammodule.o -lX11
441\end{verbatim}
442
Fred Drakeec9fbe91999-02-15 16:20:25 +0000443\section{Calling Python Functions from C
Fred Drake5e8aa541998-11-16 18:34:07 +0000444 \label{callingPython}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000445
Fred Drakeec9fbe91999-02-15 16:20:25 +0000446So far we have concentrated on making C functions callable from
447Python. The reverse is also useful: calling Python functions from C.
Guido van Rossum6938f061994-08-01 12:22:53 +0000448This is especially the case for libraries that support so-called
Fred Drakeec9fbe91999-02-15 16:20:25 +0000449``callback'' functions. If a C interface makes use of callbacks, the
Guido van Rossum6938f061994-08-01 12:22:53 +0000450equivalent Python often needs to provide a callback mechanism to the
451Python programmer; the implementation will require calling the Python
Fred Drakeec9fbe91999-02-15 16:20:25 +0000452callback functions from a C callback. Other uses are also imaginable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000453
454Fortunately, the Python interpreter is easily called recursively, and
Guido van Rossum6938f061994-08-01 12:22:53 +0000455there is a standard interface to call a Python function. (I won't
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000456dwell on how to call the Python parser with a particular string as
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000457input --- if you're interested, have a look at the implementation of
Fred Drake5e8aa541998-11-16 18:34:07 +0000458the \samp{-c} command line option in \file{Python/pythonmain.c} from
459the Python source code.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000460
461Calling a Python function is easy. First, the Python program must
462somehow pass you the Python function object. You should provide a
463function (or some other interface) to do this. When this function is
464called, save a pointer to the Python function object (be careful to
Fred Drakedc12ec81999-03-09 18:36:55 +0000465\cfunction{Py_INCREF()} it!) in a global variable --- or wherever you
Fred Draked7bb3031998-03-03 17:52:07 +0000466see fit. For example, the following function might be part of a module
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000467definition:
468
Fred Drake1e11a5c1998-02-13 07:11:32 +0000469\begin{verbatim}
470static PyObject *my_callback = NULL;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000471
Fred Drake1e11a5c1998-02-13 07:11:32 +0000472static PyObject *
473my_set_callback(dummy, arg)
474 PyObject *dummy, *arg;
475{
Fred Drake5e8aa541998-11-16 18:34:07 +0000476 PyObject *result = NULL;
477 PyObject *temp;
478
479 if (PyArg_ParseTuple(args, "O:set_callback", &temp)) {
480 if (!PyCallable_Check(temp)) {
481 PyErr_SetString(PyExc_TypeError, "parameter must be callable");
482 return NULL;
483 }
484 Py_XINCREF(temp); /* Add a reference to new callback */
485 Py_XDECREF(my_callback); /* Dispose of previous callback */
486 my_callback = temp; /* Remember new callback */
487 /* Boilerplate to return "None" */
488 Py_INCREF(Py_None);
489 result = Py_None;
490 }
491 return result;
Fred Drake1e11a5c1998-02-13 07:11:32 +0000492}
493\end{verbatim}
494
Fred Drake5e8aa541998-11-16 18:34:07 +0000495This function must be registered with the interpreter using the
Fred Drake5f342ac1999-04-29 02:47:40 +0000496\constant{METH_VARARGS} flag; this is described in section
Fred Drake5e8aa541998-11-16 18:34:07 +0000497\ref{methodTable}, ``The Module's Method Table and Initialization
498Function.'' The \cfunction{PyArg_ParseTuple()} function and its
Fred Drake5f342ac1999-04-29 02:47:40 +0000499arguments are documented in section \ref{parseTuple}, ``Format Strings
Fred Drake5e8aa541998-11-16 18:34:07 +0000500for \cfunction{PyArg_ParseTuple()}.''
501
Fred Draked7bb3031998-03-03 17:52:07 +0000502The macros \cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()}
503increment/decrement the reference count of an object and are safe in
Fred Drake5e8aa541998-11-16 18:34:07 +0000504the presence of \NULL{} pointers (but note that \var{temp} will not be
Fred Drake5f342ac1999-04-29 02:47:40 +0000505\NULL{} in this context). More info on them in section
Fred Drake5e8aa541998-11-16 18:34:07 +0000506\ref{refcounts}, ``Reference Counts.''
Guido van Rossum6938f061994-08-01 12:22:53 +0000507
Fred Drakeec9fbe91999-02-15 16:20:25 +0000508Later, when it is time to call the function, you call the C function
Fred Draked7bb3031998-03-03 17:52:07 +0000509\cfunction{PyEval_CallObject()}. This function has two arguments, both
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000510pointers to arbitrary Python objects: the Python function, and the
511argument list. The argument list must always be a tuple object, whose
512length is the number of arguments. To call the Python function with
513no arguments, pass an empty tuple; to call it with one argument, pass
Fred Draked7bb3031998-03-03 17:52:07 +0000514a singleton tuple. \cfunction{Py_BuildValue()} returns a tuple when its
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000515format string consists of zero or more format codes between
516parentheses. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000517
Fred Drake1e11a5c1998-02-13 07:11:32 +0000518\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000519 int arg;
520 PyObject *arglist;
521 PyObject *result;
522 ...
523 arg = 123;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000524 ...
525 /* Time to call the callback */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000526 arglist = Py_BuildValue("(i)", arg);
527 result = PyEval_CallObject(my_callback, arglist);
528 Py_DECREF(arglist);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000529\end{verbatim}
530
Fred Draked7bb3031998-03-03 17:52:07 +0000531\cfunction{PyEval_CallObject()} returns a Python object pointer: this is
532the return value of the Python function. \cfunction{PyEval_CallObject()} is
Guido van Rossumb92112d1995-03-20 14:24:09 +0000533``reference-count-neutral'' with respect to its arguments. In the
Guido van Rossum6938f061994-08-01 12:22:53 +0000534example a new tuple was created to serve as the argument list, which
Fred Draked7bb3031998-03-03 17:52:07 +0000535is \cfunction{Py_DECREF()}-ed immediately after the call.
Guido van Rossum6938f061994-08-01 12:22:53 +0000536
Fred Draked7bb3031998-03-03 17:52:07 +0000537The return value of \cfunction{PyEval_CallObject()} is ``new'': either it
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000538is a brand new object, or it is an existing object whose reference
539count has been incremented. So, unless you want to save it in a
Fred Draked7bb3031998-03-03 17:52:07 +0000540global variable, you should somehow \cfunction{Py_DECREF()} the result,
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000541even (especially!) if you are not interested in its value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000542
543Before you do this, however, it is important to check that the return
Fred Draked7bb3031998-03-03 17:52:07 +0000544value isn't \NULL{}. If it is, the Python function terminated by
Fred Drakeec9fbe91999-02-15 16:20:25 +0000545raising an exception. If the C code that called
Fred Draked7bb3031998-03-03 17:52:07 +0000546\cfunction{PyEval_CallObject()} is called from Python, it should now
547return an error indication to its Python caller, so the interpreter
548can print a stack trace, or the calling Python code can handle the
549exception. If this is not possible or desirable, the exception should
550be cleared by calling \cfunction{PyErr_Clear()}. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000551
Fred Drake1e11a5c1998-02-13 07:11:32 +0000552\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000553 if (result == NULL)
554 return NULL; /* Pass error back */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000555 ...use result...
556 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000557\end{verbatim}
558
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000559Depending on the desired interface to the Python callback function,
Fred Draked7bb3031998-03-03 17:52:07 +0000560you may also have to provide an argument list to
561\cfunction{PyEval_CallObject()}. In some cases the argument list is
562also provided by the Python program, through the same interface that
563specified the callback function. It can then be saved and used in the
564same manner as the function object. In other cases, you may have to
565construct a new tuple to pass as the argument list. The simplest way
566to do this is to call \cfunction{Py_BuildValue()}. For example, if
567you want to pass an integral event code, you might use the following
568code:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000569
Fred Drake1e11a5c1998-02-13 07:11:32 +0000570\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000571 PyObject *arglist;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000572 ...
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000573 arglist = Py_BuildValue("(l)", eventcode);
574 result = PyEval_CallObject(my_callback, arglist);
575 Py_DECREF(arglist);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000576 if (result == NULL)
577 return NULL; /* Pass error back */
578 /* Here maybe use the result */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000579 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000580\end{verbatim}
581
Fred Draked7bb3031998-03-03 17:52:07 +0000582Note the placement of \samp{Py_DECREF(arglist)} immediately after the
583call, before the error check! Also note that strictly spoken this
584code is not complete: \cfunction{Py_BuildValue()} may run out of
585memory, and this should be checked.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000586
587
Fred Drake5e8aa541998-11-16 18:34:07 +0000588\section{Format Strings for \cfunction{PyArg_ParseTuple()}
589 \label{parseTuple}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000590
Fred Drake3da06a61998-02-26 18:49:12 +0000591The \cfunction{PyArg_ParseTuple()} function is declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000592
Fred Drake1e11a5c1998-02-13 07:11:32 +0000593\begin{verbatim}
594int PyArg_ParseTuple(PyObject *arg, char *format, ...);
595\end{verbatim}
596
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000597The \var{arg} argument must be a tuple object containing an argument
Fred Drakeec9fbe91999-02-15 16:20:25 +0000598list passed from Python to a C function. The \var{format} argument
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000599must be a format string, whose syntax is explained below. The
600remaining arguments must be addresses of variables whose type is
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000601determined by the format string. For the conversion to succeed, the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000602\var{arg} object must match the format and the format must be
603exhausted.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000604
Fred Drake3da06a61998-02-26 18:49:12 +0000605Note that while \cfunction{PyArg_ParseTuple()} checks that the Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000606arguments have the required types, it cannot check the validity of the
Fred Drakeec9fbe91999-02-15 16:20:25 +0000607addresses of C variables passed to the call: if you make mistakes
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000608there, your code will probably crash or at least overwrite random bits
609in memory. So be careful!
610
611A format string consists of zero or more ``format units''. A format
612unit describes one Python object; it is usually a single character or
613a parenthesized sequence of format units. With a few exceptions, a
614format unit that is not a parenthesized sequence normally corresponds
Fred Drake3da06a61998-02-26 18:49:12 +0000615to a single address argument to \cfunction{PyArg_ParseTuple()}. In the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000616following description, the quoted form is the format unit; the entry
617in (round) parentheses is the Python object type that matches the
Fred Drakeec9fbe91999-02-15 16:20:25 +0000618format unit; and the entry in [square] brackets is the type of the C
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000619variable(s) whose address should be passed. (Use the \samp{\&}
620operator to pass a variable's address.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000621
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000622\begin{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000623
Fred Drake3fe985f1998-03-04 03:51:42 +0000624\item[\samp{s} (string) {[char *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000625Convert a Python string to a C pointer to a character string. You
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000626must not provide storage for the string itself; a pointer to an
627existing string is stored into the character pointer variable whose
Fred Drakeec9fbe91999-02-15 16:20:25 +0000628address you pass. The C string is null-terminated. The Python string
Fred Drake3da06a61998-02-26 18:49:12 +0000629must not contain embedded null bytes; if it does, a \exception{TypeError}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000630exception is raised.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000631
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000632\item[\samp{s\#} (string) {[char *, int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000633This variant on \samp{s} stores into two C variables, the first one
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000634a pointer to a character string, the second one its length. In this
635case the Python string may contain embedded null bytes.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000636
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000637\item[\samp{z} (string or \code{None}) {[char *]}]
638Like \samp{s}, but the Python object may also be \code{None}, in which
Fred Drakeec9fbe91999-02-15 16:20:25 +0000639case the C pointer is set to \NULL{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000640
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000641\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000642This is to \samp{s\#} as \samp{z} is to \samp{s}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000643
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000644\item[\samp{b} (integer) {[char]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000645Convert a Python integer to a tiny int, stored in a C \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000646
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000647\item[\samp{h} (integer) {[short int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000648Convert a Python integer to a C \ctype{short int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000649
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000650\item[\samp{i} (integer) {[int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000651Convert a Python integer to a plain C \ctype{int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000652
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000653\item[\samp{l} (integer) {[long int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000654Convert a Python integer to a C \ctype{long int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000655
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000656\item[\samp{c} (string of length 1) {[char]}]
657Convert a Python character, represented as a string of length 1, to a
Fred Drakeec9fbe91999-02-15 16:20:25 +0000658C \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000659
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000660\item[\samp{f} (float) {[float]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000661Convert a Python floating point number to a C \ctype{float}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000662
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000663\item[\samp{d} (float) {[double]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000664Convert a Python floating point number to a C \ctype{double}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000665
Fred Drakeb6e50321998-02-04 20:26:31 +0000666\item[\samp{D} (complex) {[Py_complex]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000667Convert a Python complex number to a C \ctype{Py_complex} structure.
Fred Drakeb6e50321998-02-04 20:26:31 +0000668
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000669\item[\samp{O} (object) {[PyObject *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000670Store a Python object (without any conversion) in a C object pointer.
671The C program thus receives the actual object that was passed. The
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000672object's reference count is not increased. The pointer stored is not
Fred Drake0fd82681998-01-09 05:39:38 +0000673\NULL{}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000674
Fred Drake3fe985f1998-03-04 03:51:42 +0000675\item[\samp{O!} (object) {[\var{typeobject}, PyObject *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000676Store a Python object in a C object pointer. This is similar to
677\samp{O}, but takes two C arguments: the first is the address of a
678Python type object, the second is the address of the C variable (of
Fred Draked7bb3031998-03-03 17:52:07 +0000679type \ctype{PyObject *}) into which the object pointer is stored.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000680If the Python object does not have the required type, a
Fred Draked7bb3031998-03-03 17:52:07 +0000681\exception{TypeError} exception is raised.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000682
Fred Drake3fe985f1998-03-04 03:51:42 +0000683\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000684Convert a Python object to a C variable through a \var{converter}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000685function. This takes two arguments: the first is a function, the
Fred Drakeec9fbe91999-02-15 16:20:25 +0000686second is the address of a C variable (of arbitrary type), converted
Fred Draked7bb3031998-03-03 17:52:07 +0000687to \ctype{void *}. The \var{converter} function in turn is called as
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000688follows:
689
690\code{\var{status} = \var{converter}(\var{object}, \var{address});}
691
692where \var{object} is the Python object to be converted and
Fred Draked7bb3031998-03-03 17:52:07 +0000693\var{address} is the \ctype{void *} argument that was passed to
694\cfunction{PyArg_ConvertTuple()}. The returned \var{status} should be
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000695\code{1} for a successful conversion and \code{0} if the conversion
696has failed. When the conversion fails, the \var{converter} function
697should raise an exception.
698
699\item[\samp{S} (string) {[PyStringObject *]}]
Guido van Rossum2474d681998-02-26 17:07:11 +0000700Like \samp{O} but requires that the Python object is a string object.
Fred Draked7bb3031998-03-03 17:52:07 +0000701Raises a \exception{TypeError} exception if the object is not a string
Fred Drakeec9fbe91999-02-15 16:20:25 +0000702object. The C variable may also be declared as \ctype{PyObject *}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000703
Fred Drake3fe985f1998-03-04 03:51:42 +0000704\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Fred Drake29fb54f1999-02-18 03:50:01 +0000705The object must be a Python sequence whose length is the number of
706format units in \var{items}. The C arguments must correspond to the
707individual format units in \var{items}. Format units for sequences
708may be nested.
709
710\strong{Note:} Prior to Python version 1.5.2, this format specifier
711only accepted a tuple containing the individual parameters, not an
712arbitrary sequence. Code which previously caused a
713\exception{TypeError} to be raised here may now proceed without an
714exception. This is not expected to be a problem for existing code.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000715
716\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000717
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000718It is possible to pass Python long integers where integers are
Fred Drake1aedbd81998-02-16 14:47:27 +0000719requested; however no proper range checking is done --- the most
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000720significant bits are silently truncated when the receiving field is
721too small to receive the value (actually, the semantics are inherited
Fred Drakedc12ec81999-03-09 18:36:55 +0000722from downcasts in C --- your mileage may vary).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000723
724A few other characters have a meaning in a format string. These may
725not occur inside nested parentheses. They are:
726
727\begin{description}
728
729\item[\samp{|}]
730Indicates that the remaining arguments in the Python argument list are
Fred Drakeec9fbe91999-02-15 16:20:25 +0000731optional. The C variables corresponding to optional arguments should
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000732be initialized to their default value --- when an optional argument is
Fred Drake40e72f71998-03-03 19:37:38 +0000733not specified, \cfunction{PyArg_ParseTuple()} does not touch the contents
Fred Drakeec9fbe91999-02-15 16:20:25 +0000734of the corresponding C variable(s).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000735
736\item[\samp{:}]
737The list of format units ends here; the string after the colon is used
738as the function name in error messages (the ``associated value'' of
Fred Drakedc12ec81999-03-09 18:36:55 +0000739the exception that \cfunction{PyArg_ParseTuple()} raises).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000740
741\item[\samp{;}]
742The list of format units ends here; the string after the colon is used
743as the error message \emph{instead} of the default error message.
744Clearly, \samp{:} and \samp{;} mutually exclude each other.
745
746\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000747
748Some example calls:
749
Fred Drake0fd82681998-01-09 05:39:38 +0000750\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000751 int ok;
752 int i, j;
753 long k, l;
754 char *s;
755 int size;
756
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000757 ok = PyArg_ParseTuple(args, ""); /* No arguments */
Guido van Rossum6938f061994-08-01 12:22:53 +0000758 /* Python call: f() */
Fred Drake33698f81999-02-16 23:06:32 +0000759\end{verbatim}
Fred Drake0fd82681998-01-09 05:39:38 +0000760
Fred Drake33698f81999-02-16 23:06:32 +0000761\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000762 ok = PyArg_ParseTuple(args, "s", &s); /* A string */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000763 /* Possible Python call: f('whoops!') */
Fred Drake33698f81999-02-16 23:06:32 +0000764\end{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000765
Fred Drake33698f81999-02-16 23:06:32 +0000766\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000767 ok = PyArg_ParseTuple(args, "lls", &k, &l, &s); /* Two longs and a string */
Guido van Rossum6938f061994-08-01 12:22:53 +0000768 /* Possible Python call: f(1, 2, 'three') */
Fred Drake33698f81999-02-16 23:06:32 +0000769\end{verbatim}
Fred Drake0fd82681998-01-09 05:39:38 +0000770
Fred Drake33698f81999-02-16 23:06:32 +0000771\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000772 ok = PyArg_ParseTuple(args, "(ii)s#", &i, &j, &s, &size);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000773 /* A pair of ints and a string, whose size is also returned */
Guido van Rossum7e924dd1997-02-10 16:51:52 +0000774 /* Possible Python call: f((1, 2), 'three') */
Fred Drake33698f81999-02-16 23:06:32 +0000775\end{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000776
Fred Drake33698f81999-02-16 23:06:32 +0000777\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000778 {
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000779 char *file;
780 char *mode = "r";
781 int bufsize = 0;
782 ok = PyArg_ParseTuple(args, "s|si", &file, &mode, &bufsize);
783 /* A string, and optionally another string and an integer */
784 /* Possible Python calls:
785 f('spam')
786 f('spam', 'w')
787 f('spam', 'wb', 100000) */
788 }
Fred Drake33698f81999-02-16 23:06:32 +0000789\end{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000790
Fred Drake33698f81999-02-16 23:06:32 +0000791\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000792 {
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000793 int left, top, right, bottom, h, v;
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000794 ok = PyArg_ParseTuple(args, "((ii)(ii))(ii)",
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000795 &left, &top, &right, &bottom, &h, &v);
Fred Drakea0dbddf1998-04-02 06:50:02 +0000796 /* A rectangle and a point */
797 /* Possible Python call:
798 f(((0, 0), (400, 300)), (10, 10)) */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000799 }
Fred Drake33698f81999-02-16 23:06:32 +0000800\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000801
Fred Drake33698f81999-02-16 23:06:32 +0000802\begin{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000803 {
804 Py_complex c;
805 ok = PyArg_ParseTuple(args, "D:myfunction", &c);
806 /* a complex, also providing a function name for errors */
807 /* Possible Python call: myfunction(1+2j) */
808 }
Fred Drake0fd82681998-01-09 05:39:38 +0000809\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000810
811
Fred Drake5e8aa541998-11-16 18:34:07 +0000812\section{Keyword Parsing with \cfunction{PyArg_ParseTupleAndKeywords()}
813 \label{parseTupleAndKeywords}}
Fred Drakeb6e50321998-02-04 20:26:31 +0000814
815The \cfunction{PyArg_ParseTupleAndKeywords()} function is declared as
816follows:
817
Fred Drake1e11a5c1998-02-13 07:11:32 +0000818\begin{verbatim}
819int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,
820 char *format, char **kwlist, ...);
821\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000822
823The \var{arg} and \var{format} parameters are identical to those of the
824\cfunction{PyArg_ParseTuple()} function. The \var{kwdict} parameter
825is the dictionary of keywords received as the third parameter from the
826Python runtime. The \var{kwlist} parameter is a \NULL{}-terminated
827list of strings which identify the parameters; the names are matched
828with the type information from \var{format} from left to right.
829
830\strong{Note:} Nested tuples cannot be parsed when using keyword
831arguments! Keyword parameters passed in which are not present in the
Fred Drakecd05ca91998-03-07 05:32:08 +0000832\var{kwlist} will cause \exception{TypeError} to be raised.
Fred Drakeb6e50321998-02-04 20:26:31 +0000833
834Here is an example module which uses keywords, based on an example by
Fred Drakea0dbddf1998-04-02 06:50:02 +0000835Geoff Philbrick (\email{philbrick@hks.com}):%
836\index{Philbrick, Geoff}
Fred Drakeb6e50321998-02-04 20:26:31 +0000837
838\begin{verbatim}
839#include <stdio.h>
840#include "Python.h"
841
842static PyObject *
843keywdarg_parrot(self, args, keywds)
844 PyObject *self;
845 PyObject *args;
846 PyObject *keywds;
847{
848 int voltage;
849 char *state = "a stiff";
850 char *action = "voom";
851 char *type = "Norwegian Blue";
852
853 static char *kwlist[] = {"voltage", "state", "action", "type", NULL};
854
855 if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss", kwlist,
856 &voltage, &state, &action, &type))
857 return NULL;
858
859 printf("-- This parrot wouldn't %s if you put %i Volts through it.\n",
860 action, voltage);
861 printf("-- Lovely plumage, the %s -- It's %s!\n", type, state);
862
863 Py_INCREF(Py_None);
864
865 return Py_None;
866}
867
868static PyMethodDef keywdarg_methods[] = {
Fred Drakedc12ec81999-03-09 18:36:55 +0000869 /* The cast of the function is necessary since PyCFunction values
870 * only take two PyObject* parameters, and keywdarg_parrot() takes
871 * three.
872 */
Fred Drakeb6e50321998-02-04 20:26:31 +0000873 {"parrot", (PyCFunction)keywdarg_parrot, METH_VARARGS|METH_KEYWORDS},
874 {NULL, NULL} /* sentinel */
875};
876
877void
878initkeywdarg()
879{
880 /* Create the module and add the functions */
Fred Drakecd05ca91998-03-07 05:32:08 +0000881 Py_InitModule("keywdarg", keywdarg_methods);
Fred Drakeb6e50321998-02-04 20:26:31 +0000882}
883\end{verbatim}
884
885
Fred Drake5e8aa541998-11-16 18:34:07 +0000886\section{The \cfunction{Py_BuildValue()} Function
887 \label{buildValue}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000888
Fred Draked7bb3031998-03-03 17:52:07 +0000889This function is the counterpart to \cfunction{PyArg_ParseTuple()}. It is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000890declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000891
Fred Drake1e11a5c1998-02-13 07:11:32 +0000892\begin{verbatim}
893PyObject *Py_BuildValue(char *format, ...);
894\end{verbatim}
895
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000896It recognizes a set of format units similar to the ones recognized by
Fred Draked7bb3031998-03-03 17:52:07 +0000897\cfunction{PyArg_ParseTuple()}, but the arguments (which are input to the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000898function, not output) must not be pointers, just values. It returns a
Fred Drakeec9fbe91999-02-15 16:20:25 +0000899new Python object, suitable for returning from a C function called
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000900from Python.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000901
Fred Draked7bb3031998-03-03 17:52:07 +0000902One difference with \cfunction{PyArg_ParseTuple()}: while the latter
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000903requires its first argument to be a tuple (since Python argument lists
Fred Draked7bb3031998-03-03 17:52:07 +0000904are always represented as tuples internally),
905\cfunction{Py_BuildValue()} does not always build a tuple. It builds
906a tuple only if its format string contains two or more format units.
907If the format string is empty, it returns \code{None}; if it contains
908exactly one format unit, it returns whatever object is described by
909that format unit. To force it to return a tuple of size 0 or one,
910parenthesize the format string.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000911
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000912In the following description, the quoted form is the format unit; the
913entry in (round) parentheses is the Python object type that the format
914unit will return; and the entry in [square] brackets is the type of
Fred Drakeec9fbe91999-02-15 16:20:25 +0000915the C value(s) to be passed.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000916
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000917The characters space, tab, colon and comma are ignored in format
918strings (but not within format units such as \samp{s\#}). This can be
919used to make long format strings a tad more readable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000920
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000921\begin{description}
922
923\item[\samp{s} (string) {[char *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000924Convert a null-terminated C string to a Python object. If the C
Fred Drake0fd82681998-01-09 05:39:38 +0000925string pointer is \NULL{}, \code{None} is returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000926
927\item[\samp{s\#} (string) {[char *, int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000928Convert a C string and its length to a Python object. If the C string
Fred Drake0fd82681998-01-09 05:39:38 +0000929pointer is \NULL{}, the length is ignored and \code{None} is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000930returned.
931
932\item[\samp{z} (string or \code{None}) {[char *]}]
933Same as \samp{s}.
934
935\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
936Same as \samp{s\#}.
937
938\item[\samp{i} (integer) {[int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000939Convert a plain C \ctype{int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000940
941\item[\samp{b} (integer) {[char]}]
942Same as \samp{i}.
943
944\item[\samp{h} (integer) {[short int]}]
945Same as \samp{i}.
946
947\item[\samp{l} (integer) {[long int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000948Convert a C \ctype{long int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000949
950\item[\samp{c} (string of length 1) {[char]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000951Convert a C \ctype{int} representing a character to a Python string of
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000952length 1.
953
954\item[\samp{d} (float) {[double]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000955Convert a C \ctype{double} to a Python floating point number.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000956
957\item[\samp{f} (float) {[float]}]
958Same as \samp{d}.
959
960\item[\samp{O} (object) {[PyObject *]}]
961Pass a Python object untouched (except for its reference count, which
Fred Drake0fd82681998-01-09 05:39:38 +0000962is incremented by one). If the object passed in is a \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000963pointer, it is assumed that this was caused because the call producing
964the argument found an error and set an exception. Therefore,
Fred Draked7bb3031998-03-03 17:52:07 +0000965\cfunction{Py_BuildValue()} will return \NULL{} but won't raise an
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000966exception. If no exception has been raised yet,
Fred Draked7bb3031998-03-03 17:52:07 +0000967\cdata{PyExc_SystemError} is set.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000968
969\item[\samp{S} (object) {[PyObject *]}]
970Same as \samp{O}.
971
Guido van Rossumd358afe1998-12-23 05:02:08 +0000972\item[\samp{N} (object) {[PyObject *]}]
973Same as \samp{O}, except it doesn't increment the reference count on
974the object. Useful when the object is created by a call to an object
975constructor in the argument list.
976
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000977\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
978Convert \var{anything} to a Python object through a \var{converter}
979function. The function is called with \var{anything} (which should be
Fred Draked7bb3031998-03-03 17:52:07 +0000980compatible with \ctype{void *}) as its argument and should return a
Fred Drake0fd82681998-01-09 05:39:38 +0000981``new'' Python object, or \NULL{} if an error occurred.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000982
983\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000984Convert a sequence of C values to a Python tuple with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000985of items.
986
987\item[\samp{[\var{items}]} (list) {[\var{matching-items}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000988Convert a sequence of C values to a Python list with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000989of items.
990
991\item[\samp{\{\var{items}\}} (dictionary) {[\var{matching-items}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000992Convert a sequence of C values to a Python dictionary. Each pair of
993consecutive C values adds one item to the dictionary, serving as key
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000994and value, respectively.
995
996\end{description}
997
998If there is an error in the format string, the
Fred Draked7bb3031998-03-03 17:52:07 +0000999\cdata{PyExc_SystemError} exception is raised and \NULL{} returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001000
1001Examples (to the left the call, to the right the resulting Python value):
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001002
Fred Drake1e11a5c1998-02-13 07:11:32 +00001003\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001004 Py_BuildValue("") None
1005 Py_BuildValue("i", 123) 123
Guido van Rossumf23e0fe1995-03-18 11:04:29 +00001006 Py_BuildValue("iii", 123, 456, 789) (123, 456, 789)
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001007 Py_BuildValue("s", "hello") 'hello'
1008 Py_BuildValue("ss", "hello", "world") ('hello', 'world')
1009 Py_BuildValue("s#", "hello", 4) 'hell'
1010 Py_BuildValue("()") ()
1011 Py_BuildValue("(i)", 123) (123,)
1012 Py_BuildValue("(ii)", 123, 456) (123, 456)
1013 Py_BuildValue("(i,i)", 123, 456) (123, 456)
1014 Py_BuildValue("[i,i]", 123, 456) [123, 456]
Guido van Rossumf23e0fe1995-03-18 11:04:29 +00001015 Py_BuildValue("{s:i,s:i}",
1016 "abc", 123, "def", 456) {'abc': 123, 'def': 456}
1017 Py_BuildValue("((ii)(ii)) (ii)",
1018 1, 2, 3, 4, 5, 6) (((1, 2), (3, 4)), (5, 6))
Fred Drake1e11a5c1998-02-13 07:11:32 +00001019\end{verbatim}
1020
Fred Drake8e015171999-02-17 18:12:14 +00001021
Fred Drake5e8aa541998-11-16 18:34:07 +00001022\section{Reference Counts
1023 \label{refcounts}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001024
Fred Drakeec9fbe91999-02-15 16:20:25 +00001025In languages like C or \Cpp{}, the programmer is responsible for
1026dynamic allocation and deallocation of memory on the heap. In C,
Fred Draked7bb3031998-03-03 17:52:07 +00001027this is done using the functions \cfunction{malloc()} and
1028\cfunction{free()}. In \Cpp{}, the operators \keyword{new} and
1029\keyword{delete} are used with essentially the same meaning; they are
1030actually implemented using \cfunction{malloc()} and
1031\cfunction{free()}, so we'll restrict the following discussion to the
1032latter.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001033
Fred Draked7bb3031998-03-03 17:52:07 +00001034Every block of memory allocated with \cfunction{malloc()} should
1035eventually be returned to the pool of available memory by exactly one
1036call to \cfunction{free()}. It is important to call
1037\cfunction{free()} at the right time. If a block's address is
1038forgotten but \cfunction{free()} is not called for it, the memory it
1039occupies cannot be reused until the program terminates. This is
1040called a \dfn{memory leak}. On the other hand, if a program calls
1041\cfunction{free()} for a block and then continues to use the block, it
1042creates a conflict with re-use of the block through another
1043\cfunction{malloc()} call. This is called \dfn{using freed memory}.
1044It has the same bad consequences as referencing uninitialized data ---
1045core dumps, wrong results, mysterious crashes.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001046
1047Common causes of memory leaks are unusual paths through the code. For
1048instance, a function may allocate a block of memory, do some
1049calculation, and then free the block again. Now a change in the
1050requirements for the function may add a test to the calculation that
1051detects an error condition and can return prematurely from the
1052function. It's easy to forget to free the allocated memory block when
1053taking this premature exit, especially when it is added later to the
1054code. Such leaks, once introduced, often go undetected for a long
1055time: the error exit is taken only in a small fraction of all calls,
1056and most modern machines have plenty of virtual memory, so the leak
1057only becomes apparent in a long-running process that uses the leaking
1058function frequently. Therefore, it's important to prevent leaks from
1059happening by having a coding convention or strategy that minimizes
1060this kind of errors.
1061
Fred Draked7bb3031998-03-03 17:52:07 +00001062Since Python makes heavy use of \cfunction{malloc()} and
1063\cfunction{free()}, it needs a strategy to avoid memory leaks as well
1064as the use of freed memory. The chosen method is called
1065\dfn{reference counting}. The principle is simple: every object
1066contains a counter, which is incremented when a reference to the
1067object is stored somewhere, and which is decremented when a reference
1068to it is deleted. When the counter reaches zero, the last reference
1069to the object has been deleted and the object is freed.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001070
1071An alternative strategy is called \dfn{automatic garbage collection}.
1072(Sometimes, reference counting is also referred to as a garbage
1073collection strategy, hence my use of ``automatic'' to distinguish the
1074two.) The big advantage of automatic garbage collection is that the
Fred Draked7bb3031998-03-03 17:52:07 +00001075user doesn't need to call \cfunction{free()} explicitly. (Another claimed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001076advantage is an improvement in speed or memory usage --- this is no
Fred Drakeec9fbe91999-02-15 16:20:25 +00001077hard fact however.) The disadvantage is that for C, there is no
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001078truly portable automatic garbage collector, while reference counting
Fred Draked7bb3031998-03-03 17:52:07 +00001079can be implemented portably (as long as the functions \cfunction{malloc()}
Fred Drakeec9fbe91999-02-15 16:20:25 +00001080and \cfunction{free()} are available --- which the C Standard guarantees).
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001081Maybe some day a sufficiently portable automatic garbage collector
Fred Drakeec9fbe91999-02-15 16:20:25 +00001082will be available for C. Until then, we'll have to live with
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001083reference counts.
1084
Fred Drake5e8aa541998-11-16 18:34:07 +00001085\subsection{Reference Counting in Python
1086 \label{refcountsInPython}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001087
1088There are two macros, \code{Py_INCREF(x)} and \code{Py_DECREF(x)},
1089which handle the incrementing and decrementing of the reference count.
Fred Draked7bb3031998-03-03 17:52:07 +00001090\cfunction{Py_DECREF()} also frees the object when the count reaches zero.
1091For flexibility, it doesn't call \cfunction{free()} directly --- rather, it
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001092makes a call through a function pointer in the object's \dfn{type
1093object}. For this purpose (and others), every object also contains a
1094pointer to its type object.
1095
1096The big question now remains: when to use \code{Py_INCREF(x)} and
1097\code{Py_DECREF(x)}? Let's first introduce some terms. Nobody
1098``owns'' an object; however, you can \dfn{own a reference} to an
1099object. An object's reference count is now defined as the number of
1100owned references to it. The owner of a reference is responsible for
Fred Draked7bb3031998-03-03 17:52:07 +00001101calling \cfunction{Py_DECREF()} when the reference is no longer
1102needed. Ownership of a reference can be transferred. There are three
1103ways to dispose of an owned reference: pass it on, store it, or call
1104\cfunction{Py_DECREF()}. Forgetting to dispose of an owned reference
1105creates a memory leak.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001106
1107It is also possible to \dfn{borrow}\footnote{The metaphor of
1108``borrowing'' a reference is not completely correct: the owner still
1109has a copy of the reference.} a reference to an object. The borrower
Fred Draked7bb3031998-03-03 17:52:07 +00001110of a reference should not call \cfunction{Py_DECREF()}. The borrower must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001111not hold on to the object longer than the owner from which it was
1112borrowed. Using a borrowed reference after the owner has disposed of
1113it risks using freed memory and should be avoided
1114completely.\footnote{Checking that the reference count is at least 1
1115\strong{does not work} --- the reference count itself could be in
1116freed memory and may thus be reused for another object!}
1117
1118The advantage of borrowing over owning a reference is that you don't
1119need to take care of disposing of the reference on all possible paths
1120through the code --- in other words, with a borrowed reference you
1121don't run the risk of leaking when a premature exit is taken. The
1122disadvantage of borrowing over leaking is that there are some subtle
1123situations where in seemingly correct code a borrowed reference can be
1124used after the owner from which it was borrowed has in fact disposed
1125of it.
1126
1127A borrowed reference can be changed into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001128\cfunction{Py_INCREF()}. This does not affect the status of the owner from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001129which the reference was borrowed --- it creates a new owned reference,
1130and gives full owner responsibilities (i.e., the new owner must
1131dispose of the reference properly, as well as the previous owner).
1132
Fred Drake8e015171999-02-17 18:12:14 +00001133
Fred Drake5e8aa541998-11-16 18:34:07 +00001134\subsection{Ownership Rules
1135 \label{ownershipRules}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001136
1137Whenever an object reference is passed into or out of a function, it
1138is part of the function's interface specification whether ownership is
1139transferred with the reference or not.
1140
1141Most functions that return a reference to an object pass on ownership
1142with the reference. In particular, all functions whose function it is
Fred Draked7bb3031998-03-03 17:52:07 +00001143to create a new object, e.g.\ \cfunction{PyInt_FromLong()} and
1144\cfunction{Py_BuildValue()}, pass ownership to the receiver. Even if in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001145fact, in some cases, you don't receive a reference to a brand new
1146object, you still receive ownership of the reference. For instance,
Fred Draked7bb3031998-03-03 17:52:07 +00001147\cfunction{PyInt_FromLong()} maintains a cache of popular values and can
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001148return a reference to a cached item.
1149
1150Many functions that extract objects from other objects also transfer
1151ownership with the reference, for instance
Fred Draked7bb3031998-03-03 17:52:07 +00001152\cfunction{PyObject_GetAttrString()}. The picture is less clear, here,
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001153however, since a few common routines are exceptions:
Fred Draked7bb3031998-03-03 17:52:07 +00001154\cfunction{PyTuple_GetItem()}, \cfunction{PyList_GetItem()},
1155\cfunction{PyDict_GetItem()}, and \cfunction{PyDict_GetItemString()}
1156all return references that you borrow from the tuple, list or
1157dictionary.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001158
Fred Draked7bb3031998-03-03 17:52:07 +00001159The function \cfunction{PyImport_AddModule()} also returns a borrowed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001160reference, even though it may actually create the object it returns:
1161this is possible because an owned reference to the object is stored in
1162\code{sys.modules}.
1163
1164When you pass an object reference into another function, in general,
1165the function borrows the reference from you --- if it needs to store
Fred Draked7bb3031998-03-03 17:52:07 +00001166it, it will use \cfunction{Py_INCREF()} to become an independent
1167owner. There are exactly two important exceptions to this rule:
1168\cfunction{PyTuple_SetItem()} and \cfunction{PyList_SetItem()}. These
1169functions take over ownership of the item passed to them --- even if
1170they fail! (Note that \cfunction{PyDict_SetItem()} and friends don't
Fred Drakea0dbddf1998-04-02 06:50:02 +00001171take over ownership --- they are ``normal.'')
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001172
Fred Drakeec9fbe91999-02-15 16:20:25 +00001173When a C function is called from Python, it borrows references to its
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001174arguments from the caller. The caller owns a reference to the object,
1175so the borrowed reference's lifetime is guaranteed until the function
1176returns. Only when such a borrowed reference must be stored or passed
1177on, it must be turned into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001178\cfunction{Py_INCREF()}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001179
Fred Drakeec9fbe91999-02-15 16:20:25 +00001180The object reference returned from a C function that is called from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001181Python must be an owned reference --- ownership is tranferred from the
1182function to its caller.
1183
Fred Drake8e015171999-02-17 18:12:14 +00001184
Fred Drake5e8aa541998-11-16 18:34:07 +00001185\subsection{Thin Ice
1186 \label{thinIce}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001187
1188There are a few situations where seemingly harmless use of a borrowed
1189reference can lead to problems. These all have to do with implicit
1190invocations of the interpreter, which can cause the owner of a
1191reference to dispose of it.
1192
1193The first and most important case to know about is using
Fred Draked7bb3031998-03-03 17:52:07 +00001194\cfunction{Py_DECREF()} on an unrelated object while borrowing a
1195reference to a list item. For instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001196
Fred Drake1e11a5c1998-02-13 07:11:32 +00001197\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001198bug(PyObject *list) {
1199 PyObject *item = PyList_GetItem(list, 0);
Fred Drakea0dbddf1998-04-02 06:50:02 +00001200
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001201 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1202 PyObject_Print(item, stdout, 0); /* BUG! */
1203}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001204\end{verbatim}
1205
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001206This function first borrows a reference to \code{list[0]}, then
1207replaces \code{list[1]} with the value \code{0}, and finally prints
1208the borrowed reference. Looks harmless, right? But it's not!
1209
Fred Draked7bb3031998-03-03 17:52:07 +00001210Let's follow the control flow into \cfunction{PyList_SetItem()}. The list
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001211owns references to all its items, so when item 1 is replaced, it has
1212to dispose of the original item 1. Now let's suppose the original
1213item 1 was an instance of a user-defined class, and let's further
Fred Draked7bb3031998-03-03 17:52:07 +00001214suppose that the class defined a \method{__del__()} method. If this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001215class instance has a reference count of 1, disposing of it will call
Fred Draked7bb3031998-03-03 17:52:07 +00001216its \method{__del__()} method.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001217
Fred Draked7bb3031998-03-03 17:52:07 +00001218Since it is written in Python, the \method{__del__()} method can execute
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001219arbitrary Python code. Could it perhaps do something to invalidate
Fred Draked7bb3031998-03-03 17:52:07 +00001220the reference to \code{item} in \cfunction{bug()}? You bet! Assuming
1221that the list passed into \cfunction{bug()} is accessible to the
1222\method{__del__()} method, it could execute a statement to the effect of
1223\samp{del list[0]}, and assuming this was the last reference to that
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001224object, it would free the memory associated with it, thereby
1225invalidating \code{item}.
1226
1227The solution, once you know the source of the problem, is easy:
1228temporarily increment the reference count. The correct version of the
1229function reads:
1230
Fred Drake1e11a5c1998-02-13 07:11:32 +00001231\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001232no_bug(PyObject *list) {
1233 PyObject *item = PyList_GetItem(list, 0);
Fred Drakea0dbddf1998-04-02 06:50:02 +00001234
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001235 Py_INCREF(item);
1236 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1237 PyObject_Print(item, stdout, 0);
1238 Py_DECREF(item);
1239}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001240\end{verbatim}
1241
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001242This is a true story. An older version of Python contained variants
Fred Drakeec9fbe91999-02-15 16:20:25 +00001243of this bug and someone spent a considerable amount of time in a C
Fred Draked7bb3031998-03-03 17:52:07 +00001244debugger to figure out why his \method{__del__()} methods would fail...
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001245
1246The second case of problems with a borrowed reference is a variant
1247involving threads. Normally, multiple threads in the Python
1248interpreter can't get in each other's way, because there is a global
1249lock protecting Python's entire object space. However, it is possible
1250to temporarily release this lock using the macro
1251\code{Py_BEGIN_ALLOW_THREADS}, and to re-acquire it using
1252\code{Py_END_ALLOW_THREADS}. This is common around blocking I/O
1253calls, to let other threads use the CPU while waiting for the I/O to
1254complete. Obviously, the following function has the same problem as
1255the previous one:
1256
Fred Drake1e11a5c1998-02-13 07:11:32 +00001257\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001258bug(PyObject *list) {
1259 PyObject *item = PyList_GetItem(list, 0);
1260 Py_BEGIN_ALLOW_THREADS
1261 ...some blocking I/O call...
1262 Py_END_ALLOW_THREADS
1263 PyObject_Print(item, stdout, 0); /* BUG! */
1264}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001265\end{verbatim}
1266
Fred Drake8e015171999-02-17 18:12:14 +00001267
Fred Drake5e8aa541998-11-16 18:34:07 +00001268\subsection{NULL Pointers
1269 \label{nullPointers}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001270
Fred Drakea0dbddf1998-04-02 06:50:02 +00001271In general, functions that take object references as arguments do not
Fred Drake0fd82681998-01-09 05:39:38 +00001272expect you to pass them \NULL{} pointers, and will dump core (or
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001273cause later core dumps) if you do so. Functions that return object
Fred Drake0fd82681998-01-09 05:39:38 +00001274references generally return \NULL{} only to indicate that an
1275exception occurred. The reason for not testing for \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001276arguments is that functions often pass the objects they receive on to
Fred Drake0fd82681998-01-09 05:39:38 +00001277other function --- if each function were to test for \NULL{},
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001278there would be a lot of redundant tests and the code would run slower.
1279
Fred Drakee743fd01998-11-24 17:07:29 +00001280It is better to test for \NULL{} only at the ``source'', i.e.\ when a
1281pointer that may be \NULL{} is received, e.g.\ from
Fred Draked7bb3031998-03-03 17:52:07 +00001282\cfunction{malloc()} or from a function that may raise an exception.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001283
Fred Draked7bb3031998-03-03 17:52:07 +00001284The macros \cfunction{Py_INCREF()} and \cfunction{Py_DECREF()}
Fred Drakea0dbddf1998-04-02 06:50:02 +00001285do not check for \NULL{} pointers --- however, their variants
Fred Draked7bb3031998-03-03 17:52:07 +00001286\cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()} do.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001287
1288The macros for checking for a particular object type
Fred Drake0fd82681998-01-09 05:39:38 +00001289(\code{Py\var{type}_Check()}) don't check for \NULL{} pointers ---
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001290again, there is much code that calls several of these in a row to test
1291an object against various different expected types, and this would
Fred Drake0fd82681998-01-09 05:39:38 +00001292generate redundant tests. There are no variants with \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001293checking.
1294
Fred Drakeec9fbe91999-02-15 16:20:25 +00001295The C function calling mechanism guarantees that the argument list
1296passed to C functions (\code{args} in the examples) is never
Fred Drake52e2d511999-04-05 21:26:37 +00001297\NULL{} --- in fact it guarantees that it is always a tuple.\footnote{
1298These guarantees don't hold when you use the ``old'' style
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001299calling convention --- this is still found in much existing code.}
1300
Fred Drake0fd82681998-01-09 05:39:38 +00001301It is a severe error to ever let a \NULL{} pointer ``escape'' to
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001302the Python user.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001303
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001304
Fred Drake5e8aa541998-11-16 18:34:07 +00001305\section{Writing Extensions in \Cpp{}
1306 \label{cplusplus}}
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001307
Guido van Rossum16d6e711994-08-08 12:30:22 +00001308It is possible to write extension modules in \Cpp{}. Some restrictions
Guido van Rossumed39cd01995-10-08 00:17:19 +00001309apply. If the main program (the Python interpreter) is compiled and
Fred Drakeec9fbe91999-02-15 16:20:25 +00001310linked by the C compiler, global or static objects with constructors
Guido van Rossumed39cd01995-10-08 00:17:19 +00001311cannot be used. This is not a problem if the main program is linked
Guido van Rossumafcd5891998-02-05 19:59:39 +00001312by the \Cpp{} compiler. Functions that will be called by the
1313Python interpreter (in particular, module initalization functions)
1314have to be declared using \code{extern "C"}.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001315It is unnecessary to enclose the Python header files in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001316\code{extern "C" \{...\}} --- they use this form already if the symbol
Fred Drake0fd82681998-01-09 05:39:38 +00001317\samp{__cplusplus} is defined (all recent \Cpp{} compilers define this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001318symbol).
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001319
Fred Drakee743fd01998-11-24 17:07:29 +00001320
Fred Drakeec9fbe91999-02-15 16:20:25 +00001321\section{Providing a C API for an Extension Module
1322 \label{using-cobjects}}
1323\sectionauthor{Konrad Hinsen}{hinsen@cnrs-orleans.fr}
Fred Drakee743fd01998-11-24 17:07:29 +00001324
Fred Drakeec9fbe91999-02-15 16:20:25 +00001325Many extension modules just provide new functions and types to be
1326used from Python, but sometimes the code in an extension module can
1327be useful for other extension modules. For example, an extension
1328module could implement a type ``collection'' which works like lists
1329without order. Just like the standard Python list type has a C API
1330which permits extension modules to create and manipulate lists, this
1331new collection type should have a set of C functions for direct
1332manipulation from other extension modules.
1333
1334At first sight this seems easy: just write the functions (without
1335declaring them \keyword{static}, of course), provide an appropriate
1336header file, and document the C API. And in fact this would work if
1337all extension modules were always linked statically with the Python
1338interpreter. When modules are used as shared libraries, however, the
1339symbols defined in one module may not be visible to another module.
1340The details of visibility depend on the operating system; some systems
1341use one global namespace for the Python interpreter and all extension
Fred Drake33698f81999-02-16 23:06:32 +00001342modules (e.g.\ Windows), whereas others require an explicit list of
1343imported symbols at module link time (e.g.\ AIX), or offer a choice of
Fred Drakeec9fbe91999-02-15 16:20:25 +00001344different strategies (most Unices). And even if symbols are globally
1345visible, the module whose functions one wishes to call might not have
1346been loaded yet!
1347
1348Portability therefore requires not to make any assumptions about
1349symbol visibility. This means that all symbols in extension modules
1350should be declared \keyword{static}, except for the module's
1351initialization function, in order to avoid name clashes with other
1352extension modules (as discussed in section~\ref{methodTable}). And it
1353means that symbols that \emph{should} be accessible from other
1354extension modules must be exported in a different way.
1355
1356Python provides a special mechanism to pass C-level information (i.e.
1357pointers) from one extension module to another one: CObjects.
1358A CObject is a Python data type which stores a pointer (\ctype{void
1359*}). CObjects can only be created and accessed via their C API, but
1360they can be passed around like any other Python object. In particular,
1361they can be assigned to a name in an extension module's namespace.
1362Other extension modules can then import this module, retrieve the
1363value of this name, and then retrieve the pointer from the CObject.
1364
1365There are many ways in which CObjects can be used to export the C API
1366of an extension module. Each name could get its own CObject, or all C
1367API pointers could be stored in an array whose address is published in
1368a CObject. And the various tasks of storing and retrieving the pointers
1369can be distributed in different ways between the module providing the
1370code and the client modules.
1371
1372The following example demonstrates an approach that puts most of the
1373burden on the writer of the exporting module, which is appropriate
1374for commonly used library modules. It stores all C API pointers
1375(just one in the example!) in an array of \ctype{void} pointers which
1376becomes the value of a CObject. The header file corresponding to
1377the module provides a macro that takes care of importing the module
1378and retrieving its C API pointers; client modules only have to call
1379this macro before accessing the C API.
1380
1381The exporting module is a modification of the \module{spam} module from
1382section~\ref{simpleExample}. The function \function{spam.system()}
1383does not call the C library function \cfunction{system()} directly,
1384but a function \cfunction{PySpam_System()}, which would of course do
1385something more complicated in reality (such as adding ``spam'' to
1386every command). This function \cfunction{PySpam_System()} is also
1387exported to other extension modules.
1388
1389The function \cfunction{PySpam_System()} is a plain C function,
1390declared \keyword{static} like everything else:
1391
1392\begin{verbatim}
1393static int
1394PySpam_System(command)
1395 char *command;
1396{
1397 return system(command);
1398}
1399\end{verbatim}
1400
1401The function \cfunction{spam_system()} is modified in a trivial way:
1402
1403\begin{verbatim}
1404static PyObject *
1405spam_system(self, args)
1406 PyObject *self;
1407 PyObject *args;
1408{
1409 char *command;
1410 int sts;
1411
1412 if (!PyArg_ParseTuple(args, "s", &command))
1413 return NULL;
1414 sts = PySpam_System(command);
1415 return Py_BuildValue("i", sts);
1416}
1417\end{verbatim}
1418
1419In the beginning of the module, right after the line
Fred Drake8e015171999-02-17 18:12:14 +00001420
Fred Drakeec9fbe91999-02-15 16:20:25 +00001421\begin{verbatim}
1422#include "Python.h"
1423\end{verbatim}
Fred Drake8e015171999-02-17 18:12:14 +00001424
Fred Drakeec9fbe91999-02-15 16:20:25 +00001425two more lines must be added:
Fred Drake8e015171999-02-17 18:12:14 +00001426
Fred Drakeec9fbe91999-02-15 16:20:25 +00001427\begin{verbatim}
1428#define SPAM_MODULE
1429#include "spammodule.h"
1430\end{verbatim}
1431
1432The \code{\#define} is used to tell the header file that it is being
1433included in the exporting module, not a client module. Finally,
1434the module's initialization function must take care of initializing
1435the C API pointer array:
Fred Drake8e015171999-02-17 18:12:14 +00001436
Fred Drakeec9fbe91999-02-15 16:20:25 +00001437\begin{verbatim}
1438void
1439initspam()
1440{
1441 PyObject *m, *d;
1442 static void *PySpam_API[PySpam_API_pointers];
1443 PyObject *c_api_object;
1444 m = Py_InitModule("spam", SpamMethods);
1445
1446 /* Initialize the C API pointer array */
1447 PySpam_API[PySpam_System_NUM] = (void *)PySpam_System;
1448
1449 /* Create a CObject containing the API pointer array's address */
1450 c_api_object = PyCObject_FromVoidPtr((void *)PySpam_API, NULL);
1451
1452 /* Create a name for this object in the module's namespace */
1453 d = PyModule_GetDict(m);
1454 PyDict_SetItemString(d, "_C_API", c_api_object);
1455}
1456\end{verbatim}
1457
1458Note that \code{PySpam_API} is declared \code{static}; otherwise
1459the pointer array would disappear when \code{initspam} terminates!
1460
1461The bulk of the work is in the header file \file{spammodule.h},
1462which looks like this:
1463
1464\begin{verbatim}
1465#ifndef Py_SPAMMODULE_H
1466#define Py_SPAMMODULE_H
1467#ifdef __cplusplus
1468extern "C" {
1469#endif
1470
1471/* Header file for spammodule */
1472
1473/* C API functions */
1474#define PySpam_System_NUM 0
1475#define PySpam_System_RETURN int
1476#define PySpam_System_PROTO Py_PROTO((char *command))
1477
1478/* Total number of C API pointers */
1479#define PySpam_API_pointers 1
1480
1481
1482#ifdef SPAM_MODULE
1483/* This section is used when compiling spammodule.c */
1484
1485static PySpam_System_RETURN PySpam_System PySpam_System_PROTO;
1486
1487#else
1488/* This section is used in modules that use spammodule's API */
1489
1490static void **PySpam_API;
1491
1492#define PySpam_System \
1493 (*(PySpam_System_RETURN (*)PySpam_System_PROTO) PySpam_API[PySpam_System_NUM])
1494
1495#define import_spam() \
1496{ \
1497 PyObject *module = PyImport_ImportModule("spam"); \
1498 if (module != NULL) { \
1499 PyObject *module_dict = PyModule_GetDict(module); \
1500 PyObject *c_api_object = PyDict_GetItemString(module_dict, "_C_API"); \
1501 if (PyCObject_Check(c_api_object)) { \
1502 PySpam_API = (void **)PyCObject_AsVoidPtr(c_api_object); \
1503 } \
1504 } \
1505}
1506
1507#endif
1508
1509#ifdef __cplusplus
1510}
1511#endif
1512
1513#endif /* !defined(Py_SPAMMODULE_H */
1514\end{verbatim}
1515
1516All that a client module must do in order to have access to the
1517function \cfunction{PySpam_System()} is to call the function (or
1518rather macro) \cfunction{import_spam()} in its initialization
1519function:
1520
1521\begin{verbatim}
1522void
1523initclient()
1524{
1525 PyObject *m;
1526
1527 Py_InitModule("client", ClientMethods);
1528 import_spam();
1529}
1530\end{verbatim}
1531
1532The main disadvantage of this approach is that the file
1533\file{spammodule.h} is rather complicated. However, the
1534basic structure is the same for each function that is
1535exported, so it has to be learned only once.
1536
1537Finally it should be mentioned that CObjects offer additional
1538functionality, which is especially useful for memory allocation and
1539deallocation of the pointer stored in a CObject. The details
1540are described in the \emph{Python/C API Reference Manual} in the
1541section ``CObjects'' and in the implementation of CObjects (files
1542\file{Include/cobject.h} and \file{Objects/cobject.c} in the
1543Python source code distribution).
1544
1545
1546\chapter{Building C and \Cpp{} Extensions on \UNIX{}
Fred Drake3de61bc1999-02-16 21:14:16 +00001547 \label{building-on-unix}}
Fred Drakee743fd01998-11-24 17:07:29 +00001548
Fred Drake33698f81999-02-16 23:06:32 +00001549\sectionauthor{Jim Fulton}{jim@Digicool.com}
Fred Drakee743fd01998-11-24 17:07:29 +00001550
1551
1552%The make file make file, building C extensions on Unix
1553
1554
1555Starting in Python 1.4, Python provides a special make file for
1556building make files for building dynamically-linked extensions and
1557custom interpreters. The make file make file builds a make file
1558that reflects various system variables determined by configure when
1559the Python interpreter was built, so people building module's don't
1560have to resupply these settings. This vastly simplifies the process
1561of building extensions and custom interpreters on Unix systems.
1562
1563The make file make file is distributed as the file
1564\file{Misc/Makefile.pre.in} in the Python source distribution. The
1565first step in building extensions or custom interpreters is to copy
1566this make file to a development directory containing extension module
1567source.
1568
1569The make file make file, \file{Makefile.pre.in} uses metadata
1570provided in a file named \file{Setup}. The format of the \file{Setup}
1571file is the same as the \file{Setup} (or \file{Setup.in}) file
1572provided in the \file{Modules/} directory of the Python source
Fred Drake33698f81999-02-16 23:06:32 +00001573distribution. The \file{Setup} file contains variable definitions:
Fred Drakee743fd01998-11-24 17:07:29 +00001574
1575\begin{verbatim}
1576EC=/projects/ExtensionClass
1577\end{verbatim}
1578
1579and module description lines. It can also contain blank lines and
1580comment lines that start with \character{\#}.
1581
1582A module description line includes a module name, source files,
1583options, variable references, and other input files, such
1584as libraries or object files. Consider a simple example::
1585
1586\begin{verbatim}
1587ExtensionClass ExtensionClass.c
1588\end{verbatim}
1589
1590This is the simplest form of a module definition line. It defines a
Fred Drake8e015171999-02-17 18:12:14 +00001591module, \module{ExtensionClass}, which has a single source file,
Fred Drakee743fd01998-11-24 17:07:29 +00001592\file{ExtensionClass.c}.
1593
Fred Drake8e015171999-02-17 18:12:14 +00001594This slightly more complex example uses an \strong{-I} option to
1595specify an include directory:
Fred Drakee743fd01998-11-24 17:07:29 +00001596
1597\begin{verbatim}
Fred Drake8e015171999-02-17 18:12:14 +00001598EC=/projects/ExtensionClass
Fred Drakee743fd01998-11-24 17:07:29 +00001599cPersistence cPersistence.c -I$(EC)
Fred Drake8e015171999-02-17 18:12:14 +00001600\end{verbatim} % $ <-- bow to font lock
Fred Drakee743fd01998-11-24 17:07:29 +00001601
1602This example also illustrates the format for variable references.
1603
1604For systems that support dynamic linking, the \file{Setup} file should
1605begin:
1606
1607\begin{verbatim}
1608*shared*
1609\end{verbatim}
1610
1611to indicate that the modules defined in \file{Setup} are to be built
Fred Drakedc12ec81999-03-09 18:36:55 +00001612as dynamically linked modules. A line containing only \samp{*static*}
1613can be used to indicate the subsequently listed modules should be
1614statically linked.
Fred Drakee743fd01998-11-24 17:07:29 +00001615
1616Here is a complete \file{Setup} file for building a
1617\module{cPersistent} module:
1618
1619\begin{verbatim}
1620# Set-up file to build the cPersistence module.
1621# Note that the text should begin in the first column.
1622*shared*
1623
1624# We need the path to the directory containing the ExtensionClass
1625# include file.
1626EC=/projects/ExtensionClass
1627cPersistence cPersistence.c -I$(EC)
Fred Drake8e015171999-02-17 18:12:14 +00001628\end{verbatim} % $ <-- bow to font lock
Fred Drakee743fd01998-11-24 17:07:29 +00001629
1630After the \file{Setup} file has been created, \file{Makefile.pre.in}
1631is run with the \samp{boot} target to create a make file:
1632
1633\begin{verbatim}
1634make -f Makefile.pre.in boot
1635\end{verbatim}
1636
1637This creates the file, Makefile. To build the extensions, simply
1638run the created make file:
1639
1640\begin{verbatim}
1641make
1642\end{verbatim}
1643
1644It's not necessary to re-run \file{Makefile.pre.in} if the
1645\file{Setup} file is changed. The make file automatically rebuilds
1646itself if the \file{Setup} file changes.
1647
Fred Drake8e015171999-02-17 18:12:14 +00001648
1649\section{Building Custom Interpreters \label{custom-interps}}
Fred Drakee743fd01998-11-24 17:07:29 +00001650
1651The make file built by \file{Makefile.pre.in} can be run with the
1652\samp{static} target to build an interpreter:
1653
1654\begin{verbatim}
1655make static
1656\end{verbatim}
1657
1658Any modules defined in the Setup file before the \samp{*shared*} line
1659will be statically linked into the interpreter. Typically, a
1660\samp{*shared*} line is omitted from the Setup file when a custom
1661interpreter is desired.
1662
Fred Drake8e015171999-02-17 18:12:14 +00001663
1664\section{Module Definition Options \label{module-defn-options}}
Fred Drakee743fd01998-11-24 17:07:29 +00001665
1666Several compiler options are supported:
1667
1668\begin{tableii}{l|l}{}{Option}{Meaning}
1669 \lineii{-C}{Tell the C pre-processor not to discard comments}
1670 \lineii{-D\var{name}=\var{value}}{Define a macro}
1671 \lineii{-I\var{dir}}{Specify an include directory, \var{dir}}
Fred Drake33698f81999-02-16 23:06:32 +00001672 \lineii{-L\var{dir}}{Specify a link-time library directory, \var{dir}}
1673 \lineii{-R\var{dir}}{Specify a run-time library directory, \var{dir}}
Fred Drakee743fd01998-11-24 17:07:29 +00001674 \lineii{-l\var{lib}}{Link a library, \var{lib}}
1675 \lineii{-U\var{name}}{Undefine a macro}
1676\end{tableii}
1677
1678Other compiler options can be included (snuck in) by putting them
Fred Drakedc12ec81999-03-09 18:36:55 +00001679in variables.
Fred Drakee743fd01998-11-24 17:07:29 +00001680
1681Source files can include files with \file{.c}, \file{.C}, \file{.cc},
Fred Drake8e015171999-02-17 18:12:14 +00001682\file{.cpp}, \file{.cxx}, and \file{.c++} extensions.
Fred Drakee743fd01998-11-24 17:07:29 +00001683
Fred Drake8e015171999-02-17 18:12:14 +00001684Other input files include files with \file{.a}, \file{.o}, \file{.sl},
1685and \file{.so} extensions.
Fred Drakee743fd01998-11-24 17:07:29 +00001686
1687
Fred Drake8e015171999-02-17 18:12:14 +00001688\section{Example \label{module-defn-example}}
Fred Drakee743fd01998-11-24 17:07:29 +00001689
1690Here is a more complicated example from \file{Modules/Setup.in}:
1691
1692\begin{verbatim}
1693GMP=/ufs/guido/src/gmp
1694mpz mpzmodule.c -I$(GMP) $(GMP)/libgmp.a
1695\end{verbatim}
1696
1697which could also be written as:
1698
1699\begin{verbatim}
1700mpz mpzmodule.c -I$(GMP) -L$(GMP) -lgmp
1701\end{verbatim}
1702
1703
1704\section{Distributing your extension modules
1705 \label{distributing}}
1706
1707When distributing your extension modules in source form, make sure to
1708include a \file{Setup} file. The \file{Setup} file should be named
1709\file{Setup.in} in the distribution. The make file make file,
1710\file{Makefile.pre.in}, will copy \file{Setup.in} to \file{Setup}.
1711Distributing a \file{Setup.in} file makes it easy for people to
1712customize the \file{Setup} file while keeping the original in
1713\file{Setup.in}.
1714
1715It is a good idea to include a copy of \file{Makefile.pre.in} for
1716people who do not have a source distribution of Python.
1717
1718Do not distribute a make file. People building your modules
Fred Drake8e015171999-02-17 18:12:14 +00001719should use \file{Makefile.pre.in} to build their own make file. A
1720\file{README} file included in the package should provide simple
1721instructions to perform the build.
Fred Drakee743fd01998-11-24 17:07:29 +00001722
Fred Drake33698f81999-02-16 23:06:32 +00001723Work is being done to make building and installing Python extensions
1724easier for all platforms; this work in likely to supplant the current
1725approach at some point in the future. For more information or to
1726participate in the effort, refer to
1727\url{http://www.python.org/sigs/distutils-sig/} on the Python Web
1728site.
1729
Fred Drakee743fd01998-11-24 17:07:29 +00001730
Fred Drake3de61bc1999-02-16 21:14:16 +00001731\chapter{Building C and \Cpp{} Extensions on Windows
Fred Drake33698f81999-02-16 23:06:32 +00001732 \label{building-on-windows}}
Fred Drake3de61bc1999-02-16 21:14:16 +00001733
1734
1735This chapter briefly explains how to create a Windows extension module
Fred Drake33698f81999-02-16 23:06:32 +00001736for Python using Microsoft Visual \Cpp{}, and follows with more
1737detailed background information on how it works. The explanatory
1738material is useful for both the Windows programmer learning to build
1739Python extensions and the \UNIX{} programming interested in producing
1740software which can be successfully built on both \UNIX{} and Windows.
1741
Fred Drake8e015171999-02-17 18:12:14 +00001742
Fred Drake33698f81999-02-16 23:06:32 +00001743\section{A Cookbook Approach \label{win-cookbook}}
1744
1745\sectionauthor{Neil Schemenauer}{neil_schemenauer@transcanada.com}
1746
1747This section provides a recipe for building a Python extension on
1748Windows.
Fred Drake3de61bc1999-02-16 21:14:16 +00001749
1750Grab the binary installer from \url{http://www.python.org/} and
1751install Python. The binary installer has all of the required header
1752files except for \file{config.h}.
1753
1754Get the source distribution and extract it into a convenient location.
1755Copy the \file{config.h} from the \file{PC/} directory into the
1756\file{include/} directory created by the installer.
1757
1758Create a \file{Setup} file for your extension module, as described in
1759Chapter \ref{building-on-unix}.
1760
1761Get David Ascher's \file{compile.py} script from
Fred Drakec0fcbc11999-04-29 02:30:04 +00001762\url{http://starship.python.net/crew/da/compile/}. Run the script to
Fred Drake3de61bc1999-02-16 21:14:16 +00001763create Microsoft Visual \Cpp{} project files.
1764
1765Open the DSW file in V\Cpp{} and select \strong{Build}.
1766
1767If your module creates a new type, you may have trouble with this line:
1768
1769\begin{verbatim}
1770 PyObject_HEAD_INIT(&PyType_Type)
1771\end{verbatim}
1772
1773Change it to:
1774
1775\begin{verbatim}
1776 PyObject_HEAD_INIT(NULL)
1777\end{verbatim}
1778
1779and add the following to the module initialization function:
1780
1781\begin{verbatim}
1782 MyObject_Type.ob_type = &PyType_Type;
1783\end{verbatim}
1784
1785Refer to section 3 of the Python FAQ
1786(\url{http://www.python.org/doc/FAQ.html}) for details on why you must
1787do this.
1788
1789
Fred Drake33698f81999-02-16 23:06:32 +00001790\section{Differences Between \UNIX{} and Windows
1791 \label{dynamic-linking}}
1792\sectionauthor{Chris Phoenix}{cphoenix@best.com}
1793
1794
1795\UNIX{} and Windows use completely different paradigms for run-time
1796loading of code. Before you try to build a module that can be
1797dynamically loaded, be aware of how your system works.
1798
1799In \UNIX{}, a shared object (.so) file contains code to be used by the
1800program, and also the names of functions and data that it expects to
1801find in the program. When the file is joined to the program, all
1802references to those functions and data in the file's code are changed
1803to point to the actual locations in the program where the functions
1804and data are placed in memory. This is basically a link operation.
1805
1806In Windows, a dynamic-link library (\file{.dll}) file has no dangling
1807references. Instead, an access to functions or data goes through a
1808lookup table. So the DLL code does not have to be fixed up at runtime
1809to refer to the program's memory; instead, the code already uses the
1810DLL's lookup table, and the lookup table is modified at runtime to
1811point to the functions and data.
1812
1813In \UNIX{}, there is only one type of library file (\file{.a}) which
1814contains code from several object files (\file{.o}). During the link
1815step to create a shared object file (\file{.so}), the linker may find
1816that it doesn't know where an identifier is defined. The linker will
1817look for it in the object files in the libraries; if it finds it, it
1818will include all the code from that object file.
1819
1820In Windows, there are two types of library, a static library and an
1821import library (both called \file{.lib}). A static library is like a
1822\UNIX{} \file{.a} file; it contains code to be included as necessary.
1823An import library is basically used only to reassure the linker that a
1824certain identifier is legal, and will be present in the program when
1825the DLL is loaded. So the linker uses the information from the
1826import library to build the lookup table for using identifiers that
1827are not included in the DLL. When an application or a DLL is linked,
1828an import library may be generated, which will need to be used for all
1829future DLLs that depend on the symbols in the application or DLL.
1830
1831Suppose you are building two dynamic-load modules, B and C, which should
1832share another block of code A. On \UNIX{}, you would \emph{not} pass
1833\file{A.a} to the linker for \file{B.so} and \file{C.so}; that would
1834cause it to be included twice, so that B and C would each have their
1835own copy. In Windows, building \file{A.dll} will also build
1836\file{A.lib}. You \emph{do} pass \file{A.lib} to the linker for B and
1837C. \file{A.lib} does not contain code; it just contains information
1838which will be used at runtime to access A's code.
1839
1840In Windows, using an import library is sort of like using \samp{import
1841spam}; it gives you access to spam's names, but does not create a
1842separate copy. On \UNIX{}, linking with a library is more like
1843\samp{from spam import *}; it does create a separate copy.
1844
1845
1846\section{Using DLLs in Practice \label{win-dlls}}
1847\sectionauthor{Chris Phoenix}{cphoenix@best.com}
1848
1849Windows Python is built in Microsoft Visual \Cpp{}; using other
1850compilers may or may not work (though Borland seems to). The rest of
1851this section is MSV\Cpp{} specific.
1852
1853When creating DLLs in Windows, you must pass \file{python15.lib} to
1854the linker. To build two DLLs, spam and ni (which uses C functions
1855found in spam), you could use these commands:
1856
1857\begin{verbatim}
1858cl /LD /I/python/include spam.c ../libs/python15.lib
1859cl /LD /I/python/include ni.c spam.lib ../libs/python15.lib
1860\end{verbatim}
1861
1862The first command created three files: \file{spam.obj},
1863\file{spam.dll} and \file{spam.lib}. \file{Spam.dll} does not contain
1864any Python functions (such as \cfunction{PyArg_ParseTuple()}), but it
1865does know how to find the Python code thanks to \file{python15.lib}.
1866
1867The second command created \file{ni.dll} (and \file{.obj} and
1868\file{.lib}), which knows how to find the necessary functions from
1869spam, and also from the Python executable.
1870
1871Not every identifier is exported to the lookup table. If you want any
1872other modules (including Python) to be able to see your identifiers,
1873you have to say \samp{_declspec(dllexport)}, as in \samp{void
1874_declspec(dllexport) initspam(void)} or \samp{PyObject
1875_declspec(dllexport) *NiGetSpamData(void)}.
1876
1877Developer Studio will throw in a lot of import libraries that you do
1878not really need, adding about 100K to your executable. To get rid of
1879them, use the Project Settings dialog, Link tab, to specify
1880\emph{ignore default libraries}. Add the correct
1881\file{msvcrt\var{xx}.lib} to the list of libraries.
1882
1883
Fred Drake5e8aa541998-11-16 18:34:07 +00001884\chapter{Embedding Python in Another Application
1885 \label{embedding}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001886
1887Embedding Python is similar to extending it, but not quite. The
1888difference is that when you extend Python, the main program of the
Guido van Rossum16d6e711994-08-08 12:30:22 +00001889application is still the Python interpreter, while if you embed
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001890Python, the main program may have nothing to do with Python ---
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001891instead, some parts of the application occasionally call the Python
1892interpreter to run some Python code.
1893
1894So if you are embedding Python, you are providing your own main
1895program. One of the things this main program has to do is initialize
1896the Python interpreter. At the very least, you have to call the
Fred Draked7bb3031998-03-03 17:52:07 +00001897function \cfunction{Py_Initialize()}. There are optional calls to
1898pass command line arguments to Python. Then later you can call the
1899interpreter from any part of the application.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001900
1901There are several different ways to call the interpreter: you can pass
Fred Draked7bb3031998-03-03 17:52:07 +00001902a string containing Python statements to
1903\cfunction{PyRun_SimpleString()}, or you can pass a stdio file pointer
1904and a file name (for identification in error messages only) to
1905\cfunction{PyRun_SimpleFile()}. You can also call the lower-level
1906operations described in the previous chapters to construct and use
1907Python objects.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001908
1909A simple demo of embedding Python can be found in the directory
Fred Drake295fb431999-02-16 17:29:42 +00001910\file{Demo/embed/} of the source distribution.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001911
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001912
Fred Drake5e8aa541998-11-16 18:34:07 +00001913\section{Embedding Python in \Cpp{}
1914 \label{embeddingInCplusplus}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001915
Guido van Rossum16d6e711994-08-08 12:30:22 +00001916It is also possible to embed Python in a \Cpp{} program; precisely how this
1917is done will depend on the details of the \Cpp{} system used; in general you
1918will need to write the main program in \Cpp{}, and use the \Cpp{} compiler
1919to compile and link your program. There is no need to recompile Python
1920itself using \Cpp{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001921
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001922\end{document}