I've moved the remains of PyInt_ to the longobject.h header file and removed the inclusing of intobject.h from Python.h. Now the intobject.h exists only to provide some aliases for porters from Python 2.x.

This commit is contained in:
Christian Heimes 2007-12-02 16:52:32 +00:00
parent 2137b6aa99
commit f78b1c6573
6 changed files with 34 additions and 47 deletions

View File

@ -387,6 +387,8 @@ changes to your code:
* Everything is all in the details!
* Developers can include intobject.h after Python.h for some PyInt_ aliases.
.. ======================================================================

View File

@ -66,7 +66,6 @@
#include "bytesobject.h"
#include "unicodeobject.h"
#include "intobject.h"
#include "longobject.h"
#include "longintrepr.h"
#include "boolobject.h"

View File

@ -1,18 +1,9 @@
/* Integer object interface
/* Integer object interface */
/*
PyIntObject represents a (long) integer. This is an immutable object;
an integer cannot change its value after creation.
There are functions to create new integer objects, to test an object
for integer-ness, and to get the integer value. The latter functions
returns -1 and sets errno to EBADF if the object is not an PyIntObject.
None of the functions should be applied to nil objects.
The type PyIntObject is (unfortunately) exposed here so we can declare
_Py_TrueStruct and _Py_ZeroStruct in boolobject.h; don't use this.
*/
This header files exists to make porting code to Python 3.0 easier. It
defines aliases from PyInt_* to PyLong_*. Only PyInt_GetMax() and
PyInt_CheckExact() remain in longobject.h.
*/
#ifndef Py_INTOBJECT_H
#define Py_INTOBJECT_H
@ -20,38 +11,19 @@ _Py_TrueStruct and _Py_ZeroStruct in boolobject.h; don't use this.
extern "C" {
#endif
/*
typedef struct {
PyObject_HEAD
long ob_ival;
} PyIntObject;
#warning "DeprecationWarning: intobject.h is going to be removed in 3.1"
PyAPI_DATA(PyTypeObject) PyInt_Type;
*/
#define PyInt_CheckExact(op) (PyLong_CheckExact(op) && _PyLong_FitsInLong(op))
#if 0
# define PyInt_Check(op) PyLong_Check(op)
# define PyInt_FromString PyLong_FromString
# define PyInt_FromUnicode PyLong_FromUnicode
# define PyInt_FromLong PyLong_FromLong
# define PyInt_FromSize_t PyLong_FromSize_t
# define PyInt_FromSsize_t PyLong_FromSsize_t
# define PyInt_AsLong PyLong_AsLong
# define PyInt_AsSsize_t PyLong_AsSsize_t
# define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
# define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
# define PyInt_AS_LONG PyLong_AS_LONG
#endif
PyAPI_FUNC(long) PyInt_GetMax(void);
/* These aren't really part of the Int object, but they're handy; the protos
* are necessary for systems that need the magic of PyAPI_FUNC.
*/
PyAPI_FUNC(unsigned long) PyOS_strtoul(char *, char **, int);
PyAPI_FUNC(long) PyOS_strtol(char *, char **, int);
#define PyInt_Check(op) PyLong_Check(op)
#define PyInt_FromString PyLong_FromString
#define PyInt_FromUnicode PyLong_FromUnicode
#define PyInt_FromLong PyLong_FromLong
#define PyInt_FromSize_t PyLong_FromSize_t
#define PyInt_FromSsize_t PyLong_FromSsize_t
#define PyInt_AsLong PyLong_AsLong
#define PyInt_AsSsize_t PyLong_AsSsize_t
#define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
#define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
#define PyInt_AS_LONG PyLong_AS_LONG
#ifdef __cplusplus
}

View File

@ -14,6 +14,7 @@ PyAPI_DATA(PyTypeObject) PyLong_Type;
#define PyLong_Check(op) \
PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_LONG_SUBCLASS)
#define PyLong_CheckExact(op) (Py_Type(op) == &PyLong_Type)
#define PyInt_CheckExact(op) (PyLong_CheckExact(op) && _PyLong_FitsInLong(op))
PyAPI_FUNC(PyObject *) PyLong_FromLong(long);
PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLong(unsigned long);
@ -30,6 +31,8 @@ PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLongMask(PyObject *);
cleanup to keep the extra information. [CH] */
#define PyLong_AS_LONG(op) PyLong_AsLong(op)
PyAPI_FUNC(long) PyInt_GetMax(void);
/* Used by socketmodule.c */
#if SIZEOF_SOCKET_T <= SIZEOF_LONG
#define PyLong_FromSocket_t(fd) PyLong_FromLong((SOCKET_T)(fd))
@ -127,6 +130,12 @@ PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,
appending a base prefix of 0[box] if base is 2, 8 or 16. */
PyAPI_FUNC(PyObject *) _PyLong_Format(PyObject *aa, int base);
/* These aren't really part of the long object, but they're handy. The
functions are in Python/mystrtoul.c.
*/
PyAPI_FUNC(unsigned long) PyOS_strtoul(char *, char **, int);
PyAPI_FUNC(long) PyOS_strtol(char *, char **, int);
#ifdef __cplusplus
}
#endif

View File

@ -546,6 +546,7 @@ PYTHON_HEADERS= \
Include/asdl.h \
Include/abstract.h \
Include/boolobject.h \
Include/bytes_methods.h \
Include/bytesobject.h \
Include/ceval.h \
Include/classobject.h \
@ -563,10 +564,10 @@ PYTHON_HEADERS= \
Include/formatter_unicode.h \
Include/funcobject.h \
Include/import.h \
Include/intobject.h \
Include/intrcheck.h \
Include/iterobject.h \
Include/listobject.h \
Include/longintrepr.h \
Include/longobject.h \
Include/memoryobject.h \
Include/methodobject.h \

View File

@ -50,6 +50,10 @@ Core and Builtins
removed and im_func + im_self are renamed to __func__ and __self__. The
factory PyMethod_New takes only func and instance as argument.
- intobject.h is no longer included by Python.h. The remains were moved
to longobject.h. It still exists to define several aliases from PyInt_
to PyLong_ functions.
Extension Modules
-----------------