I'm converting some C headers into D, and had some questions. 1. What is the equivalent of a 'short int' in D? e.g: struct ScePspSRect { short int x; short int y; short int w; short int h; }
2. If I have this union in C: typedef union ScePspUnion128 { /* SceULong128 qw;*/ /* Missing compiler support. */ /* SceULong128 uq;*/ /* SceLong128 q;*/ SceULong64 ul[2]; SceLong64 l[2]; unsigned int ui[4]; int i[4]; unsigned short us[8]; short int s[8]; unsigned char uc[16]; char c[16]; float f[4]; ScePspFRect fr; ScePspIRect ir; ScePspFVector4 fv; ScePspIVector4 iv; ScePspFQuaternion fq; ScePspFColor fc; ScePspRGBA8888 rgba8888[4]; ScePspRGBA4444 rgba4444[8]; ScePspRGBA5551 rgba5551[8]; ScePspRGB565 rgb565[8]; } ScePspUnion128 __attribute__((aligned(16))); Does it convert to this: union ScePspUnion128 { /* SceULong128 qw;*/ /* Missing compiler support. */ /* SceULong128 uq;*/ /* SceLong128 q;*/ align(16) { SceULong64 ul[2]; SceLong64 l[2]; uint ui[4]; int i[4]; ushort us[8]; short int s[8]; //What type??? ubyte uc[16]; char c[16]; //should it be byte or char? float f[4]; ScePspFRect fr; ScePspIRect ir; ScePspFVector4 fv; ScePspIVector4 iv; ScePspFQuaternion fq; ScePspFColor fc; ScePspRGBA8888 rgba8888[4]; ScePspRGBA4444 rgba4444[8]; ScePspRGBA5551 rgba5551[8]; ScePspRGB565 rgb565[8]; } } Are those type changes correct? Can I use the same way to align structs defined like that? 3. typedef uint8_t u8; typedef uint16_t u16; typedef uint32_t u32; typedef uint64_t u64; typedef int8_t s8; typedef int16_t s16; typedef int32_t s32; typedef int64_t s64; Would it be okay to be make/alias all of the uintxx_t to 'uint' and all of the intxx_t to 'int'? P.S. If anyone is wondering, this is taken from the homebrew PSP SDK. Thanks, Michael P.