Roslyn Code Fix provider for metaprogramming to generate bit fields
original code:
structMyCode{structBitFields{[BitField(10)]shortX;[BitField(2)]byteY;[BitField(12)]shortZ;[BitField(24)]intW;}long_value;}generated code:
partialstructMyCode{publicshortX=>(short)((_value>>0)&0x3FF);publicbyteY=>(byte)((_value>>10)&0x3);publicshortZ=>(short)((_value>>12)&0xFFF);publicintW=>(int)((_value>>24)&0xFFFFFF);publicMyCode(shortx,bytey,shortz,intw){_value=0;_value|=(long)(x&0x3FF)<<0;_value|=(long)(y&0x3)<<10;_value|=(long)(z&0xFFF)<<12;_value|=(long)(w&0xFFFFFF)<<24;}}