From aea763bde758a127acfa1a2726e5c3966d238e27 Mon Sep 17 00:00:00 2001 From: Jim Fulton Date: Fri, 16 May 2003 13:32:59 +0000 Subject: 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. --- Doc/ext/newtypes.tex | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/Doc/ext/newtypes.tex b/Doc/ext/newtypes.tex index 6b8a25d..3d611c1 100644 --- a/Doc/ext/newtypes.tex +++ b/Doc/ext/newtypes.tex @@ -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: - -\begin{verbatim} -#define is_newdatatypeobject(v) ((v)->ob_type == &Newdatatypetype) -\end{verbatim} - -And, a sample of its use might be something like the following: +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} - 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} -- cgit v0.12