/* ....[@@@..[@@@..............[@.................. 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@falcon.mercer.peachnet.edu MUD++ development mailing list mudpp-list@spice.com ------------------------------------------------------------------------------ bit.h */ #ifndef _BIT_H #define _BIT_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 CLEAR_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. inline const char * getBitName( const bitType bit_list[], int val ) { for( int i = 1; bit_list[i].name; i++ ) { if( val == bit_list[i].val ) return bit_list[i].name; } return ""; } inline int getBit( const bitType bit_list[], const char * name ) { int len = strlen( name ); for( int i = 1; bit_list[i].name; i++ ) { if( *name != *bit_list[i].name ) continue; if( !strncmp( name, bit_list[i].name, len ) ) return bit_list[i].val; } return NULLBIT; } #endif