32-bit flag struct example named BitFlagVector32
01/02/2010 Leave a comment
An example of Flag struct that using interger and set by bits
public struct BitFlagVector32
{
private int data;
public BitFlagVector32(int data)
{
this.data = data;
}
public int IntegerValue
{
get
{
return this.data;
}
set
{
this.data = value;
}
}
public bool this[int bit]
{
get
{
return ((this.data & bit) == bit);
}
set
{
int data = this.data;
if (value)
{
this.data = data | bit;
}
else
{
this.data = data & ~bit;
}
}
}
public void Set(int bit)
{
this.data |= bit;
}
public void Clear(int bit)
{
this.data &= ~bit;
}
}
public static class UsageClass
{
public static BitFlagVector32 flag = new BitFlagVector32(15);
public static void Usage()
{
flag.Clear(0x00); //No effect
flag.Clear(0x01); //value 14 00001110
flag.Clear(0x02); //value 12 00001100
flag.Clear(0x04); //value 8 00001000
flag.Clear(0x08); //value 0 00000000
flag.Set(0); //No effect
flag.Set(0x01); //value 0 00000001
flag.Set(0x02); //value 0 00000011
flag.Set(0x04); //value 0 00000111
flag.Set(0x08); //value 0 00001111
}
}
...