]> granicus.if.org Git - python/commitdiff
I've moved the remains of PyInt_ to the longobject.h header file and removed the...
authorChristian Heimes <christian@cheimes.de>
Sun, 2 Dec 2007 16:52:32 +0000 (16:52 +0000)
committerChristian Heimes <christian@cheimes.de>
Sun, 2 Dec 2007 16:52:32 +0000 (16:52 +0000)
Doc/whatsnew/3.0.rst
Include/Python.h
Include/intobject.h
Include/longobject.h
Makefile.pre.in
Misc/NEWS

index 8d6babd99e54dc044c717faa01e6036849a68843..aa7913cce44396603bf69daf0d32a4edfb77d2e8 100644 (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.
+
 .. ======================================================================
 
 
index d2bda8c5341cc78363c240f21e836bc84dbd850d..fef57b4d5e6cf49e25419544fe1ec98ffff840bb 100644 (file)
@@ -66,7 +66,6 @@
 
 #include "bytesobject.h"
 #include "unicodeobject.h"
-#include "intobject.h"
 #include "longobject.h"
 #include "longintrepr.h"
 #include "boolobject.h"
index 09a522bca68a79ada6499ee864d648a8b8e1112c..8385d34d9d451d07255bea338b0475183bf3b3d6 100644 (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;
-
-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);
+#warning "DeprecationWarning: intobject.h is going to be removed in 3.1"
+
+#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
 }
index 688b4e4200c7870ee3098cd6a556d61cc7cf1903..5740f98deba09611b0c430825980bc814f7686e6 100644 (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
index a5afe335a0ec42f0ab8fc3a636de1b775edee114..3cf41a655b8e5edd8c9b81daa48f90a51b548e86 100644 (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 \
index 0fb28ad84c76cd36557712a0b8bb07540b2cd004..465026a470bab3d0d211911e95934c72a66050f5 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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
 -----------------