On 26.01.2018 16:16, Random832 wrote:
> On Fri, Jan 26, 2018, at 09:18, M.-A. Lemburg wrote:
>> Is there a way to call an API which fixes the setting
>> (a public version of unicode_adjust_maxchar()) ?
>>
>> Without this, how would an extension be able to provide a
>> correct value upfront without knowing the content ?
> 
> It obviously has to know the content before it can finally return the string 
> (or pass it to any other function, etc), because strings are immutable. Why 
> not then do all the intermediate work in an array of int32's (or perhaps a 
> UCS-4 PyUnicode to be returned only if needed), then afterward scan and build 
> the string?

The create, write data, resize approach is a standard way to build
(longer) Pythhon string objects in the Python C API, since it
avoids temporary copies.

E.g. you don't want to first build a buffer to hold 100MB XML,
then scan it for the max code point being used, create a python
string from it (which copies the data into a second 100MB
buffer) and then deallocate the first buffer again.

Instead you create an uninitialized Python Unicode object
and use PyUnicde_WRITE() to write the data directly into
the object, avoiding the 100MB temp buffer.

PS: Strings are immutable in Python, but they are not in C.
You can manipulate string objects provided you own the only
reference.

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Experts (#1, Jan 26 2018)
>>> Python Projects, Coaching and Consulting ...  http://www.egenix.com/
>>> Python Database Interfaces ...           http://products.egenix.com/
>>> Plone/Zope Database Interfaces ...           http://zope.egenix.com/
________________________________________________________________________

::: We implement business ideas - efficiently in both time and costs :::

   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611
               http://www.egenix.com/company/contact/
                      http://www.malemburg.com/

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to