/*
....[@@@..[@@@..............[@.................. MUD++ is a written from
....[@..[@..[@..[@..[@..[@@@@@....[@......[@.... scratch multi-user swords and
....[@..[@..[@..[@..[@..[@..[@..[@@@@@..[@@@@@.. sorcery game written in C++.
....[@......[@..[@..[@..[@..[@....[@......[@.... This server is an ongoing
....[@......[@..[@@@@@..[@@@@@.................. development project. All
................................................ contributions are welcome.
....Copyright(C).1995.Melvin.Smith.............. Enjoy.
------------------------------------------------------------------------------
Melvin Smith (aka Fusion) msmith@hom.net
MUD++ development mailing list mudpp@van.ml.org
------------------------------------------------------------------------------
bit.h
*/
#ifndef _BIT_H
#define _BIT_H
#include <string.h>
#include "string.h"
#define BIT( num ) ( 1 << num )
struct bitType
{
const char *name;
int val;
};
inline void SET_BIT( unsigned long flags[], int bit )
{
flags[bit / 32] |= ( 1 << ( bit % 32 ) );
}
inline void CLR_BIT( unsigned long flags[], int bit )
{
flags[bit / 32] &= ~( 1 << ( bit % 32 ) );
}
inline int IS_SET( const unsigned long flags[], int bit )
{
return flags[bit / 32] & ( 1 << ( bit % 32 ) );
}
inline void TOGGLE_BIT( unsigned long flags[], int bit )
{
flags[bit / 32] ^= ( 1 << ( bit % 32 ) );
}
const int NULLBIT = 0; // First bit unused in all bit fields.
const int UNDEFINED = NULLBIT;
extern const char * unknown_bit_name;
const char * lookupBitName( const bitType bit_list[], int );
int lookupBit( const bitType bit_list[], const char * );
const char * listBits( const bitType bit_list[], unsigned long bits[] );
void interpretBitList( const bitType bit_list[], unsigned long * bits[],
const String & arg );
#endif