Kaydet (Commit) f78b1c65 authored tarafından Christian Heimes's avatar Christian Heimes

I've moved the remains of PyInt_ to the longobject.h header file and removed the…

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.
üst 2137b6aa
...@@ -387,6 +387,8 @@ changes to your code: ...@@ -387,6 +387,8 @@ changes to your code:
* Everything is all in the details! * Everything is all in the details!
* Developers can include intobject.h after Python.h for some PyInt_ aliases.
.. ====================================================================== .. ======================================================================
......
...@@ -66,7 +66,6 @@ ...@@ -66,7 +66,6 @@
#include "bytesobject.h" #include "bytesobject.h"
#include "unicodeobject.h" #include "unicodeobject.h"
#include "intobject.h"
#include "longobject.h" #include "longobject.h"
#include "longintrepr.h" #include "longintrepr.h"
#include "boolobject.h" #include "boolobject.h"
......
/* Integer object interface
/* Integer object interface */ 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.
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.
*/
#ifndef Py_INTOBJECT_H #ifndef Py_INTOBJECT_H
#define Py_INTOBJECT_H #define Py_INTOBJECT_H
...@@ -20,38 +11,19 @@ _Py_TrueStruct and _Py_ZeroStruct in boolobject.h; don't use this. ...@@ -20,38 +11,19 @@ _Py_TrueStruct and _Py_ZeroStruct in boolobject.h; don't use this.
extern "C" { extern "C" {
#endif #endif
/* #warning "DeprecationWarning: intobject.h is going to be removed in 3.1"
typedef struct {
PyObject_HEAD #define PyInt_Check(op) PyLong_Check(op)
long ob_ival; #define PyInt_FromString PyLong_FromString
} PyIntObject; #define PyInt_FromUnicode PyLong_FromUnicode
#define PyInt_FromLong PyLong_FromLong
PyAPI_DATA(PyTypeObject) PyInt_Type; #define PyInt_FromSize_t PyLong_FromSize_t
*/ #define PyInt_FromSsize_t PyLong_FromSsize_t
#define PyInt_AsLong PyLong_AsLong
#define PyInt_CheckExact(op) (PyLong_CheckExact(op) && _PyLong_FitsInLong(op)) #define PyInt_AsSsize_t PyLong_AsSsize_t
#define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
#if 0 #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
# define PyInt_Check(op) PyLong_Check(op) #define PyInt_AS_LONG PyLong_AS_LONG
# 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);
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -14,6 +14,7 @@ PyAPI_DATA(PyTypeObject) PyLong_Type; ...@@ -14,6 +14,7 @@ PyAPI_DATA(PyTypeObject) PyLong_Type;
#define PyLong_Check(op) \ #define PyLong_Check(op) \
PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_LONG_SUBCLASS) PyType_FastSubclass(Py_Type(op), Py_TPFLAGS_LONG_SUBCLASS)
#define PyLong_CheckExact(op) (Py_Type(op) == &PyLong_Type) #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_FromLong(long);
PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLong(unsigned long); PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLong(unsigned long);
...@@ -30,6 +31,8 @@ PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLongMask(PyObject *); ...@@ -30,6 +31,8 @@ PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLongMask(PyObject *);
cleanup to keep the extra information. [CH] */ cleanup to keep the extra information. [CH] */
#define PyLong_AS_LONG(op) PyLong_AsLong(op) #define PyLong_AS_LONG(op) PyLong_AsLong(op)
PyAPI_FUNC(long) PyInt_GetMax(void);
/* Used by socketmodule.c */ /* Used by socketmodule.c */
#if SIZEOF_SOCKET_T <= SIZEOF_LONG #if SIZEOF_SOCKET_T <= SIZEOF_LONG
#define PyLong_FromSocket_t(fd) PyLong_FromLong((SOCKET_T)(fd)) #define PyLong_FromSocket_t(fd) PyLong_FromLong((SOCKET_T)(fd))
...@@ -127,6 +130,12 @@ PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v, ...@@ -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. */ appending a base prefix of 0[box] if base is 2, 8 or 16. */
PyAPI_FUNC(PyObject *) _PyLong_Format(PyObject *aa, int base); 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 #ifdef __cplusplus
} }
#endif #endif
......
...@@ -546,6 +546,7 @@ PYTHON_HEADERS= \ ...@@ -546,6 +546,7 @@ PYTHON_HEADERS= \
Include/asdl.h \ Include/asdl.h \
Include/abstract.h \ Include/abstract.h \
Include/boolobject.h \ Include/boolobject.h \
Include/bytes_methods.h \
Include/bytesobject.h \ Include/bytesobject.h \
Include/ceval.h \ Include/ceval.h \
Include/classobject.h \ Include/classobject.h \
...@@ -563,10 +564,10 @@ PYTHON_HEADERS= \ ...@@ -563,10 +564,10 @@ PYTHON_HEADERS= \
Include/formatter_unicode.h \ Include/formatter_unicode.h \
Include/funcobject.h \ Include/funcobject.h \
Include/import.h \ Include/import.h \
Include/intobject.h \
Include/intrcheck.h \ Include/intrcheck.h \
Include/iterobject.h \ Include/iterobject.h \
Include/listobject.h \ Include/listobject.h \
Include/longintrepr.h \
Include/longobject.h \ Include/longobject.h \
Include/memoryobject.h \ Include/memoryobject.h \
Include/methodobject.h \ Include/methodobject.h \
......
...@@ -50,6 +50,10 @@ Core and Builtins ...@@ -50,6 +50,10 @@ Core and Builtins
removed and im_func + im_self are renamed to __func__ and __self__. The removed and im_func + im_self are renamed to __func__ and __self__. The
factory PyMethod_New takes only func and instance as argument. 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 Extension Modules
----------------- -----------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment