You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add ability to force alignment of ctypes.Structure #112433
When creating a ctypes.Structure to map data from c/c++ to python, I have been coming up against issues where I have a structure which has an alignment due to a #pragma align.
Currently there is no way to define a ctypes.Structure which can map to an object like this.
I propose we add an _align_ attribute to the ctypes.Structure class which will instruct the code how to align the structure itself in memory.
In the way that the _pack_ attribute indicates the maximum alignment of the fields in the struct, this would indicate the minimum alignment of the struct itself.
An example of such a struct and it's use is as follows:
Without the _align_ attribute the value of m.string.string would just be an empty bytes object since it would be reading from 8 bytes into the bytearray.
I have already made a (preliminary) implementation of this here.
Because the attribute is optional, I believe there are no potential backward compatibility issues as the default alignment will simply be what it was before (ie. 1).
Has this already been discussed elsewhere?
I have already discussed this feature proposal on Discourse
Activity
gh-112433: Add optional _align_ attribute to ctypes.Structure (GH-113790
serhiy-storchaka commentedon Feb 15, 2024
Thank you for your contribution @monkeyman192.
pythongh-112433: Add optional _align_ attribute to ctypes.Structure (p…
gh-112433 add versionadded for `ctypes.Structure._align_` (#125087)
[3.13] pythongh-112433 add versionadded for `ctypes.Structure._align_` (
[3.13] gh-112433 add versionadded for `ctypes.Structure._align_` (GH-…
pythongh-112433 add versionadded for `ctypes.Structure._align_` (pyth…
pythongh-112433: Add optional _align_ attribute to ctypes.Structure (p…