View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# Bitset data access operator problem

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

2 replies to this topic

### #1Misery  Members

Posted 27 June 2012 - 01:23 AM

Hello,

I am in a need of creating a bitset. However I cannot think of any solution how to make an operator that would set the proper bit to true or false in such manner:

bitset(i)=true;
bitset(j)=false;


where i, j are the bits i want to set to proper value.

I have checked BOOST dynamic bitset, however I cannot figure out the soution. I know that I have to use some helper class. This is where I'm stuck. Very simplified, the problem is:

class Block  //helper class
{
public:
int Container;

Block& operator=(bool x)  { Assign(x);   return *this; }

void Assign(bool x) { x? do_set() : do_reset(); }
void do_set() { Container |= mask; }
void do_reset() { Container &= ~mask; }
};

class bitset
{
public:
int Data[4]; //array of ints - here only 4
int cs;  //container size

bitset()
{
cs=sizeof(int)*8;
}

int operator () (int i) const
{
return Data[i/cs] & (1 << (i%cs));
}

int& operator () (int i) //int, bool or whatever, Block?? I have no idea
{
//what do I add here to be able to do substitution like mentioned above?
}
};


Thanks in advance for any sugestions,
Misery

Edited by Misery, 27 June 2012 - 01:25 AM.

### #2Álvaro  Members

Posted 27 June 2012 - 07:39 AM

I didn't read the code you posted, but I know how to solve your problem. You define an operator()(int)' --although I would prefer operator[](int)', so it looks more like an array-- that returns an object that contains enough information to locate the bit. Something like this:
class BitReference {
unsigned char *byte;
int bit;

// ...
};

You then define operator=(bool)' for that object in the obvious way. You probably also want to provide an implicit conversion to bool'.

### #3Misery  Members

Posted 28 June 2012 - 01:02 AM

Thanks Alvaro :]

Edited by Misery, 28 June 2012 - 01:03 AM.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.