[Python-Dev] C struct for Str( )

Victor Pantoja victor.pantoja at gmail.com
Fri Jan 15 20:08:15 EST 2016


Hi Eddy

You can try some of the lists in https://mail.python.org/mailman/listinfo.

Best,
victor

2016-01-15 22:23 GMT-02:00 Eddy Quicksall <Eddy at quicksall.com>:

> Sorry, I must be on the wrong list. Can you please give me the correct
> list?
>
>
>
> Eddy
>
>
>
> *From:* Brett Cannon [mailto:brett at python.org]
> *Sent:* Friday, January 15, 2016 6:58 PM
> *To:* Eddy Quicksall; python-dev at python.org
> *Subject:* Re: [Python-Dev] C struct for Str( )
>
>
>
> I don't quite see what this has to do with has to do with the development
> of Python, Eddy. You can always reference the C API at
> https://docs.python.org/3/c-api/index.html . And `PyBytesObject` is an
> instance of `bytes` in Python.
>
>
>
> On Fri, 15 Jan 2016 at 15:33 Eddy Quicksall <Eddy at quicksall.com> wrote:
>
> I want to fill an Str() string from a C function. But I think I am using
> the
> wrong structure (PyBytesObject). I have written a C function to dump the
> Python class but as you can see the structure I'm using does not match the
> data in the class.
>
> Can someone please tell me the correct structure:
>
> --------- Python snip ---------
> class _vendorRecord_2:
>     vendorListNumber        = str()
>     vendorNumber            = str()
>     vendorName              = str('x' * 20)
>
> vendorRecord_2 = _vendorRecord_2()
>
> print(len(vendorRecord_2.vendorName))
> print(vendorRecord_2.vendorName + '|')
> XBaseDump_PythonString(py_object(vendorRecord_2.vendorName))
>
> --------- C function --------
> #define MS_NO_COREDLL
> #undef _DEBUG
> #include <W:\Python-3.5.1\Include\python.h>
> DSI_DLL void CALL_TYPE XBaseDump_PythonString( PyBytesObject *pBytesObject
> )
> {
>     printf( "ob_size = %d, ob_shash = %X, ob_sval = %s\n",
> pBytesObject->ob_base.ob_size, pBytesObject->ob_shash,
> pBytesObject->ob_sval
> );
>     printf( "offsetof(ob_size) = %d, offsetof(ob_sval) = %d\n", offsetof(
> PyBytesObject, ob_base.ob_size ),
>         offsetof( PyBytesObject, ob_sval ) );
>     printf( "sizeof(PyBytesObject) = %d\n", sizeof(PyBytesObject) );
>     DsmDumpBytes( pBytesObject, 32 );
> }
>
> -------- output ------------
> 20
> xxxxxxxxxxxxxxxxxxxx|
> ob_size = 20, ob_shash = 70768D53, ob_sval = σsci
> offsetof(ob_size) = 8, offsetof(ob_sval) = 16
> sizeof(PyBytesObject) = 20
> 0000: 03 00 00 00 60 B0 DC 1D 14 00 00 00 53 8D 76 70 ....-...........
> 0016: E5 73 63 69 00 00 00 00 78 78 78 78 78 78 78 78 V...............
>
>
>
>
> ---
> This email has been checked for viruses by Avast antivirus software.
> https://www.avast.com/antivirus
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/brett%40python.org
>
>
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> This
> email has been sent from a virus-free computer protected by Avast.
> www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/victor.pantoja%40gmail.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20160115/8c7e9366/attachment.html>


More information about the Python-Dev mailing list