extern(C) enum

bitwise bitwise.pvt at gmail.com
Sun Sep 17 17:06:10 UTC 2017


On Saturday, 16 September 2017 at 12:34:58 UTC, nkm1 wrote:
> On Saturday, 16 September 2017 at 03:06:24 UTC, Timothy Foster 
> wrote:
>> [...]
>
> [...]

So it appears I'm screwed then.

Example:

typedef enum FT_Size_Request_Type_
{
     FT_SIZE_REQUEST_TYPE_NOMINAL,
     FT_SIZE_REQUEST_TYPE_REAL_DIM,
     FT_SIZE_REQUEST_TYPE_BBOX,
     FT_SIZE_REQUEST_TYPE_CELL,
     FT_SIZE_REQUEST_TYPE_SCALES,

     FT_SIZE_REQUEST_TYPE_MAX

} FT_Size_Request_Type;

typedef struct FT_Size_RequestRec_
{
     FT_Size_Request_Type  type;
     FT_Long               width;
     FT_Long               height;
     FT_UInt               horiResolution;
     FT_UInt               vertResolution;

} FT_Size_RequestRec;


FT_Size_Request_Type_ could be represented by char. Maybe the 
compiler makes it an int, maybe not.

Maybe the compiler makes 'FT_Size_Request_Type_' char sized, but 
then pads 'FT_Size_RequestRec_' to align 'width' to 4 bytes...or 
maybe not.

Maybe a member of 'FT_Size_Request_Type_' sits right before a 
char or bool in some struct..so can't rely on padding.

I don't really see a way to deal with this aside from branching 
the entire library and inserting something like 
'FT_SIZE_REQUEST_TYPE__FORCE_INT = 0xFFFFFFFF' into every enum 
incase the devs used it in a struct.




More information about the Digitalmars-d-learn mailing list