diff options
author | Christian Heimes <christian@cheimes.de> | 2008-01-25 12:18:43 +0000 |
---|---|---|
committer | Christian Heimes <christian@cheimes.de> | 2008-01-25 12:18:43 +0000 |
commit | 343d3cd83f2cf7aaea3a7e1c7911aff1d0661a7c (patch) | |
tree | 43cff4830b70ded464f0b4ca5fb3cefb9af504f2 /Include | |
parent | d33a61517b9cf342a54cab67d69f4da639ecc16a (diff) | |
download | cpython-343d3cd83f2cf7aaea3a7e1c7911aff1d0661a7c.tar.gz |
Backport of several functions from Python 3.0 to 2.6 including PyUnicode_FromString, PyUnicode_Format and PyLong_From/AsSsize_t. The functions are partly required for the backport of the bytearray type and _fileio module. They should also make it easier to port C to 3.0.
First chapter of the Python 3.0 io framework back port: _fileio
The next step depends on a working bytearray type which itself depends on a backport of the nwe buffer API.
Diffstat (limited to 'Include')
-rw-r--r-- | Include/longintrepr.h | 8 | ||||
-rw-r--r-- | Include/longobject.h | 9 | ||||
-rw-r--r-- | Include/unicodeobject.h | 23 |
3 files changed, 33 insertions, 7 deletions
diff --git a/Include/longintrepr.h b/Include/longintrepr.h index b1574ba507..00af752ea8 100644 --- a/Include/longintrepr.h +++ b/Include/longintrepr.h @@ -24,11 +24,11 @@ typedef unsigned int wdigit; /* digit widened to parameter size */ typedef unsigned BASE_TWODIGITS_TYPE twodigits; typedef BASE_TWODIGITS_TYPE stwodigits; /* signed variant of twodigits */ -#define SHIFT 15 -#define BASE ((digit)1 << SHIFT) -#define MASK ((int)(BASE - 1)) +#define PyLong_SHIFT 15 +#define PyLong_BASE ((digit)1 << PyLong_SHIFT) +#define PyLong_MASK ((int)(PyLong_BASE - 1)) -#if SHIFT % 5 != 0 +#if PyLong_SHIFT % 5 != 0 #error "longobject.c requires that SHIFT be divisible by 5" #endif diff --git a/Include/longobject.h b/Include/longobject.h index 13f2e41973..379e93492d 100644 --- a/Include/longobject.h +++ b/Include/longobject.h @@ -18,14 +18,17 @@ PyAPI_DATA(PyTypeObject) PyLong_Type; PyAPI_FUNC(PyObject *) PyLong_FromLong(long); PyAPI_FUNC(PyObject *) PyLong_FromUnsignedLong(unsigned long); PyAPI_FUNC(PyObject *) PyLong_FromDouble(double); +PyAPI_FUNC(PyObject *) PyLong_FromSize_t(size_t); +PyAPI_FUNC(PyObject *) PyLong_FromSsize_t(Py_ssize_t); PyAPI_FUNC(long) PyLong_AsLong(PyObject *); PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLong(PyObject *); PyAPI_FUNC(unsigned long) PyLong_AsUnsignedLongMask(PyObject *); +PyAPI_FUNC(Py_ssize_t) PyLong_AsSsize_t(PyObject *); /* For use by intobject.c only */ -PyAPI_FUNC(Py_ssize_t) _PyLong_AsSsize_t(PyObject *); -PyAPI_FUNC(PyObject *) _PyLong_FromSize_t(size_t); -PyAPI_FUNC(PyObject *) _PyLong_FromSsize_t(Py_ssize_t); +#define _PyLong_AsSsize_t PyLong_AsSsize_t +#define _PyLong_FromSize_t PyLong_FromSize_t +#define _PyLong_FromSsize_t PyLong_FromSsize_t PyAPI_DATA(int) _PyLong_DigitValue[256]; /* _PyLong_AsScaledDouble returns a double x and an exponent e such that diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h index 6c33045a58..0c21446f13 100644 --- a/Include/unicodeobject.h +++ b/Include/unicodeobject.h @@ -183,6 +183,10 @@ typedef PY_UNICODE_TYPE Py_UNICODE; # define PyUnicode_FromObject PyUnicodeUCS2_FromObject # define PyUnicode_FromOrdinal PyUnicodeUCS2_FromOrdinal # define PyUnicode_FromUnicode PyUnicodeUCS2_FromUnicode +# define PyUnicode_FromString PyUnicodeUCS2_FromString +# define PyUnicode_FromStringAndSize PyUnicodeUCS2_FromStringAndSize +# define PyUnicode_FromFormatV PyUnicodeUCS2_FromFormatV +# define PyUnicode_FromFormat PyUnicodeUCS2_FromFormat # define PyUnicode_FromWideChar PyUnicodeUCS2_FromWideChar # define PyUnicode_GetDefaultEncoding PyUnicodeUCS2_GetDefaultEncoding # define PyUnicode_GetMax PyUnicodeUCS2_GetMax @@ -265,6 +269,10 @@ typedef PY_UNICODE_TYPE Py_UNICODE; # define PyUnicode_FromObject PyUnicodeUCS4_FromObject # define PyUnicode_FromOrdinal PyUnicodeUCS4_FromOrdinal # define PyUnicode_FromUnicode PyUnicodeUCS4_FromUnicode +# define PyUnicode_FromString PyUnicodeUCS4_FromString +# define PyUnicode_FromStringAndSize PyUnicodeUCS4_FromStringAndSize +# define PyUnicode_FromFormatV PyUnicodeUCS4_FromFormatV +# define PyUnicode_FromFormat PyUnicodeUCS4_FromFormat # define PyUnicode_FromWideChar PyUnicodeUCS4_FromWideChar # define PyUnicode_GetDefaultEncoding PyUnicodeUCS4_GetDefaultEncoding # define PyUnicode_GetMax PyUnicodeUCS4_GetMax @@ -442,6 +450,18 @@ PyAPI_FUNC(PyObject*) PyUnicode_FromUnicode( Py_ssize_t size /* size of buffer */ ); +/* Similar to PyUnicode_FromUnicode(), but u points to Latin-1 encoded bytes */ +PyAPI_FUNC(PyObject*) PyUnicode_FromStringAndSize( + const char *u, /* char buffer */ + Py_ssize_t size /* size of buffer */ + ); + +/* Similar to PyUnicode_FromUnicode(), but u points to null-terminated + Latin-1 encoded bytes */ +PyAPI_FUNC(PyObject*) PyUnicode_FromString( + const char *u /* string */ + ); + /* Return a read-only pointer to the Unicode object's internal Py_UNICODE buffer. */ @@ -517,6 +537,9 @@ PyAPI_FUNC(PyObject*) PyUnicode_FromObject( register PyObject *obj /* Object */ ); +PyAPI_FUNC(PyObject *) PyUnicode_FromFormatV(const char*, va_list); +PyAPI_FUNC(PyObject *) PyUnicode_FromFormat(const char*, ...); + /* --- wchar_t support for platforms which support it --------------------- */ #ifdef HAVE_WCHAR_H |