32-bit flag struct example named BitFlagVector32


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
 
        }
    }
...
Advertisement

About bpostaci
Escalation Engineer in Microsoft.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: