/****************************************************************************
(c) 2006 Melanie Thielker

This file is part of libdjconsole.

libdjconsole is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.

libdjconsole is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.

You should have received a copy of the GNU General Public License along with
libdjconsole; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA 
****************************************************************************/

#ifndef _BITFIELD_H_INCLUDED
#define _BITFIELD_H_INCLUDED

#include <vector>

using namespace std;

class BitfieldSpec;

class Bitfield
{
public:
	Bitfield();
	Bitfield(int size);
	~Bitfield();

	void setSize(int size);
	bool load(const char *file);
	void setBit(int code, bool on=true);
	void clearBit(int code);
	bool dirty();

	const unsigned char *bits();
	int size();
protected:
	vector<BitfieldSpec *> Specs;
	unsigned char *Buffer;
	int Size;
	bool Dirty;
};

#endif
