Removed reference to the out-of-date (and not very useful)

Objects/xxobject.c example.

Updated the discussion of type checking to refer to
PyObject_TypeCheck.
This commit is contained in:
Jim Fulton 2003-05-16 13:32:59 +00:00
parent ac826aac28
commit aea763bde7
1 changed files with 9 additions and 23 deletions

View File

@ -1334,17 +1334,10 @@ Collection}{../api/supporting-cycle-detection.html} in the
\subsection{More Suggestions}
Remember that you can omit most of these functions, in which case you
provide \code{0} as a value.
In the \file{Objects} directory of the Python source distribution,
there is a file \file{xxobject.c}, which is intended to be used as a
template for the implementation of new types. One useful strategy
for implementing a new type is to copy and rename this file, then
read the instructions at the top of it.
There are type definitions for each of the functions you must
provide. They are in \file{object.h} in the Python include
directory that comes with the source distribution of Python.
provide \code{0} as a value. There are type definitions for each of
the functions you must provide. They are in \file{object.h} in the
Python include directory that comes with the source distribution of
Python.
In order to learn how to implement any specific method for your new
datatype, do the following: Download and unpack the Python source
@ -1353,20 +1346,13 @@ C source files for \code{tp_} plus the function you want (for
example, \code{tp_print} or \code{tp_compare}). You will find
examples of the function you want to implement.
When you need to verify that the type of an object is indeed the
object you are implementing and if you use xxobject.c as an starting
template for your implementation, then there is a macro defined for
this purpose. The macro definition will look something like this:
When you need to verify that an object is an instance of the type
you are implementing, use the \cfunction{PyObject_TypeCheck} function.
A sample of its use might be something like the following:
\begin{verbatim}
#define is_newdatatypeobject(v) ((v)->ob_type == &Newdatatypetype)
\end{verbatim}
And, a sample of its use might be something like the following:
\begin{verbatim}
if (!is_newdatatypeobject(objp1) {
PyErr_SetString(PyExc_TypeError, "arg #1 not a newdatatype");
if (! PyObject_TypeCheck(some_object, &MyType) {
PyErr_SetString(PyExc_TypeError, "arg #1 not a mything");
return NULL;
}
\end{verbatim}