diff options
author | Victor Stinner <vstinner@python.org> | 2021-03-23 19:47:40 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-23 19:47:40 (GMT) |
commit | 94faa0724f8cbae6867c491c8e465e35f4fdbfbb (patch) | |
tree | 05590930e5ffbdc1e01be0aaf505d74cf3c49136 /Include/asdl.h | |
parent | cd27af70d58161c59072e27a10e0e63dcbf0bccb (diff) | |
download | cpython-94faa0724f8cbae6867c491c8e465e35f4fdbfbb.zip cpython-94faa0724f8cbae6867c491c8e465e35f4fdbfbb.tar.gz cpython-94faa0724f8cbae6867c491c8e465e35f4fdbfbb.tar.bz2 |
bpo-43244: Remove ast.h, asdl.h, Python-ast.h headers (GH-24933)
These functions were undocumented and excluded from the limited C
API.
Most names defined by these header files were not prefixed by "Py"
and so could create names conflicts. For example, Python-ast.h
defined a "Yield" macro which was conflict with the "Yield" name used
by the Windows <winbase.h> header.
Use the Python ast module instead.
* Move Include/asdl.h to Include/internal/pycore_asdl.h.
* Move Include/Python-ast.h to Include/internal/pycore_ast.h.
* Remove ast.h header file.
* pycore_symtable.h no longer includes Python-ast.h.
Diffstat (limited to 'Include/asdl.h')
-rw-r--r-- | Include/asdl.h | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/Include/asdl.h b/Include/asdl.h deleted file mode 100644 index 8b61e16..0000000 --- a/Include/asdl.h +++ /dev/null @@ -1,101 +0,0 @@ -#ifndef Py_LIMITED_API -#ifndef Py_ASDL_H -#define Py_ASDL_H - -typedef PyObject * identifier; -typedef PyObject * string; -typedef PyObject * object; -typedef PyObject * constant; - -/* It would be nice if the code generated by asdl_c.py was completely - independent of Python, but it is a goal the requires too much work - at this stage. So, for example, I'll represent identifiers as - interned Python strings. -*/ - -#define _ASDL_SEQ_HEAD \ - Py_ssize_t size; \ - void **elements; - -typedef struct { - _ASDL_SEQ_HEAD -} asdl_seq; - -typedef struct { - _ASDL_SEQ_HEAD - void *typed_elements[1]; -} asdl_generic_seq; - -typedef struct { - _ASDL_SEQ_HEAD - PyObject *typed_elements[1]; -} asdl_identifier_seq; - -typedef struct { - _ASDL_SEQ_HEAD - int typed_elements[1]; -} asdl_int_seq; - -asdl_generic_seq *_Py_asdl_generic_seq_new(Py_ssize_t size, PyArena *arena); -asdl_identifier_seq *_Py_asdl_identifier_seq_new(Py_ssize_t size, PyArena *arena); -asdl_int_seq *_Py_asdl_int_seq_new(Py_ssize_t size, PyArena *arena); - - -#define GENERATE_ASDL_SEQ_CONSTRUCTOR(NAME, TYPE) \ -asdl_ ## NAME ## _seq *_Py_asdl_ ## NAME ## _seq_new(Py_ssize_t size, PyArena *arena) \ -{ \ - asdl_ ## NAME ## _seq *seq = NULL; \ - size_t n; \ - /* check size is sane */ \ - if (size < 0 || \ - (size && (((size_t)size - 1) > (SIZE_MAX / sizeof(void *))))) { \ - PyErr_NoMemory(); \ - return NULL; \ - } \ - n = (size ? (sizeof(TYPE *) * (size - 1)) : 0); \ - /* check if size can be added safely */ \ - if (n > SIZE_MAX - sizeof(asdl_ ## NAME ## _seq)) { \ - PyErr_NoMemory(); \ - return NULL; \ - } \ - n += sizeof(asdl_ ## NAME ## _seq); \ - seq = (asdl_ ## NAME ## _seq *)PyArena_Malloc(arena, n); \ - if (!seq) { \ - PyErr_NoMemory(); \ - return NULL; \ - } \ - memset(seq, 0, n); \ - seq->size = size; \ - seq->elements = (void**)seq->typed_elements; \ - return seq; \ -} - -#define asdl_seq_GET_UNTYPED(S, I) (S)->elements[(I)] -#define asdl_seq_GET(S, I) (S)->typed_elements[(I)] -#define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size) -#ifdef Py_DEBUG -#define asdl_seq_SET(S, I, V) \ - do { \ - Py_ssize_t _asdl_i = (I); \ - assert((S) != NULL); \ - assert(0 <= _asdl_i && _asdl_i < (S)->size); \ - (S)->typed_elements[_asdl_i] = (V); \ - } while (0) -#else -#define asdl_seq_SET(S, I, V) (S)->typed_elements[I] = (V) -#endif - -#ifdef Py_DEBUG -#define asdl_seq_SET_UNTYPED(S, I, V) \ - do { \ - Py_ssize_t _asdl_i = (I); \ - assert((S) != NULL); \ - assert(0 <= _asdl_i && _asdl_i < (S)->size); \ - (S)->elements[_asdl_i] = (V); \ - } while (0) -#else -#define asdl_seq_SET_UNTYPED(S, I, V) (S)->elements[I] = (V) -#endif - -#endif /* !Py_ASDL_H */ -#endif /* Py_LIMITED_API */ |