blob: 2572b5815d7502fa2672ad63795c2b324c5ced15 [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
Fred Drakea48a0831999-06-18 19:17:28 +0000409\strong{Note:} Removing entries from \code{sys.modules} or importing
410compiled modules into multiple interpreters within a process (or
411following a \cfunction{fork()} without an intervening
412\cfunction{exec()}) can create problems for some extension modules.
413Extension module authors should exercise caution when initializing
414internal data structures.
415
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000416
Fred Drake5e8aa541998-11-16 18:34:07 +0000417\section{Compilation and Linkage
418 \label{compilation}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000419
Guido van Rossumb92112d1995-03-20 14:24:09 +0000420There are two more things to do before you can use your new extension:
421compiling and linking it with the Python system. If you use dynamic
422loading, the details depend on the style of dynamic loading your
Fred Drakea0dbddf1998-04-02 06:50:02 +0000423system uses; see the chapter ``Dynamic Loading'' for more information
424about this.
Guido van Rossum6938f061994-08-01 12:22:53 +0000425
426If you can't use dynamic loading, or if you want to make your module a
427permanent part of the Python interpreter, you will have to change the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000428configuration setup and rebuild the interpreter. Luckily, this is
429very simple: just place your file (\file{spammodule.c} for example) in
Fred Drakea4a90dd1999-04-29 02:44:50 +0000430the \file{Modules/} directory of an unpacked source distribution, add
431a line to the file \file{Modules/Setup.local} describing your file:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000432
Fred Drake1e11a5c1998-02-13 07:11:32 +0000433\begin{verbatim}
434spam spammodule.o
435\end{verbatim}
436
Fred Draked7bb3031998-03-03 17:52:07 +0000437and rebuild the interpreter by running \program{make} in the toplevel
Fred Drakea4a90dd1999-04-29 02:44:50 +0000438directory. You can also run \program{make} in the \file{Modules/}
Fred Drakea0dbddf1998-04-02 06:50:02 +0000439subdirectory, but then you must first rebuild \file{Makefile}
Fred Draked7bb3031998-03-03 17:52:07 +0000440there by running `\program{make} Makefile'. (This is necessary each
441time you change the \file{Setup} file.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000442
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000443If your module requires additional libraries to link with, these can
Fred Drakea0dbddf1998-04-02 06:50:02 +0000444be listed on the line in the configuration file as well, for instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000445
Fred Drake1e11a5c1998-02-13 07:11:32 +0000446\begin{verbatim}
447spam spammodule.o -lX11
448\end{verbatim}
449
Fred Drakeec9fbe91999-02-15 16:20:25 +0000450\section{Calling Python Functions from C
Fred Drake5e8aa541998-11-16 18:34:07 +0000451 \label{callingPython}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000452
Fred Drakeec9fbe91999-02-15 16:20:25 +0000453So far we have concentrated on making C functions callable from
454Python. The reverse is also useful: calling Python functions from C.
Guido van Rossum6938f061994-08-01 12:22:53 +0000455This is especially the case for libraries that support so-called
Fred Drakeec9fbe91999-02-15 16:20:25 +0000456``callback'' functions. If a C interface makes use of callbacks, the
Guido van Rossum6938f061994-08-01 12:22:53 +0000457equivalent Python often needs to provide a callback mechanism to the
458Python programmer; the implementation will require calling the Python
Fred Drakeec9fbe91999-02-15 16:20:25 +0000459callback functions from a C callback. Other uses are also imaginable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000460
461Fortunately, the Python interpreter is easily called recursively, and
Guido van Rossum6938f061994-08-01 12:22:53 +0000462there is a standard interface to call a Python function. (I won't
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000463dwell on how to call the Python parser with a particular string as
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000464input --- if you're interested, have a look at the implementation of
Fred Drake5e8aa541998-11-16 18:34:07 +0000465the \samp{-c} command line option in \file{Python/pythonmain.c} from
466the Python source code.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000467
468Calling a Python function is easy. First, the Python program must
469somehow pass you the Python function object. You should provide a
470function (or some other interface) to do this. When this function is
471called, save a pointer to the Python function object (be careful to
Fred Drakedc12ec81999-03-09 18:36:55 +0000472\cfunction{Py_INCREF()} it!) in a global variable --- or wherever you
Fred Draked7bb3031998-03-03 17:52:07 +0000473see fit. For example, the following function might be part of a module
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000474definition:
475
Fred Drake1e11a5c1998-02-13 07:11:32 +0000476\begin{verbatim}
477static PyObject *my_callback = NULL;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000478
Fred Drake1e11a5c1998-02-13 07:11:32 +0000479static PyObject *
480my_set_callback(dummy, arg)
481 PyObject *dummy, *arg;
482{
Fred Drake5e8aa541998-11-16 18:34:07 +0000483 PyObject *result = NULL;
484 PyObject *temp;
485
486 if (PyArg_ParseTuple(args, "O:set_callback", &temp)) {
487 if (!PyCallable_Check(temp)) {
488 PyErr_SetString(PyExc_TypeError, "parameter must be callable");
489 return NULL;
490 }
491 Py_XINCREF(temp); /* Add a reference to new callback */
492 Py_XDECREF(my_callback); /* Dispose of previous callback */
493 my_callback = temp; /* Remember new callback */
494 /* Boilerplate to return "None" */
495 Py_INCREF(Py_None);
496 result = Py_None;
497 }
498 return result;
Fred Drake1e11a5c1998-02-13 07:11:32 +0000499}
500\end{verbatim}
501
Fred Drake5e8aa541998-11-16 18:34:07 +0000502This function must be registered with the interpreter using the
Fred Drake5f342ac1999-04-29 02:47:40 +0000503\constant{METH_VARARGS} flag; this is described in section
Fred Drake5e8aa541998-11-16 18:34:07 +0000504\ref{methodTable}, ``The Module's Method Table and Initialization
505Function.'' The \cfunction{PyArg_ParseTuple()} function and its
Fred Drake5f342ac1999-04-29 02:47:40 +0000506arguments are documented in section \ref{parseTuple}, ``Format Strings
Fred Drake5e8aa541998-11-16 18:34:07 +0000507for \cfunction{PyArg_ParseTuple()}.''
508
Fred Draked7bb3031998-03-03 17:52:07 +0000509The macros \cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()}
510increment/decrement the reference count of an object and are safe in
Fred Drake5e8aa541998-11-16 18:34:07 +0000511the presence of \NULL{} pointers (but note that \var{temp} will not be
Fred Drake5f342ac1999-04-29 02:47:40 +0000512\NULL{} in this context). More info on them in section
Fred Drake5e8aa541998-11-16 18:34:07 +0000513\ref{refcounts}, ``Reference Counts.''
Guido van Rossum6938f061994-08-01 12:22:53 +0000514
Fred Drakeec9fbe91999-02-15 16:20:25 +0000515Later, when it is time to call the function, you call the C function
Fred Draked7bb3031998-03-03 17:52:07 +0000516\cfunction{PyEval_CallObject()}. This function has two arguments, both
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000517pointers to arbitrary Python objects: the Python function, and the
518argument list. The argument list must always be a tuple object, whose
519length is the number of arguments. To call the Python function with
520no arguments, pass an empty tuple; to call it with one argument, pass
Fred Draked7bb3031998-03-03 17:52:07 +0000521a singleton tuple. \cfunction{Py_BuildValue()} returns a tuple when its
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000522format string consists of zero or more format codes between
523parentheses. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000524
Fred Drake1e11a5c1998-02-13 07:11:32 +0000525\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000526 int arg;
527 PyObject *arglist;
528 PyObject *result;
529 ...
530 arg = 123;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000531 ...
532 /* Time to call the callback */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000533 arglist = Py_BuildValue("(i)", arg);
534 result = PyEval_CallObject(my_callback, arglist);
535 Py_DECREF(arglist);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000536\end{verbatim}
537
Fred Draked7bb3031998-03-03 17:52:07 +0000538\cfunction{PyEval_CallObject()} returns a Python object pointer: this is
539the return value of the Python function. \cfunction{PyEval_CallObject()} is
Guido van Rossumb92112d1995-03-20 14:24:09 +0000540``reference-count-neutral'' with respect to its arguments. In the
Guido van Rossum6938f061994-08-01 12:22:53 +0000541example a new tuple was created to serve as the argument list, which
Fred Draked7bb3031998-03-03 17:52:07 +0000542is \cfunction{Py_DECREF()}-ed immediately after the call.
Guido van Rossum6938f061994-08-01 12:22:53 +0000543
Fred Draked7bb3031998-03-03 17:52:07 +0000544The return value of \cfunction{PyEval_CallObject()} is ``new'': either it
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000545is a brand new object, or it is an existing object whose reference
546count has been incremented. So, unless you want to save it in a
Fred Draked7bb3031998-03-03 17:52:07 +0000547global variable, you should somehow \cfunction{Py_DECREF()} the result,
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000548even (especially!) if you are not interested in its value.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000549
550Before you do this, however, it is important to check that the return
Fred Draked7bb3031998-03-03 17:52:07 +0000551value isn't \NULL{}. If it is, the Python function terminated by
Fred Drakeec9fbe91999-02-15 16:20:25 +0000552raising an exception. If the C code that called
Fred Draked7bb3031998-03-03 17:52:07 +0000553\cfunction{PyEval_CallObject()} is called from Python, it should now
554return an error indication to its Python caller, so the interpreter
555can print a stack trace, or the calling Python code can handle the
556exception. If this is not possible or desirable, the exception should
557be cleared by calling \cfunction{PyErr_Clear()}. For example:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000558
Fred Drake1e11a5c1998-02-13 07:11:32 +0000559\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000560 if (result == NULL)
561 return NULL; /* Pass error back */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000562 ...use result...
563 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000564\end{verbatim}
565
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000566Depending on the desired interface to the Python callback function,
Fred Draked7bb3031998-03-03 17:52:07 +0000567you may also have to provide an argument list to
568\cfunction{PyEval_CallObject()}. In some cases the argument list is
569also provided by the Python program, through the same interface that
570specified the callback function. It can then be saved and used in the
571same manner as the function object. In other cases, you may have to
572construct a new tuple to pass as the argument list. The simplest way
573to do this is to call \cfunction{Py_BuildValue()}. For example, if
574you want to pass an integral event code, you might use the following
575code:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000576
Fred Drake1e11a5c1998-02-13 07:11:32 +0000577\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000578 PyObject *arglist;
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000579 ...
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000580 arglist = Py_BuildValue("(l)", eventcode);
581 result = PyEval_CallObject(my_callback, arglist);
582 Py_DECREF(arglist);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000583 if (result == NULL)
584 return NULL; /* Pass error back */
585 /* Here maybe use the result */
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000586 Py_DECREF(result);
Fred Drake1e11a5c1998-02-13 07:11:32 +0000587\end{verbatim}
588
Fred Draked7bb3031998-03-03 17:52:07 +0000589Note the placement of \samp{Py_DECREF(arglist)} immediately after the
590call, before the error check! Also note that strictly spoken this
591code is not complete: \cfunction{Py_BuildValue()} may run out of
592memory, and this should be checked.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000593
594
Fred Drake5e8aa541998-11-16 18:34:07 +0000595\section{Format Strings for \cfunction{PyArg_ParseTuple()}
596 \label{parseTuple}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000597
Fred Drake3da06a61998-02-26 18:49:12 +0000598The \cfunction{PyArg_ParseTuple()} function is declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000599
Fred Drake1e11a5c1998-02-13 07:11:32 +0000600\begin{verbatim}
601int PyArg_ParseTuple(PyObject *arg, char *format, ...);
602\end{verbatim}
603
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000604The \var{arg} argument must be a tuple object containing an argument
Fred Drakeec9fbe91999-02-15 16:20:25 +0000605list passed from Python to a C function. The \var{format} argument
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000606must be a format string, whose syntax is explained below. The
607remaining arguments must be addresses of variables whose type is
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000608determined by the format string. For the conversion to succeed, the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000609\var{arg} object must match the format and the format must be
610exhausted.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000611
Fred Drake3da06a61998-02-26 18:49:12 +0000612Note that while \cfunction{PyArg_ParseTuple()} checks that the Python
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000613arguments have the required types, it cannot check the validity of the
Fred Drakeec9fbe91999-02-15 16:20:25 +0000614addresses of C variables passed to the call: if you make mistakes
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000615there, your code will probably crash or at least overwrite random bits
616in memory. So be careful!
617
618A format string consists of zero or more ``format units''. A format
619unit describes one Python object; it is usually a single character or
620a parenthesized sequence of format units. With a few exceptions, a
621format unit that is not a parenthesized sequence normally corresponds
Fred Drake3da06a61998-02-26 18:49:12 +0000622to a single address argument to \cfunction{PyArg_ParseTuple()}. In the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000623following description, the quoted form is the format unit; the entry
624in (round) parentheses is the Python object type that matches the
Fred Drakeec9fbe91999-02-15 16:20:25 +0000625format unit; and the entry in [square] brackets is the type of the C
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000626variable(s) whose address should be passed. (Use the \samp{\&}
627operator to pass a variable's address.)
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000628
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000629\begin{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000630
Fred Drake3fe985f1998-03-04 03:51:42 +0000631\item[\samp{s} (string) {[char *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000632Convert a Python string to a C pointer to a character string. You
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000633must not provide storage for the string itself; a pointer to an
634existing string is stored into the character pointer variable whose
Fred Drakeec9fbe91999-02-15 16:20:25 +0000635address you pass. The C string is null-terminated. The Python string
Fred Drake3da06a61998-02-26 18:49:12 +0000636must not contain embedded null bytes; if it does, a \exception{TypeError}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000637exception is raised.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000638
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000639\item[\samp{s\#} (string) {[char *, int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000640This variant on \samp{s} stores into two C variables, the first one
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000641a pointer to a character string, the second one its length. In this
642case the Python string may contain embedded null bytes.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000643
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000644\item[\samp{z} (string or \code{None}) {[char *]}]
645Like \samp{s}, but the Python object may also be \code{None}, in which
Fred Drakeec9fbe91999-02-15 16:20:25 +0000646case the C pointer is set to \NULL{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000647
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000648\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
Fred Draked7bb3031998-03-03 17:52:07 +0000649This is to \samp{s\#} as \samp{z} is to \samp{s}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000650
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000651\item[\samp{b} (integer) {[char]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000652Convert a Python integer to a tiny int, stored in a C \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000653
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000654\item[\samp{h} (integer) {[short int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000655Convert a Python integer to a C \ctype{short int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000656
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000657\item[\samp{i} (integer) {[int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000658Convert a Python integer to a plain C \ctype{int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000659
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000660\item[\samp{l} (integer) {[long int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000661Convert a Python integer to a C \ctype{long int}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000662
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000663\item[\samp{c} (string of length 1) {[char]}]
664Convert a Python character, represented as a string of length 1, to a
Fred Drakeec9fbe91999-02-15 16:20:25 +0000665C \ctype{char}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000666
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000667\item[\samp{f} (float) {[float]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000668Convert a Python floating point number to a C \ctype{float}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000669
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000670\item[\samp{d} (float) {[double]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000671Convert a Python floating point number to a C \ctype{double}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000672
Fred Drakeb6e50321998-02-04 20:26:31 +0000673\item[\samp{D} (complex) {[Py_complex]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000674Convert a Python complex number to a C \ctype{Py_complex} structure.
Fred Drakeb6e50321998-02-04 20:26:31 +0000675
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000676\item[\samp{O} (object) {[PyObject *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000677Store a Python object (without any conversion) in a C object pointer.
678The C program thus receives the actual object that was passed. The
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000679object's reference count is not increased. The pointer stored is not
Fred Drake0fd82681998-01-09 05:39:38 +0000680\NULL{}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000681
Fred Drake3fe985f1998-03-04 03:51:42 +0000682\item[\samp{O!} (object) {[\var{typeobject}, PyObject *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000683Store a Python object in a C object pointer. This is similar to
684\samp{O}, but takes two C arguments: the first is the address of a
685Python type object, the second is the address of the C variable (of
Fred Draked7bb3031998-03-03 17:52:07 +0000686type \ctype{PyObject *}) into which the object pointer is stored.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000687If the Python object does not have the required type, a
Fred Draked7bb3031998-03-03 17:52:07 +0000688\exception{TypeError} exception is raised.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000689
Fred Drake3fe985f1998-03-04 03:51:42 +0000690\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000691Convert a Python object to a C variable through a \var{converter}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000692function. This takes two arguments: the first is a function, the
Fred Drakeec9fbe91999-02-15 16:20:25 +0000693second is the address of a C variable (of arbitrary type), converted
Fred Draked7bb3031998-03-03 17:52:07 +0000694to \ctype{void *}. The \var{converter} function in turn is called as
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000695follows:
696
Fred Drake82ac24f1999-07-02 14:29:14 +0000697\var{status}\code{ = }\var{converter}\code{(}\var{object}, \var{address}\code{);}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000698
699where \var{object} is the Python object to be converted and
Fred Draked7bb3031998-03-03 17:52:07 +0000700\var{address} is the \ctype{void *} argument that was passed to
701\cfunction{PyArg_ConvertTuple()}. The returned \var{status} should be
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000702\code{1} for a successful conversion and \code{0} if the conversion
703has failed. When the conversion fails, the \var{converter} function
704should raise an exception.
705
706\item[\samp{S} (string) {[PyStringObject *]}]
Guido van Rossum2474d681998-02-26 17:07:11 +0000707Like \samp{O} but requires that the Python object is a string object.
Fred Draked7bb3031998-03-03 17:52:07 +0000708Raises a \exception{TypeError} exception if the object is not a string
Fred Drakeec9fbe91999-02-15 16:20:25 +0000709object. The C variable may also be declared as \ctype{PyObject *}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000710
Fred Drake8779f641999-08-27 15:28:15 +0000711\item[\samp{t\#} (read-only character buffer) {[char *, int]}]
712Like \samp{s\#}, but accepts any object which implements the read-only
713buffer interface. The \ctype{char *} variable is set to point to the
714first byte of the buffer, and the \ctype{int} is set to the length of
715the buffer. Only single-segment buffer objects are accepted;
716\exception{TypeError} is raised for all others.
717
718\item[\samp{w} (read-write character buffer) {[char *]}]
719Similar to \samp{s}, but accepts any object which implements the
720read-write buffer interface. The caller must determine the length of
721the buffer by other means, or use \samp{w\#} instead. Only
722single-segment buffer objects are accepted; \exception{TypeError} is
723raised for all others.
724
725\item[\samp{w\#} (read-write character buffer) {[char *, int]}]
726Like \samp{s\#}, but accepts any object which implements the
727read-write buffer interface. The \ctype{char *} variable is set to
728point to the first byte of the buffer, and the \ctype{int} is set to
729the length of the buffer. Only single-segment buffer objects are
730accepted; \exception{TypeError} is raised for all others.
731
Fred Drake3fe985f1998-03-04 03:51:42 +0000732\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Fred Drake29fb54f1999-02-18 03:50:01 +0000733The object must be a Python sequence whose length is the number of
734format units in \var{items}. The C arguments must correspond to the
735individual format units in \var{items}. Format units for sequences
736may be nested.
737
738\strong{Note:} Prior to Python version 1.5.2, this format specifier
739only accepted a tuple containing the individual parameters, not an
740arbitrary sequence. Code which previously caused a
741\exception{TypeError} to be raised here may now proceed without an
742exception. This is not expected to be a problem for existing code.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +0000743
744\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000745
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000746It is possible to pass Python long integers where integers are
Fred Drake1aedbd81998-02-16 14:47:27 +0000747requested; however no proper range checking is done --- the most
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000748significant bits are silently truncated when the receiving field is
749too small to receive the value (actually, the semantics are inherited
Fred Drakedc12ec81999-03-09 18:36:55 +0000750from downcasts in C --- your mileage may vary).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000751
752A few other characters have a meaning in a format string. These may
753not occur inside nested parentheses. They are:
754
755\begin{description}
756
757\item[\samp{|}]
758Indicates that the remaining arguments in the Python argument list are
Fred Drakeec9fbe91999-02-15 16:20:25 +0000759optional. The C variables corresponding to optional arguments should
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000760be initialized to their default value --- when an optional argument is
Fred Drake40e72f71998-03-03 19:37:38 +0000761not specified, \cfunction{PyArg_ParseTuple()} does not touch the contents
Fred Drakeec9fbe91999-02-15 16:20:25 +0000762of the corresponding C variable(s).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000763
764\item[\samp{:}]
765The list of format units ends here; the string after the colon is used
766as the function name in error messages (the ``associated value'' of
Fred Drakedc12ec81999-03-09 18:36:55 +0000767the exception that \cfunction{PyArg_ParseTuple()} raises).
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000768
769\item[\samp{;}]
770The list of format units ends here; the string after the colon is used
771as the error message \emph{instead} of the default error message.
772Clearly, \samp{:} and \samp{;} mutually exclude each other.
773
774\end{description}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000775
776Some example calls:
777
Fred Drake0fd82681998-01-09 05:39:38 +0000778\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000779 int ok;
780 int i, j;
781 long k, l;
782 char *s;
783 int size;
784
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000785 ok = PyArg_ParseTuple(args, ""); /* No arguments */
Guido van Rossum6938f061994-08-01 12:22:53 +0000786 /* Python call: f() */
Fred Drake33698f81999-02-16 23:06:32 +0000787\end{verbatim}
Fred Drake0fd82681998-01-09 05:39:38 +0000788
Fred Drake33698f81999-02-16 23:06:32 +0000789\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000790 ok = PyArg_ParseTuple(args, "s", &s); /* A string */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000791 /* Possible Python call: f('whoops!') */
Fred Drake33698f81999-02-16 23:06:32 +0000792\end{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000793
Fred Drake33698f81999-02-16 23:06:32 +0000794\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000795 ok = PyArg_ParseTuple(args, "lls", &k, &l, &s); /* Two longs and a string */
Guido van Rossum6938f061994-08-01 12:22:53 +0000796 /* Possible Python call: f(1, 2, 'three') */
Fred Drake33698f81999-02-16 23:06:32 +0000797\end{verbatim}
Fred Drake0fd82681998-01-09 05:39:38 +0000798
Fred Drake33698f81999-02-16 23:06:32 +0000799\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000800 ok = PyArg_ParseTuple(args, "(ii)s#", &i, &j, &s, &size);
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000801 /* A pair of ints and a string, whose size is also returned */
Guido van Rossum7e924dd1997-02-10 16:51:52 +0000802 /* Possible Python call: f((1, 2), 'three') */
Fred Drake33698f81999-02-16 23:06:32 +0000803\end{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000804
Fred Drake33698f81999-02-16 23:06:32 +0000805\begin{verbatim}
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000806 {
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000807 char *file;
808 char *mode = "r";
809 int bufsize = 0;
810 ok = PyArg_ParseTuple(args, "s|si", &file, &mode, &bufsize);
811 /* A string, and optionally another string and an integer */
812 /* Possible Python calls:
813 f('spam')
814 f('spam', 'w')
815 f('spam', 'wb', 100000) */
816 }
Fred Drake33698f81999-02-16 23:06:32 +0000817\end{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000818
Fred Drake33698f81999-02-16 23:06:32 +0000819\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000820 {
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000821 int left, top, right, bottom, h, v;
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000822 ok = PyArg_ParseTuple(args, "((ii)(ii))(ii)",
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000823 &left, &top, &right, &bottom, &h, &v);
Fred Drakea0dbddf1998-04-02 06:50:02 +0000824 /* A rectangle and a point */
825 /* Possible Python call:
826 f(((0, 0), (400, 300)), (10, 10)) */
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000827 }
Fred Drake33698f81999-02-16 23:06:32 +0000828\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000829
Fred Drake33698f81999-02-16 23:06:32 +0000830\begin{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000831 {
832 Py_complex c;
833 ok = PyArg_ParseTuple(args, "D:myfunction", &c);
834 /* a complex, also providing a function name for errors */
835 /* Possible Python call: myfunction(1+2j) */
836 }
Fred Drake0fd82681998-01-09 05:39:38 +0000837\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000838
839
Fred Drake5e8aa541998-11-16 18:34:07 +0000840\section{Keyword Parsing with \cfunction{PyArg_ParseTupleAndKeywords()}
841 \label{parseTupleAndKeywords}}
Fred Drakeb6e50321998-02-04 20:26:31 +0000842
843The \cfunction{PyArg_ParseTupleAndKeywords()} function is declared as
844follows:
845
Fred Drake1e11a5c1998-02-13 07:11:32 +0000846\begin{verbatim}
847int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,
848 char *format, char **kwlist, ...);
849\end{verbatim}
Fred Drakeb6e50321998-02-04 20:26:31 +0000850
851The \var{arg} and \var{format} parameters are identical to those of the
852\cfunction{PyArg_ParseTuple()} function. The \var{kwdict} parameter
853is the dictionary of keywords received as the third parameter from the
854Python runtime. The \var{kwlist} parameter is a \NULL{}-terminated
855list of strings which identify the parameters; the names are matched
856with the type information from \var{format} from left to right.
857
858\strong{Note:} Nested tuples cannot be parsed when using keyword
859arguments! Keyword parameters passed in which are not present in the
Fred Drakecd05ca91998-03-07 05:32:08 +0000860\var{kwlist} will cause \exception{TypeError} to be raised.
Fred Drakeb6e50321998-02-04 20:26:31 +0000861
862Here is an example module which uses keywords, based on an example by
Fred Drakea0dbddf1998-04-02 06:50:02 +0000863Geoff Philbrick (\email{philbrick@hks.com}):%
864\index{Philbrick, Geoff}
Fred Drakeb6e50321998-02-04 20:26:31 +0000865
866\begin{verbatim}
867#include <stdio.h>
868#include "Python.h"
869
870static PyObject *
871keywdarg_parrot(self, args, keywds)
872 PyObject *self;
873 PyObject *args;
874 PyObject *keywds;
875{
876 int voltage;
877 char *state = "a stiff";
878 char *action = "voom";
879 char *type = "Norwegian Blue";
880
881 static char *kwlist[] = {"voltage", "state", "action", "type", NULL};
882
883 if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss", kwlist,
884 &voltage, &state, &action, &type))
885 return NULL;
886
887 printf("-- This parrot wouldn't %s if you put %i Volts through it.\n",
888 action, voltage);
889 printf("-- Lovely plumage, the %s -- It's %s!\n", type, state);
890
891 Py_INCREF(Py_None);
892
893 return Py_None;
894}
895
896static PyMethodDef keywdarg_methods[] = {
Fred Drakedc12ec81999-03-09 18:36:55 +0000897 /* The cast of the function is necessary since PyCFunction values
898 * only take two PyObject* parameters, and keywdarg_parrot() takes
899 * three.
900 */
Fred Drakeb6e50321998-02-04 20:26:31 +0000901 {"parrot", (PyCFunction)keywdarg_parrot, METH_VARARGS|METH_KEYWORDS},
902 {NULL, NULL} /* sentinel */
903};
904
905void
906initkeywdarg()
907{
908 /* Create the module and add the functions */
Fred Drakecd05ca91998-03-07 05:32:08 +0000909 Py_InitModule("keywdarg", keywdarg_methods);
Fred Drakeb6e50321998-02-04 20:26:31 +0000910}
911\end{verbatim}
912
913
Fred Drake5e8aa541998-11-16 18:34:07 +0000914\section{The \cfunction{Py_BuildValue()} Function
915 \label{buildValue}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000916
Fred Draked7bb3031998-03-03 17:52:07 +0000917This function is the counterpart to \cfunction{PyArg_ParseTuple()}. It is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000918declared as follows:
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000919
Fred Drake1e11a5c1998-02-13 07:11:32 +0000920\begin{verbatim}
921PyObject *Py_BuildValue(char *format, ...);
922\end{verbatim}
923
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000924It recognizes a set of format units similar to the ones recognized by
Fred Draked7bb3031998-03-03 17:52:07 +0000925\cfunction{PyArg_ParseTuple()}, but the arguments (which are input to the
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000926function, not output) must not be pointers, just values. It returns a
Fred Drakeec9fbe91999-02-15 16:20:25 +0000927new Python object, suitable for returning from a C function called
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000928from Python.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000929
Fred Draked7bb3031998-03-03 17:52:07 +0000930One difference with \cfunction{PyArg_ParseTuple()}: while the latter
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000931requires its first argument to be a tuple (since Python argument lists
Fred Draked7bb3031998-03-03 17:52:07 +0000932are always represented as tuples internally),
933\cfunction{Py_BuildValue()} does not always build a tuple. It builds
934a tuple only if its format string contains two or more format units.
935If the format string is empty, it returns \code{None}; if it contains
936exactly one format unit, it returns whatever object is described by
937that format unit. To force it to return a tuple of size 0 or one,
938parenthesize the format string.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000939
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000940In the following description, the quoted form is the format unit; the
941entry in (round) parentheses is the Python object type that the format
942unit will return; and the entry in [square] brackets is the type of
Fred Drakeec9fbe91999-02-15 16:20:25 +0000943the C value(s) to be passed.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000944
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000945The characters space, tab, colon and comma are ignored in format
946strings (but not within format units such as \samp{s\#}). This can be
947used to make long format strings a tad more readable.
Guido van Rossum7a2dba21993-11-05 14:45:11 +0000948
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000949\begin{description}
950
951\item[\samp{s} (string) {[char *]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000952Convert a null-terminated C string to a Python object. If the C
Fred Drake0fd82681998-01-09 05:39:38 +0000953string pointer is \NULL{}, \code{None} is returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000954
955\item[\samp{s\#} (string) {[char *, int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000956Convert a C string and its length to a Python object. If the C string
Fred Drake0fd82681998-01-09 05:39:38 +0000957pointer is \NULL{}, the length is ignored and \code{None} is
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000958returned.
959
960\item[\samp{z} (string or \code{None}) {[char *]}]
961Same as \samp{s}.
962
963\item[\samp{z\#} (string or \code{None}) {[char *, int]}]
964Same as \samp{s\#}.
965
966\item[\samp{i} (integer) {[int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000967Convert a plain C \ctype{int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000968
969\item[\samp{b} (integer) {[char]}]
970Same as \samp{i}.
971
972\item[\samp{h} (integer) {[short int]}]
973Same as \samp{i}.
974
975\item[\samp{l} (integer) {[long int]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000976Convert a C \ctype{long int} to a Python integer object.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000977
978\item[\samp{c} (string of length 1) {[char]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000979Convert a C \ctype{int} representing a character to a Python string of
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000980length 1.
981
982\item[\samp{d} (float) {[double]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +0000983Convert a C \ctype{double} to a Python floating point number.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000984
985\item[\samp{f} (float) {[float]}]
986Same as \samp{d}.
987
988\item[\samp{O} (object) {[PyObject *]}]
989Pass a Python object untouched (except for its reference count, which
Fred Drake0fd82681998-01-09 05:39:38 +0000990is incremented by one). If the object passed in is a \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000991pointer, it is assumed that this was caused because the call producing
992the argument found an error and set an exception. Therefore,
Fred Draked7bb3031998-03-03 17:52:07 +0000993\cfunction{Py_BuildValue()} will return \NULL{} but won't raise an
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000994exception. If no exception has been raised yet,
Fred Draked7bb3031998-03-03 17:52:07 +0000995\cdata{PyExc_SystemError} is set.
Guido van Rossum5049bcb1995-03-13 16:55:23 +0000996
997\item[\samp{S} (object) {[PyObject *]}]
998Same as \samp{O}.
999
Guido van Rossumd358afe1998-12-23 05:02:08 +00001000\item[\samp{N} (object) {[PyObject *]}]
1001Same as \samp{O}, except it doesn't increment the reference count on
1002the object. Useful when the object is created by a call to an object
1003constructor in the argument list.
1004
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001005\item[\samp{O\&} (object) {[\var{converter}, \var{anything}]}]
1006Convert \var{anything} to a Python object through a \var{converter}
1007function. The function is called with \var{anything} (which should be
Fred Draked7bb3031998-03-03 17:52:07 +00001008compatible with \ctype{void *}) as its argument and should return a
Fred Drake0fd82681998-01-09 05:39:38 +00001009``new'' Python object, or \NULL{} if an error occurred.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001010
1011\item[\samp{(\var{items})} (tuple) {[\var{matching-items}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +00001012Convert a sequence of C values to a Python tuple with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001013of items.
1014
1015\item[\samp{[\var{items}]} (list) {[\var{matching-items}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +00001016Convert a sequence of C values to a Python list with the same number
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001017of items.
1018
1019\item[\samp{\{\var{items}\}} (dictionary) {[\var{matching-items}]}]
Fred Drakeec9fbe91999-02-15 16:20:25 +00001020Convert a sequence of C values to a Python dictionary. Each pair of
1021consecutive C values adds one item to the dictionary, serving as key
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001022and value, respectively.
1023
1024\end{description}
1025
1026If there is an error in the format string, the
Fred Draked7bb3031998-03-03 17:52:07 +00001027\cdata{PyExc_SystemError} exception is raised and \NULL{} returned.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001028
1029Examples (to the left the call, to the right the resulting Python value):
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001030
Fred Drake1e11a5c1998-02-13 07:11:32 +00001031\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001032 Py_BuildValue("") None
1033 Py_BuildValue("i", 123) 123
Guido van Rossumf23e0fe1995-03-18 11:04:29 +00001034 Py_BuildValue("iii", 123, 456, 789) (123, 456, 789)
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001035 Py_BuildValue("s", "hello") 'hello'
1036 Py_BuildValue("ss", "hello", "world") ('hello', 'world')
1037 Py_BuildValue("s#", "hello", 4) 'hell'
1038 Py_BuildValue("()") ()
1039 Py_BuildValue("(i)", 123) (123,)
1040 Py_BuildValue("(ii)", 123, 456) (123, 456)
1041 Py_BuildValue("(i,i)", 123, 456) (123, 456)
1042 Py_BuildValue("[i,i]", 123, 456) [123, 456]
Guido van Rossumf23e0fe1995-03-18 11:04:29 +00001043 Py_BuildValue("{s:i,s:i}",
1044 "abc", 123, "def", 456) {'abc': 123, 'def': 456}
1045 Py_BuildValue("((ii)(ii)) (ii)",
1046 1, 2, 3, 4, 5, 6) (((1, 2), (3, 4)), (5, 6))
Fred Drake1e11a5c1998-02-13 07:11:32 +00001047\end{verbatim}
1048
Fred Drake8e015171999-02-17 18:12:14 +00001049
Fred Drake5e8aa541998-11-16 18:34:07 +00001050\section{Reference Counts
1051 \label{refcounts}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001052
Fred Drakeec9fbe91999-02-15 16:20:25 +00001053In languages like C or \Cpp{}, the programmer is responsible for
1054dynamic allocation and deallocation of memory on the heap. In C,
Fred Draked7bb3031998-03-03 17:52:07 +00001055this is done using the functions \cfunction{malloc()} and
1056\cfunction{free()}. In \Cpp{}, the operators \keyword{new} and
1057\keyword{delete} are used with essentially the same meaning; they are
1058actually implemented using \cfunction{malloc()} and
1059\cfunction{free()}, so we'll restrict the following discussion to the
1060latter.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001061
Fred Draked7bb3031998-03-03 17:52:07 +00001062Every block of memory allocated with \cfunction{malloc()} should
1063eventually be returned to the pool of available memory by exactly one
1064call to \cfunction{free()}. It is important to call
1065\cfunction{free()} at the right time. If a block's address is
1066forgotten but \cfunction{free()} is not called for it, the memory it
1067occupies cannot be reused until the program terminates. This is
1068called a \dfn{memory leak}. On the other hand, if a program calls
1069\cfunction{free()} for a block and then continues to use the block, it
1070creates a conflict with re-use of the block through another
1071\cfunction{malloc()} call. This is called \dfn{using freed memory}.
1072It has the same bad consequences as referencing uninitialized data ---
1073core dumps, wrong results, mysterious crashes.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001074
1075Common causes of memory leaks are unusual paths through the code. For
1076instance, a function may allocate a block of memory, do some
1077calculation, and then free the block again. Now a change in the
1078requirements for the function may add a test to the calculation that
1079detects an error condition and can return prematurely from the
1080function. It's easy to forget to free the allocated memory block when
1081taking this premature exit, especially when it is added later to the
1082code. Such leaks, once introduced, often go undetected for a long
1083time: the error exit is taken only in a small fraction of all calls,
1084and most modern machines have plenty of virtual memory, so the leak
1085only becomes apparent in a long-running process that uses the leaking
1086function frequently. Therefore, it's important to prevent leaks from
1087happening by having a coding convention or strategy that minimizes
1088this kind of errors.
1089
Fred Draked7bb3031998-03-03 17:52:07 +00001090Since Python makes heavy use of \cfunction{malloc()} and
1091\cfunction{free()}, it needs a strategy to avoid memory leaks as well
1092as the use of freed memory. The chosen method is called
1093\dfn{reference counting}. The principle is simple: every object
1094contains a counter, which is incremented when a reference to the
1095object is stored somewhere, and which is decremented when a reference
1096to it is deleted. When the counter reaches zero, the last reference
1097to the object has been deleted and the object is freed.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001098
1099An alternative strategy is called \dfn{automatic garbage collection}.
1100(Sometimes, reference counting is also referred to as a garbage
1101collection strategy, hence my use of ``automatic'' to distinguish the
1102two.) The big advantage of automatic garbage collection is that the
Fred Draked7bb3031998-03-03 17:52:07 +00001103user doesn't need to call \cfunction{free()} explicitly. (Another claimed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001104advantage is an improvement in speed or memory usage --- this is no
Fred Drakeec9fbe91999-02-15 16:20:25 +00001105hard fact however.) The disadvantage is that for C, there is no
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001106truly portable automatic garbage collector, while reference counting
Fred Draked7bb3031998-03-03 17:52:07 +00001107can be implemented portably (as long as the functions \cfunction{malloc()}
Fred Drakeec9fbe91999-02-15 16:20:25 +00001108and \cfunction{free()} are available --- which the C Standard guarantees).
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001109Maybe some day a sufficiently portable automatic garbage collector
Fred Drakeec9fbe91999-02-15 16:20:25 +00001110will be available for C. Until then, we'll have to live with
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001111reference counts.
1112
Fred Drake5e8aa541998-11-16 18:34:07 +00001113\subsection{Reference Counting in Python
1114 \label{refcountsInPython}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001115
1116There are two macros, \code{Py_INCREF(x)} and \code{Py_DECREF(x)},
1117which handle the incrementing and decrementing of the reference count.
Fred Draked7bb3031998-03-03 17:52:07 +00001118\cfunction{Py_DECREF()} also frees the object when the count reaches zero.
1119For flexibility, it doesn't call \cfunction{free()} directly --- rather, it
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001120makes a call through a function pointer in the object's \dfn{type
1121object}. For this purpose (and others), every object also contains a
1122pointer to its type object.
1123
1124The big question now remains: when to use \code{Py_INCREF(x)} and
1125\code{Py_DECREF(x)}? Let's first introduce some terms. Nobody
1126``owns'' an object; however, you can \dfn{own a reference} to an
1127object. An object's reference count is now defined as the number of
1128owned references to it. The owner of a reference is responsible for
Fred Draked7bb3031998-03-03 17:52:07 +00001129calling \cfunction{Py_DECREF()} when the reference is no longer
1130needed. Ownership of a reference can be transferred. There are three
1131ways to dispose of an owned reference: pass it on, store it, or call
1132\cfunction{Py_DECREF()}. Forgetting to dispose of an owned reference
1133creates a memory leak.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001134
1135It is also possible to \dfn{borrow}\footnote{The metaphor of
1136``borrowing'' a reference is not completely correct: the owner still
1137has a copy of the reference.} a reference to an object. The borrower
Fred Draked7bb3031998-03-03 17:52:07 +00001138of a reference should not call \cfunction{Py_DECREF()}. The borrower must
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001139not hold on to the object longer than the owner from which it was
1140borrowed. Using a borrowed reference after the owner has disposed of
1141it risks using freed memory and should be avoided
1142completely.\footnote{Checking that the reference count is at least 1
1143\strong{does not work} --- the reference count itself could be in
1144freed memory and may thus be reused for another object!}
1145
1146The advantage of borrowing over owning a reference is that you don't
1147need to take care of disposing of the reference on all possible paths
1148through the code --- in other words, with a borrowed reference you
1149don't run the risk of leaking when a premature exit is taken. The
1150disadvantage of borrowing over leaking is that there are some subtle
1151situations where in seemingly correct code a borrowed reference can be
1152used after the owner from which it was borrowed has in fact disposed
1153of it.
1154
1155A borrowed reference can be changed into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001156\cfunction{Py_INCREF()}. This does not affect the status of the owner from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001157which the reference was borrowed --- it creates a new owned reference,
1158and gives full owner responsibilities (i.e., the new owner must
1159dispose of the reference properly, as well as the previous owner).
1160
Fred Drake8e015171999-02-17 18:12:14 +00001161
Fred Drake5e8aa541998-11-16 18:34:07 +00001162\subsection{Ownership Rules
1163 \label{ownershipRules}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001164
1165Whenever an object reference is passed into or out of a function, it
1166is part of the function's interface specification whether ownership is
1167transferred with the reference or not.
1168
1169Most functions that return a reference to an object pass on ownership
1170with the reference. In particular, all functions whose function it is
Fred Draked7bb3031998-03-03 17:52:07 +00001171to create a new object, e.g.\ \cfunction{PyInt_FromLong()} and
1172\cfunction{Py_BuildValue()}, pass ownership to the receiver. Even if in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001173fact, in some cases, you don't receive a reference to a brand new
1174object, you still receive ownership of the reference. For instance,
Fred Draked7bb3031998-03-03 17:52:07 +00001175\cfunction{PyInt_FromLong()} maintains a cache of popular values and can
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001176return a reference to a cached item.
1177
1178Many functions that extract objects from other objects also transfer
1179ownership with the reference, for instance
Fred Draked7bb3031998-03-03 17:52:07 +00001180\cfunction{PyObject_GetAttrString()}. The picture is less clear, here,
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001181however, since a few common routines are exceptions:
Fred Draked7bb3031998-03-03 17:52:07 +00001182\cfunction{PyTuple_GetItem()}, \cfunction{PyList_GetItem()},
1183\cfunction{PyDict_GetItem()}, and \cfunction{PyDict_GetItemString()}
1184all return references that you borrow from the tuple, list or
1185dictionary.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001186
Fred Draked7bb3031998-03-03 17:52:07 +00001187The function \cfunction{PyImport_AddModule()} also returns a borrowed
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001188reference, even though it may actually create the object it returns:
1189this is possible because an owned reference to the object is stored in
1190\code{sys.modules}.
1191
1192When you pass an object reference into another function, in general,
1193the function borrows the reference from you --- if it needs to store
Fred Draked7bb3031998-03-03 17:52:07 +00001194it, it will use \cfunction{Py_INCREF()} to become an independent
1195owner. There are exactly two important exceptions to this rule:
1196\cfunction{PyTuple_SetItem()} and \cfunction{PyList_SetItem()}. These
1197functions take over ownership of the item passed to them --- even if
1198they fail! (Note that \cfunction{PyDict_SetItem()} and friends don't
Fred Drakea0dbddf1998-04-02 06:50:02 +00001199take over ownership --- they are ``normal.'')
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001200
Fred Drakeec9fbe91999-02-15 16:20:25 +00001201When a C function is called from Python, it borrows references to its
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001202arguments from the caller. The caller owns a reference to the object,
1203so the borrowed reference's lifetime is guaranteed until the function
1204returns. Only when such a borrowed reference must be stored or passed
1205on, it must be turned into an owned reference by calling
Fred Draked7bb3031998-03-03 17:52:07 +00001206\cfunction{Py_INCREF()}.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001207
Fred Drakeec9fbe91999-02-15 16:20:25 +00001208The object reference returned from a C function that is called from
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001209Python must be an owned reference --- ownership is tranferred from the
1210function to its caller.
1211
Fred Drake8e015171999-02-17 18:12:14 +00001212
Fred Drake5e8aa541998-11-16 18:34:07 +00001213\subsection{Thin Ice
1214 \label{thinIce}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001215
1216There are a few situations where seemingly harmless use of a borrowed
1217reference can lead to problems. These all have to do with implicit
1218invocations of the interpreter, which can cause the owner of a
1219reference to dispose of it.
1220
1221The first and most important case to know about is using
Fred Draked7bb3031998-03-03 17:52:07 +00001222\cfunction{Py_DECREF()} on an unrelated object while borrowing a
1223reference to a list item. For instance:
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001224
Fred Drake1e11a5c1998-02-13 07:11:32 +00001225\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001226bug(PyObject *list) {
1227 PyObject *item = PyList_GetItem(list, 0);
Fred Drakea0dbddf1998-04-02 06:50:02 +00001228
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001229 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1230 PyObject_Print(item, stdout, 0); /* BUG! */
1231}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001232\end{verbatim}
1233
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001234This function first borrows a reference to \code{list[0]}, then
1235replaces \code{list[1]} with the value \code{0}, and finally prints
1236the borrowed reference. Looks harmless, right? But it's not!
1237
Fred Draked7bb3031998-03-03 17:52:07 +00001238Let's follow the control flow into \cfunction{PyList_SetItem()}. The list
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001239owns references to all its items, so when item 1 is replaced, it has
1240to dispose of the original item 1. Now let's suppose the original
1241item 1 was an instance of a user-defined class, and let's further
Fred Draked7bb3031998-03-03 17:52:07 +00001242suppose that the class defined a \method{__del__()} method. If this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001243class instance has a reference count of 1, disposing of it will call
Fred Draked7bb3031998-03-03 17:52:07 +00001244its \method{__del__()} method.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001245
Fred Draked7bb3031998-03-03 17:52:07 +00001246Since it is written in Python, the \method{__del__()} method can execute
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001247arbitrary Python code. Could it perhaps do something to invalidate
Fred Draked7bb3031998-03-03 17:52:07 +00001248the reference to \code{item} in \cfunction{bug()}? You bet! Assuming
1249that the list passed into \cfunction{bug()} is accessible to the
1250\method{__del__()} method, it could execute a statement to the effect of
1251\samp{del list[0]}, and assuming this was the last reference to that
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001252object, it would free the memory associated with it, thereby
1253invalidating \code{item}.
1254
1255The solution, once you know the source of the problem, is easy:
1256temporarily increment the reference count. The correct version of the
1257function reads:
1258
Fred Drake1e11a5c1998-02-13 07:11:32 +00001259\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001260no_bug(PyObject *list) {
1261 PyObject *item = PyList_GetItem(list, 0);
Fred Drakea0dbddf1998-04-02 06:50:02 +00001262
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001263 Py_INCREF(item);
1264 PyList_SetItem(list, 1, PyInt_FromLong(0L));
1265 PyObject_Print(item, stdout, 0);
1266 Py_DECREF(item);
1267}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001268\end{verbatim}
1269
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001270This is a true story. An older version of Python contained variants
Fred Drakeec9fbe91999-02-15 16:20:25 +00001271of this bug and someone spent a considerable amount of time in a C
Fred Draked7bb3031998-03-03 17:52:07 +00001272debugger to figure out why his \method{__del__()} methods would fail...
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001273
1274The second case of problems with a borrowed reference is a variant
1275involving threads. Normally, multiple threads in the Python
1276interpreter can't get in each other's way, because there is a global
1277lock protecting Python's entire object space. However, it is possible
1278to temporarily release this lock using the macro
1279\code{Py_BEGIN_ALLOW_THREADS}, and to re-acquire it using
1280\code{Py_END_ALLOW_THREADS}. This is common around blocking I/O
1281calls, to let other threads use the CPU while waiting for the I/O to
1282complete. Obviously, the following function has the same problem as
1283the previous one:
1284
Fred Drake1e11a5c1998-02-13 07:11:32 +00001285\begin{verbatim}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001286bug(PyObject *list) {
1287 PyObject *item = PyList_GetItem(list, 0);
1288 Py_BEGIN_ALLOW_THREADS
1289 ...some blocking I/O call...
1290 Py_END_ALLOW_THREADS
1291 PyObject_Print(item, stdout, 0); /* BUG! */
1292}
Fred Drake1e11a5c1998-02-13 07:11:32 +00001293\end{verbatim}
1294
Fred Drake8e015171999-02-17 18:12:14 +00001295
Fred Drake5e8aa541998-11-16 18:34:07 +00001296\subsection{NULL Pointers
1297 \label{nullPointers}}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001298
Fred Drakea0dbddf1998-04-02 06:50:02 +00001299In general, functions that take object references as arguments do not
Fred Drake0fd82681998-01-09 05:39:38 +00001300expect you to pass them \NULL{} pointers, and will dump core (or
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001301cause later core dumps) if you do so. Functions that return object
Fred Drake0fd82681998-01-09 05:39:38 +00001302references generally return \NULL{} only to indicate that an
1303exception occurred. The reason for not testing for \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001304arguments is that functions often pass the objects they receive on to
Fred Drake0fd82681998-01-09 05:39:38 +00001305other function --- if each function were to test for \NULL{},
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001306there would be a lot of redundant tests and the code would run slower.
1307
Fred Drakee743fd01998-11-24 17:07:29 +00001308It is better to test for \NULL{} only at the ``source'', i.e.\ when a
1309pointer that may be \NULL{} is received, e.g.\ from
Fred Draked7bb3031998-03-03 17:52:07 +00001310\cfunction{malloc()} or from a function that may raise an exception.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001311
Fred Draked7bb3031998-03-03 17:52:07 +00001312The macros \cfunction{Py_INCREF()} and \cfunction{Py_DECREF()}
Fred Drakea0dbddf1998-04-02 06:50:02 +00001313do not check for \NULL{} pointers --- however, their variants
Fred Draked7bb3031998-03-03 17:52:07 +00001314\cfunction{Py_XINCREF()} and \cfunction{Py_XDECREF()} do.
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001315
1316The macros for checking for a particular object type
Fred Drake0fd82681998-01-09 05:39:38 +00001317(\code{Py\var{type}_Check()}) don't check for \NULL{} pointers ---
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001318again, there is much code that calls several of these in a row to test
1319an object against various different expected types, and this would
Fred Drake0fd82681998-01-09 05:39:38 +00001320generate redundant tests. There are no variants with \NULL{}
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001321checking.
1322
Fred Drakeec9fbe91999-02-15 16:20:25 +00001323The C function calling mechanism guarantees that the argument list
1324passed to C functions (\code{args} in the examples) is never
Fred Drake52e2d511999-04-05 21:26:37 +00001325\NULL{} --- in fact it guarantees that it is always a tuple.\footnote{
1326These guarantees don't hold when you use the ``old'' style
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001327calling convention --- this is still found in much existing code.}
1328
Fred Drake0fd82681998-01-09 05:39:38 +00001329It is a severe error to ever let a \NULL{} pointer ``escape'' to
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001330the Python user.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001331
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001332
Fred Drake5e8aa541998-11-16 18:34:07 +00001333\section{Writing Extensions in \Cpp{}
1334 \label{cplusplus}}
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001335
Guido van Rossum16d6e711994-08-08 12:30:22 +00001336It is possible to write extension modules in \Cpp{}. Some restrictions
Guido van Rossumed39cd01995-10-08 00:17:19 +00001337apply. If the main program (the Python interpreter) is compiled and
Fred Drakeec9fbe91999-02-15 16:20:25 +00001338linked by the C compiler, global or static objects with constructors
Guido van Rossumed39cd01995-10-08 00:17:19 +00001339cannot be used. This is not a problem if the main program is linked
Guido van Rossumafcd5891998-02-05 19:59:39 +00001340by the \Cpp{} compiler. Functions that will be called by the
1341Python interpreter (in particular, module initalization functions)
1342have to be declared using \code{extern "C"}.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001343It is unnecessary to enclose the Python header files in
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001344\code{extern "C" \{...\}} --- they use this form already if the symbol
Fred Drake0fd82681998-01-09 05:39:38 +00001345\samp{__cplusplus} is defined (all recent \Cpp{} compilers define this
Guido van Rossum5049bcb1995-03-13 16:55:23 +00001346symbol).
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001347
Fred Drakee743fd01998-11-24 17:07:29 +00001348
Fred Drakeec9fbe91999-02-15 16:20:25 +00001349\section{Providing a C API for an Extension Module
1350 \label{using-cobjects}}
1351\sectionauthor{Konrad Hinsen}{hinsen@cnrs-orleans.fr}
Fred Drakee743fd01998-11-24 17:07:29 +00001352
Fred Drakeec9fbe91999-02-15 16:20:25 +00001353Many extension modules just provide new functions and types to be
1354used from Python, but sometimes the code in an extension module can
1355be useful for other extension modules. For example, an extension
1356module could implement a type ``collection'' which works like lists
1357without order. Just like the standard Python list type has a C API
1358which permits extension modules to create and manipulate lists, this
1359new collection type should have a set of C functions for direct
1360manipulation from other extension modules.
1361
1362At first sight this seems easy: just write the functions (without
1363declaring them \keyword{static}, of course), provide an appropriate
1364header file, and document the C API. And in fact this would work if
1365all extension modules were always linked statically with the Python
1366interpreter. When modules are used as shared libraries, however, the
1367symbols defined in one module may not be visible to another module.
1368The details of visibility depend on the operating system; some systems
1369use one global namespace for the Python interpreter and all extension
Fred Drake33698f81999-02-16 23:06:32 +00001370modules (e.g.\ Windows), whereas others require an explicit list of
1371imported symbols at module link time (e.g.\ AIX), or offer a choice of
Fred Drakeec9fbe91999-02-15 16:20:25 +00001372different strategies (most Unices). And even if symbols are globally
1373visible, the module whose functions one wishes to call might not have
1374been loaded yet!
1375
1376Portability therefore requires not to make any assumptions about
1377symbol visibility. This means that all symbols in extension modules
1378should be declared \keyword{static}, except for the module's
1379initialization function, in order to avoid name clashes with other
1380extension modules (as discussed in section~\ref{methodTable}). And it
1381means that symbols that \emph{should} be accessible from other
1382extension modules must be exported in a different way.
1383
1384Python provides a special mechanism to pass C-level information (i.e.
1385pointers) from one extension module to another one: CObjects.
1386A CObject is a Python data type which stores a pointer (\ctype{void
1387*}). CObjects can only be created and accessed via their C API, but
1388they can be passed around like any other Python object. In particular,
1389they can be assigned to a name in an extension module's namespace.
1390Other extension modules can then import this module, retrieve the
1391value of this name, and then retrieve the pointer from the CObject.
1392
1393There are many ways in which CObjects can be used to export the C API
1394of an extension module. Each name could get its own CObject, or all C
1395API pointers could be stored in an array whose address is published in
1396a CObject. And the various tasks of storing and retrieving the pointers
1397can be distributed in different ways between the module providing the
1398code and the client modules.
1399
1400The following example demonstrates an approach that puts most of the
1401burden on the writer of the exporting module, which is appropriate
1402for commonly used library modules. It stores all C API pointers
1403(just one in the example!) in an array of \ctype{void} pointers which
1404becomes the value of a CObject. The header file corresponding to
1405the module provides a macro that takes care of importing the module
1406and retrieving its C API pointers; client modules only have to call
1407this macro before accessing the C API.
1408
1409The exporting module is a modification of the \module{spam} module from
1410section~\ref{simpleExample}. The function \function{spam.system()}
1411does not call the C library function \cfunction{system()} directly,
1412but a function \cfunction{PySpam_System()}, which would of course do
1413something more complicated in reality (such as adding ``spam'' to
1414every command). This function \cfunction{PySpam_System()} is also
1415exported to other extension modules.
1416
1417The function \cfunction{PySpam_System()} is a plain C function,
1418declared \keyword{static} like everything else:
1419
1420\begin{verbatim}
1421static int
1422PySpam_System(command)
1423 char *command;
1424{
1425 return system(command);
1426}
1427\end{verbatim}
1428
1429The function \cfunction{spam_system()} is modified in a trivial way:
1430
1431\begin{verbatim}
1432static PyObject *
1433spam_system(self, args)
1434 PyObject *self;
1435 PyObject *args;
1436{
1437 char *command;
1438 int sts;
1439
1440 if (!PyArg_ParseTuple(args, "s", &command))
1441 return NULL;
1442 sts = PySpam_System(command);
1443 return Py_BuildValue("i", sts);
1444}
1445\end{verbatim}
1446
1447In the beginning of the module, right after the line
Fred Drake8e015171999-02-17 18:12:14 +00001448
Fred Drakeec9fbe91999-02-15 16:20:25 +00001449\begin{verbatim}
1450#include "Python.h"
1451\end{verbatim}
Fred Drake8e015171999-02-17 18:12:14 +00001452
Fred Drakeec9fbe91999-02-15 16:20:25 +00001453two more lines must be added:
Fred Drake8e015171999-02-17 18:12:14 +00001454
Fred Drakeec9fbe91999-02-15 16:20:25 +00001455\begin{verbatim}
1456#define SPAM_MODULE
1457#include "spammodule.h"
1458\end{verbatim}
1459
1460The \code{\#define} is used to tell the header file that it is being
1461included in the exporting module, not a client module. Finally,
1462the module's initialization function must take care of initializing
1463the C API pointer array:
Fred Drake8e015171999-02-17 18:12:14 +00001464
Fred Drakeec9fbe91999-02-15 16:20:25 +00001465\begin{verbatim}
1466void
1467initspam()
1468{
1469 PyObject *m, *d;
1470 static void *PySpam_API[PySpam_API_pointers];
1471 PyObject *c_api_object;
1472 m = Py_InitModule("spam", SpamMethods);
1473
1474 /* Initialize the C API pointer array */
1475 PySpam_API[PySpam_System_NUM] = (void *)PySpam_System;
1476
1477 /* Create a CObject containing the API pointer array's address */
1478 c_api_object = PyCObject_FromVoidPtr((void *)PySpam_API, NULL);
1479
1480 /* Create a name for this object in the module's namespace */
1481 d = PyModule_GetDict(m);
1482 PyDict_SetItemString(d, "_C_API", c_api_object);
1483}
1484\end{verbatim}
1485
1486Note that \code{PySpam_API} is declared \code{static}; otherwise
1487the pointer array would disappear when \code{initspam} terminates!
1488
1489The bulk of the work is in the header file \file{spammodule.h},
1490which looks like this:
1491
1492\begin{verbatim}
1493#ifndef Py_SPAMMODULE_H
1494#define Py_SPAMMODULE_H
1495#ifdef __cplusplus
1496extern "C" {
1497#endif
1498
1499/* Header file for spammodule */
1500
1501/* C API functions */
1502#define PySpam_System_NUM 0
1503#define PySpam_System_RETURN int
1504#define PySpam_System_PROTO Py_PROTO((char *command))
1505
1506/* Total number of C API pointers */
1507#define PySpam_API_pointers 1
1508
1509
1510#ifdef SPAM_MODULE
1511/* This section is used when compiling spammodule.c */
1512
1513static PySpam_System_RETURN PySpam_System PySpam_System_PROTO;
1514
1515#else
1516/* This section is used in modules that use spammodule's API */
1517
1518static void **PySpam_API;
1519
1520#define PySpam_System \
1521 (*(PySpam_System_RETURN (*)PySpam_System_PROTO) PySpam_API[PySpam_System_NUM])
1522
1523#define import_spam() \
1524{ \
1525 PyObject *module = PyImport_ImportModule("spam"); \
1526 if (module != NULL) { \
1527 PyObject *module_dict = PyModule_GetDict(module); \
1528 PyObject *c_api_object = PyDict_GetItemString(module_dict, "_C_API"); \
1529 if (PyCObject_Check(c_api_object)) { \
1530 PySpam_API = (void **)PyCObject_AsVoidPtr(c_api_object); \
1531 } \
1532 } \
1533}
1534
1535#endif
1536
1537#ifdef __cplusplus
1538}
1539#endif
1540
1541#endif /* !defined(Py_SPAMMODULE_H */
1542\end{verbatim}
1543
1544All that a client module must do in order to have access to the
1545function \cfunction{PySpam_System()} is to call the function (or
1546rather macro) \cfunction{import_spam()} in its initialization
1547function:
1548
1549\begin{verbatim}
1550void
1551initclient()
1552{
1553 PyObject *m;
1554
1555 Py_InitModule("client", ClientMethods);
1556 import_spam();
1557}
1558\end{verbatim}
1559
1560The main disadvantage of this approach is that the file
1561\file{spammodule.h} is rather complicated. However, the
1562basic structure is the same for each function that is
1563exported, so it has to be learned only once.
1564
1565Finally it should be mentioned that CObjects offer additional
1566functionality, which is especially useful for memory allocation and
1567deallocation of the pointer stored in a CObject. The details
1568are described in the \emph{Python/C API Reference Manual} in the
1569section ``CObjects'' and in the implementation of CObjects (files
1570\file{Include/cobject.h} and \file{Objects/cobject.c} in the
1571Python source code distribution).
1572
1573
1574\chapter{Building C and \Cpp{} Extensions on \UNIX{}
Fred Drake3de61bc1999-02-16 21:14:16 +00001575 \label{building-on-unix}}
Fred Drakee743fd01998-11-24 17:07:29 +00001576
Fred Drake33698f81999-02-16 23:06:32 +00001577\sectionauthor{Jim Fulton}{jim@Digicool.com}
Fred Drakee743fd01998-11-24 17:07:29 +00001578
1579
1580%The make file make file, building C extensions on Unix
1581
1582
1583Starting in Python 1.4, Python provides a special make file for
1584building make files for building dynamically-linked extensions and
1585custom interpreters. The make file make file builds a make file
1586that reflects various system variables determined by configure when
1587the Python interpreter was built, so people building module's don't
1588have to resupply these settings. This vastly simplifies the process
1589of building extensions and custom interpreters on Unix systems.
1590
1591The make file make file is distributed as the file
1592\file{Misc/Makefile.pre.in} in the Python source distribution. The
1593first step in building extensions or custom interpreters is to copy
1594this make file to a development directory containing extension module
1595source.
1596
1597The make file make file, \file{Makefile.pre.in} uses metadata
1598provided in a file named \file{Setup}. The format of the \file{Setup}
1599file is the same as the \file{Setup} (or \file{Setup.in}) file
1600provided in the \file{Modules/} directory of the Python source
Fred Drake33698f81999-02-16 23:06:32 +00001601distribution. The \file{Setup} file contains variable definitions:
Fred Drakee743fd01998-11-24 17:07:29 +00001602
1603\begin{verbatim}
1604EC=/projects/ExtensionClass
1605\end{verbatim}
1606
1607and module description lines. It can also contain blank lines and
1608comment lines that start with \character{\#}.
1609
1610A module description line includes a module name, source files,
1611options, variable references, and other input files, such
1612as libraries or object files. Consider a simple example::
1613
1614\begin{verbatim}
1615ExtensionClass ExtensionClass.c
1616\end{verbatim}
1617
1618This is the simplest form of a module definition line. It defines a
Fred Drake8e015171999-02-17 18:12:14 +00001619module, \module{ExtensionClass}, which has a single source file,
Fred Drakee743fd01998-11-24 17:07:29 +00001620\file{ExtensionClass.c}.
1621
Fred Drake8e015171999-02-17 18:12:14 +00001622This slightly more complex example uses an \strong{-I} option to
1623specify an include directory:
Fred Drakee743fd01998-11-24 17:07:29 +00001624
1625\begin{verbatim}
Fred Drake8e015171999-02-17 18:12:14 +00001626EC=/projects/ExtensionClass
Fred Drakee743fd01998-11-24 17:07:29 +00001627cPersistence 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
1630This example also illustrates the format for variable references.
1631
1632For systems that support dynamic linking, the \file{Setup} file should
1633begin:
1634
1635\begin{verbatim}
1636*shared*
1637\end{verbatim}
1638
1639to indicate that the modules defined in \file{Setup} are to be built
Fred Drakedc12ec81999-03-09 18:36:55 +00001640as dynamically linked modules. A line containing only \samp{*static*}
1641can be used to indicate the subsequently listed modules should be
1642statically linked.
Fred Drakee743fd01998-11-24 17:07:29 +00001643
1644Here is a complete \file{Setup} file for building a
1645\module{cPersistent} module:
1646
1647\begin{verbatim}
1648# Set-up file to build the cPersistence module.
1649# Note that the text should begin in the first column.
1650*shared*
1651
1652# We need the path to the directory containing the ExtensionClass
1653# include file.
1654EC=/projects/ExtensionClass
1655cPersistence cPersistence.c -I$(EC)
Fred Drake8e015171999-02-17 18:12:14 +00001656\end{verbatim} % $ <-- bow to font lock
Fred Drakee743fd01998-11-24 17:07:29 +00001657
1658After the \file{Setup} file has been created, \file{Makefile.pre.in}
1659is run with the \samp{boot} target to create a make file:
1660
1661\begin{verbatim}
1662make -f Makefile.pre.in boot
1663\end{verbatim}
1664
1665This creates the file, Makefile. To build the extensions, simply
1666run the created make file:
1667
1668\begin{verbatim}
1669make
1670\end{verbatim}
1671
1672It's not necessary to re-run \file{Makefile.pre.in} if the
1673\file{Setup} file is changed. The make file automatically rebuilds
1674itself if the \file{Setup} file changes.
1675
Fred Drake8e015171999-02-17 18:12:14 +00001676
1677\section{Building Custom Interpreters \label{custom-interps}}
Fred Drakee743fd01998-11-24 17:07:29 +00001678
1679The make file built by \file{Makefile.pre.in} can be run with the
1680\samp{static} target to build an interpreter:
1681
1682\begin{verbatim}
1683make static
1684\end{verbatim}
1685
1686Any modules defined in the Setup file before the \samp{*shared*} line
1687will be statically linked into the interpreter. Typically, a
1688\samp{*shared*} line is omitted from the Setup file when a custom
1689interpreter is desired.
1690
Fred Drake8e015171999-02-17 18:12:14 +00001691
1692\section{Module Definition Options \label{module-defn-options}}
Fred Drakee743fd01998-11-24 17:07:29 +00001693
1694Several compiler options are supported:
1695
1696\begin{tableii}{l|l}{}{Option}{Meaning}
1697 \lineii{-C}{Tell the C pre-processor not to discard comments}
1698 \lineii{-D\var{name}=\var{value}}{Define a macro}
1699 \lineii{-I\var{dir}}{Specify an include directory, \var{dir}}
Fred Drake33698f81999-02-16 23:06:32 +00001700 \lineii{-L\var{dir}}{Specify a link-time library directory, \var{dir}}
1701 \lineii{-R\var{dir}}{Specify a run-time library directory, \var{dir}}
Fred Drakee743fd01998-11-24 17:07:29 +00001702 \lineii{-l\var{lib}}{Link a library, \var{lib}}
1703 \lineii{-U\var{name}}{Undefine a macro}
1704\end{tableii}
1705
1706Other compiler options can be included (snuck in) by putting them
Fred Drakedc12ec81999-03-09 18:36:55 +00001707in variables.
Fred Drakee743fd01998-11-24 17:07:29 +00001708
1709Source files can include files with \file{.c}, \file{.C}, \file{.cc},
Fred Drake8e015171999-02-17 18:12:14 +00001710\file{.cpp}, \file{.cxx}, and \file{.c++} extensions.
Fred Drakee743fd01998-11-24 17:07:29 +00001711
Fred Drake8e015171999-02-17 18:12:14 +00001712Other input files include files with \file{.a}, \file{.o}, \file{.sl},
1713and \file{.so} extensions.
Fred Drakee743fd01998-11-24 17:07:29 +00001714
1715
Fred Drake8e015171999-02-17 18:12:14 +00001716\section{Example \label{module-defn-example}}
Fred Drakee743fd01998-11-24 17:07:29 +00001717
1718Here is a more complicated example from \file{Modules/Setup.in}:
1719
1720\begin{verbatim}
1721GMP=/ufs/guido/src/gmp
1722mpz mpzmodule.c -I$(GMP) $(GMP)/libgmp.a
1723\end{verbatim}
1724
1725which could also be written as:
1726
1727\begin{verbatim}
1728mpz mpzmodule.c -I$(GMP) -L$(GMP) -lgmp
1729\end{verbatim}
1730
1731
1732\section{Distributing your extension modules
1733 \label{distributing}}
1734
1735When distributing your extension modules in source form, make sure to
1736include a \file{Setup} file. The \file{Setup} file should be named
1737\file{Setup.in} in the distribution. The make file make file,
1738\file{Makefile.pre.in}, will copy \file{Setup.in} to \file{Setup}.
1739Distributing a \file{Setup.in} file makes it easy for people to
1740customize the \file{Setup} file while keeping the original in
1741\file{Setup.in}.
1742
1743It is a good idea to include a copy of \file{Makefile.pre.in} for
1744people who do not have a source distribution of Python.
1745
1746Do not distribute a make file. People building your modules
Fred Drake8e015171999-02-17 18:12:14 +00001747should use \file{Makefile.pre.in} to build their own make file. A
1748\file{README} file included in the package should provide simple
1749instructions to perform the build.
Fred Drakee743fd01998-11-24 17:07:29 +00001750
Fred Drake33698f81999-02-16 23:06:32 +00001751Work is being done to make building and installing Python extensions
1752easier for all platforms; this work in likely to supplant the current
1753approach at some point in the future. For more information or to
1754participate in the effort, refer to
1755\url{http://www.python.org/sigs/distutils-sig/} on the Python Web
1756site.
1757
Fred Drakee743fd01998-11-24 17:07:29 +00001758
Fred Drake3de61bc1999-02-16 21:14:16 +00001759\chapter{Building C and \Cpp{} Extensions on Windows
Fred Drake33698f81999-02-16 23:06:32 +00001760 \label{building-on-windows}}
Fred Drake3de61bc1999-02-16 21:14:16 +00001761
1762
1763This chapter briefly explains how to create a Windows extension module
Fred Drake33698f81999-02-16 23:06:32 +00001764for Python using Microsoft Visual \Cpp{}, and follows with more
1765detailed background information on how it works. The explanatory
1766material is useful for both the Windows programmer learning to build
1767Python extensions and the \UNIX{} programming interested in producing
1768software which can be successfully built on both \UNIX{} and Windows.
1769
Fred Drake8e015171999-02-17 18:12:14 +00001770
Fred Drake33698f81999-02-16 23:06:32 +00001771\section{A Cookbook Approach \label{win-cookbook}}
1772
1773\sectionauthor{Neil Schemenauer}{neil_schemenauer@transcanada.com}
1774
1775This section provides a recipe for building a Python extension on
1776Windows.
Fred Drake3de61bc1999-02-16 21:14:16 +00001777
1778Grab the binary installer from \url{http://www.python.org/} and
1779install Python. The binary installer has all of the required header
1780files except for \file{config.h}.
1781
1782Get the source distribution and extract it into a convenient location.
1783Copy the \file{config.h} from the \file{PC/} directory into the
1784\file{include/} directory created by the installer.
1785
1786Create a \file{Setup} file for your extension module, as described in
1787Chapter \ref{building-on-unix}.
1788
1789Get David Ascher's \file{compile.py} script from
Fred Drakec0fcbc11999-04-29 02:30:04 +00001790\url{http://starship.python.net/crew/da/compile/}. Run the script to
Fred Drake3de61bc1999-02-16 21:14:16 +00001791create Microsoft Visual \Cpp{} project files.
1792
1793Open the DSW file in V\Cpp{} and select \strong{Build}.
1794
1795If your module creates a new type, you may have trouble with this line:
1796
1797\begin{verbatim}
1798 PyObject_HEAD_INIT(&PyType_Type)
1799\end{verbatim}
1800
1801Change it to:
1802
1803\begin{verbatim}
1804 PyObject_HEAD_INIT(NULL)
1805\end{verbatim}
1806
1807and add the following to the module initialization function:
1808
1809\begin{verbatim}
1810 MyObject_Type.ob_type = &PyType_Type;
1811\end{verbatim}
1812
1813Refer to section 3 of the Python FAQ
1814(\url{http://www.python.org/doc/FAQ.html}) for details on why you must
1815do this.
1816
1817
Fred Drake33698f81999-02-16 23:06:32 +00001818\section{Differences Between \UNIX{} and Windows
1819 \label{dynamic-linking}}
1820\sectionauthor{Chris Phoenix}{cphoenix@best.com}
1821
1822
1823\UNIX{} and Windows use completely different paradigms for run-time
1824loading of code. Before you try to build a module that can be
1825dynamically loaded, be aware of how your system works.
1826
1827In \UNIX{}, a shared object (.so) file contains code to be used by the
1828program, and also the names of functions and data that it expects to
1829find in the program. When the file is joined to the program, all
1830references to those functions and data in the file's code are changed
1831to point to the actual locations in the program where the functions
1832and data are placed in memory. This is basically a link operation.
1833
1834In Windows, a dynamic-link library (\file{.dll}) file has no dangling
1835references. Instead, an access to functions or data goes through a
1836lookup table. So the DLL code does not have to be fixed up at runtime
1837to refer to the program's memory; instead, the code already uses the
1838DLL's lookup table, and the lookup table is modified at runtime to
1839point to the functions and data.
1840
1841In \UNIX{}, there is only one type of library file (\file{.a}) which
1842contains code from several object files (\file{.o}). During the link
1843step to create a shared object file (\file{.so}), the linker may find
1844that it doesn't know where an identifier is defined. The linker will
1845look for it in the object files in the libraries; if it finds it, it
1846will include all the code from that object file.
1847
1848In Windows, there are two types of library, a static library and an
1849import library (both called \file{.lib}). A static library is like a
1850\UNIX{} \file{.a} file; it contains code to be included as necessary.
1851An import library is basically used only to reassure the linker that a
1852certain identifier is legal, and will be present in the program when
1853the DLL is loaded. So the linker uses the information from the
1854import library to build the lookup table for using identifiers that
1855are not included in the DLL. When an application or a DLL is linked,
1856an import library may be generated, which will need to be used for all
1857future DLLs that depend on the symbols in the application or DLL.
1858
1859Suppose you are building two dynamic-load modules, B and C, which should
1860share another block of code A. On \UNIX{}, you would \emph{not} pass
1861\file{A.a} to the linker for \file{B.so} and \file{C.so}; that would
1862cause it to be included twice, so that B and C would each have their
1863own copy. In Windows, building \file{A.dll} will also build
1864\file{A.lib}. You \emph{do} pass \file{A.lib} to the linker for B and
1865C. \file{A.lib} does not contain code; it just contains information
1866which will be used at runtime to access A's code.
1867
1868In Windows, using an import library is sort of like using \samp{import
1869spam}; it gives you access to spam's names, but does not create a
1870separate copy. On \UNIX{}, linking with a library is more like
1871\samp{from spam import *}; it does create a separate copy.
1872
1873
1874\section{Using DLLs in Practice \label{win-dlls}}
1875\sectionauthor{Chris Phoenix}{cphoenix@best.com}
1876
1877Windows Python is built in Microsoft Visual \Cpp{}; using other
1878compilers may or may not work (though Borland seems to). The rest of
1879this section is MSV\Cpp{} specific.
1880
1881When creating DLLs in Windows, you must pass \file{python15.lib} to
1882the linker. To build two DLLs, spam and ni (which uses C functions
1883found in spam), you could use these commands:
1884
1885\begin{verbatim}
1886cl /LD /I/python/include spam.c ../libs/python15.lib
1887cl /LD /I/python/include ni.c spam.lib ../libs/python15.lib
1888\end{verbatim}
1889
1890The first command created three files: \file{spam.obj},
1891\file{spam.dll} and \file{spam.lib}. \file{Spam.dll} does not contain
1892any Python functions (such as \cfunction{PyArg_ParseTuple()}), but it
1893does know how to find the Python code thanks to \file{python15.lib}.
1894
1895The second command created \file{ni.dll} (and \file{.obj} and
1896\file{.lib}), which knows how to find the necessary functions from
1897spam, and also from the Python executable.
1898
1899Not every identifier is exported to the lookup table. If you want any
1900other modules (including Python) to be able to see your identifiers,
1901you have to say \samp{_declspec(dllexport)}, as in \samp{void
1902_declspec(dllexport) initspam(void)} or \samp{PyObject
1903_declspec(dllexport) *NiGetSpamData(void)}.
1904
1905Developer Studio will throw in a lot of import libraries that you do
1906not really need, adding about 100K to your executable. To get rid of
1907them, use the Project Settings dialog, Link tab, to specify
1908\emph{ignore default libraries}. Add the correct
1909\file{msvcrt\var{xx}.lib} to the list of libraries.
1910
1911
Fred Drake5e8aa541998-11-16 18:34:07 +00001912\chapter{Embedding Python in Another Application
1913 \label{embedding}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001914
1915Embedding Python is similar to extending it, but not quite. The
1916difference is that when you extend Python, the main program of the
Guido van Rossum16d6e711994-08-08 12:30:22 +00001917application is still the Python interpreter, while if you embed
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001918Python, the main program may have nothing to do with Python ---
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001919instead, some parts of the application occasionally call the Python
1920interpreter to run some Python code.
1921
1922So if you are embedding Python, you are providing your own main
1923program. One of the things this main program has to do is initialize
1924the Python interpreter. At the very least, you have to call the
Fred Draked7bb3031998-03-03 17:52:07 +00001925function \cfunction{Py_Initialize()}. There are optional calls to
1926pass command line arguments to Python. Then later you can call the
1927interpreter from any part of the application.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001928
1929There are several different ways to call the interpreter: you can pass
Fred Draked7bb3031998-03-03 17:52:07 +00001930a string containing Python statements to
1931\cfunction{PyRun_SimpleString()}, or you can pass a stdio file pointer
1932and a file name (for identification in error messages only) to
1933\cfunction{PyRun_SimpleFile()}. You can also call the lower-level
1934operations described in the previous chapters to construct and use
1935Python objects.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001936
1937A simple demo of embedding Python can be found in the directory
Fred Drake295fb431999-02-16 17:29:42 +00001938\file{Demo/embed/} of the source distribution.
Guido van Rossumdb65a6c1993-11-05 17:11:16 +00001939
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001940
Fred Drake5e8aa541998-11-16 18:34:07 +00001941\section{Embedding Python in \Cpp{}
1942 \label{embeddingInCplusplus}}
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001943
Guido van Rossum16d6e711994-08-08 12:30:22 +00001944It is also possible to embed Python in a \Cpp{} program; precisely how this
1945is done will depend on the details of the \Cpp{} system used; in general you
1946will need to write the main program in \Cpp{}, and use the \Cpp{} compiler
1947to compile and link your program. There is no need to recompile Python
1948itself using \Cpp{}.
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001949
Guido van Rossum7a2dba21993-11-05 14:45:11 +00001950\end{document}