A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2017-November/150653.html below:

[Python-Dev] Make the stable API-ABI usable

[Python-Dev] Make the stable API-ABI usableHrvoje Niksic hrvoje.niksic at avl.com
Mon Nov 20 08:31:24 EST 2017
On 11/19/2017 12:50 PM, Serhiy Storchaka wrote:
> But if PyTuple_GET_ITEM() is used for getting a reference to a C array
> of items it can't be replaced with PyTuple_GetItem(). And actually there
> is no replacement for this case in the limited API.
> 
>       PyObject **items = &PyTuple_GET_ITEM(tuple, 0);

That use case might be better covered with a new function, e.g. 
PyTuple_GetStorage, which the PyObject ** pointing to the first element 
of the internal array.

This function would serve two purposes:

* provide the performance benefits of PyTuple_GET_ITEM in tight loops, 
but without the drawback of exposing the PyTuple layout to the code that 
invokes the macro;

* allow invocation of APIs that expect a pointer to contiguous storage, 
such as STL algorithms that expect random access iterators.

Something similar is already available as PySequence_Fast_ITEMS, except 
that one is again a macro, and is tied to PySequence_FAST API, which may 
not be appropriate for the kind of performance-critical code where 
PyTuple_GET_ITEM tends to be used. (That kind of code is designed to 
deal specifically with lists or tuples and doesn't benefit from implicit 
conversion of arbitrary sequences to a temporary list; that conversion 
would only serve to mask bugs.)
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4