ClangSharp
ClangSharp copied to clipboard
Anonymous bitmask fields generating with the same field name
From winnt.h:
typedef struct _ImageArchitectureHeader {
unsigned int AmaskValue: 1; // 1 -> code section depends on mask bit
// 0 -> new instruction depends on mask bit
int :7; // MBZ
unsigned int AmaskShift: 8; // Amask bit in question for this fixup
int :16; // MBZ
DWORD FirstEntryRVA; // RVA into .arch section to array of ARCHITECTURE_ENTRY's
} IMAGE_ARCHITECTURE_HEADER, *PIMAGE_ARCHITECTURE_HEADER;
turns into this:
public partial struct ImageArchitectureHeader
{
internal uint _bitfield;
[NativeTypeName("unsigned int : 1")]
public uint AmaskValue
{
get
{
return _bitfield & 0x1u;
}
set
{
_bitfield = (_bitfield & ~0x1u) | (value & 0x1u);
}
}
[NativeTypeName("int : 7")]
public int field
{
get
{
return (_bitfield >> 1) & 0x7F;
}
set
{
_bitfield = (_bitfield & ~(0x7F << 1)) | ((value & 0x7F) << 1);
}
}
[NativeTypeName("unsigned int : 8")]
public uint AmaskShift
{
get
{
return (_bitfield >> 8) & 0xFFu;
}
set
{
_bitfield = (_bitfield & ~(0xFFu << 8)) | ((value & 0xFFu) << 8);
}
}
[NativeTypeName("int : 16")]
public int field
{
get
{
return (_bitfield >> 16) & 0xFFFF;
}
set
{
_bitfield = (_bitfield & ~(0xFFFF << 16)) | ((value & 0xFFFF) << 16);
}
}
[NativeTypeName("DWORD")]
public uint FirstEntryRVA;
}
thus causing a duplicate field compiler error.