Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7eb512b

Browse files
authored
Add structmember.h constants (#126)
1 parent61709bf commit7eb512b

File tree

3 files changed

+95
-0
lines changed

3 files changed

+95
-0
lines changed

‎docs/changelog.rst

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,32 @@
11
Changelog
22
=========
33

4+
* 2024-12-16: Add ``structmember.h`` constants:
5+
6+
* ``Py_T_BOOL``
7+
* ``Py_T_BYTE``
8+
* ``Py_T_CHAR``
9+
* ``Py_T_DOUBLE``
10+
* ``Py_T_FLOAT``
11+
* ``Py_T_INT``
12+
* ``Py_T_LONGLONG``
13+
* ``Py_T_LONG``
14+
* ``Py_T_OBJECT_EX``
15+
* ``Py_T_PYSSIZET``
16+
* ``Py_T_SHORT``
17+
* ``Py_T_STRING_INPLACE``
18+
* ``Py_T_STRING``
19+
* ``Py_T_UBYTE``
20+
* ``Py_T_UINT``
21+
* ``Py_T_ULONGLONG``
22+
* ``Py_T_ULONG``
23+
* ``Py_T_USHORT``
24+
* ``_Py_T_NONE``
25+
* ``_Py_T_OBJECT``
26+
* ``Py_AUDIT_READ``
27+
* ``Py_READONLY``
28+
* ``_Py_WRITE_RESTRICTED``
29+
430
* 2024-12-13: Add functions and structs:
531

632
* ``PyLongLayout``

‎pythoncapi_compat.h

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ extern "C" {
2424
#if PY_VERSION_HEX < 0x030b00B4 && !defined(PYPY_VERSION)
2525
#include"frameobject.h"// PyFrameObject, PyFrame_GetBack()
2626
#endif
27+
#if PY_VERSION_HEX < 0x030C00A3
28+
#include<structmember.h>// T_SHORT, READONLY
29+
#endif
2730

2831

2932
#ifndef _Py_CAST
@@ -1899,6 +1902,37 @@ PyLongWriter_Finish(PyLongWriter *writer)
18991902
#endif
19001903

19011904

1905+
#if PY_VERSION_HEX < 0x030C00A3
1906+
#definePy_T_SHORT T_SHORT
1907+
#definePy_T_INT T_INT
1908+
#definePy_T_LONG T_LONG
1909+
#definePy_T_FLOAT T_FLOAT
1910+
#definePy_T_DOUBLE T_DOUBLE
1911+
#definePy_T_STRING T_STRING
1912+
#define_Py_T_OBJECT T_OBJECT
1913+
#definePy_T_CHAR T_CHAR
1914+
#definePy_T_BYTE T_BYTE
1915+
#definePy_T_UBYTE T_UBYTE
1916+
#definePy_T_USHORT T_USHORT
1917+
#definePy_T_UINT T_UINT
1918+
#definePy_T_ULONG T_ULONG
1919+
#definePy_T_STRING_INPLACE T_STRING_INPLACE
1920+
#definePy_T_BOOL T_BOOL
1921+
#definePy_T_OBJECT_EX T_OBJECT_EX
1922+
#definePy_T_LONGLONG T_LONGLONG
1923+
#definePy_T_ULONGLONG T_ULONGLONG
1924+
#definePy_T_PYSSIZET T_PYSSIZET
1925+
1926+
#if PY_VERSION_HEX >= 0x03000000 && !defined(PYPY_VERSION)
1927+
#define_Py_T_NONE T_NONE
1928+
#endif
1929+
1930+
#definePy_READONLY READONLY
1931+
#definePy_AUDIT_READ READ_RESTRICTED
1932+
#define_Py_WRITE_RESTRICTED PY_WRITE_RESTRICTED
1933+
#endif
1934+
1935+
19021936
#ifdef __cplusplus
19031937
}
19041938
#endif

‎tests/test_pythoncapi_compat_cext.c

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2063,6 +2063,40 @@ test_long_stdint(PyObject *Py_UNUSED(module), PyObject *Py_UNUSED(args))
20632063
}
20642064

20652065

2066+
staticPyObject*
2067+
test_structmember(PyObject*Py_UNUSED(module),PyObject*Py_UNUSED(args))
2068+
{
2069+
assert(Py_T_SHORT >=0);
2070+
assert(Py_T_INT >=0);
2071+
assert(Py_T_LONG >=0);
2072+
assert(Py_T_FLOAT >=0);
2073+
assert(Py_T_DOUBLE >=0);
2074+
assert(Py_T_STRING >=0);
2075+
assert(_Py_T_OBJECT >=0);
2076+
assert(Py_T_CHAR >=0);
2077+
assert(Py_T_BYTE >=0);
2078+
assert(Py_T_UBYTE >=0);
2079+
assert(Py_T_USHORT >=0);
2080+
assert(Py_T_UINT >=0);
2081+
assert(Py_T_ULONG >=0);
2082+
assert(Py_T_STRING_INPLACE >=0);
2083+
assert(Py_T_BOOL >=0);
2084+
assert(Py_T_OBJECT_EX >=0);
2085+
assert(Py_T_LONGLONG >=0);
2086+
assert(Py_T_ULONGLONG >=0);
2087+
assert(Py_T_PYSSIZET >=0);
2088+
#ifPY_VERSION_HEX >=0x03000000&& !defined(PYPY_VERSION)
2089+
assert(_Py_T_NONE >=0);
2090+
#endif
2091+
2092+
assert(Py_READONLY >=0);
2093+
assert(Py_AUDIT_READ >=0);
2094+
assert(_Py_WRITE_RESTRICTED >=0);
2095+
2096+
Py_RETURN_NONE;
2097+
}
2098+
2099+
20662100
staticstructPyMethodDefmethods[]= {
20672101
{"test_object",test_object,METH_NOARGS,_Py_NULL},
20682102
{"test_py_is",test_py_is,METH_NOARGS,_Py_NULL},
@@ -2109,6 +2143,7 @@ static struct PyMethodDef methods[] = {
21092143
{"test_bytes",test_bytes,METH_NOARGS,_Py_NULL},
21102144
{"test_iter",test_iter,METH_NOARGS,_Py_NULL},
21112145
{"test_long_stdint",test_long_stdint,METH_NOARGS,_Py_NULL},
2146+
{"test_structmember",test_structmember,METH_NOARGS,_Py_NULL},
21122147
{_Py_NULL,_Py_NULL,0,_Py_NULL}
21132148
};
21142149

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp