tfe-1.0/area/
tfe-1.0/files/
tfe-1.0/logs/
tfe-1.0/logs/immortal/
tfe-1.0/logs/mob/
tfe-1.0/logs/object/
tfe-1.0/logs/player/
tfe-1.0/logs/room/
tfe-1.0/notes/clans/
tfe-1.0/player/
tfe-1.0/prev/
tfe-1.0/prev/area/
tfe-1.0/prev/player/
tfe-1.0/prev/rooms/
tfe-1.0/rooms/
tfe-1.0/src-gc/
tfe-1.0/src-msvc/
tfe-1.0/src-unix/
tfe-1.0/www/
tfe-1.0/www/html/
/*
 *   BIT ARRAY FUNCTIONS
 */


inline bool is_set( int* array, int bit )
{
  int i = bit/32;
  int j = bit-32*i;

  return( ( array[i] & ( 1 << j ) ) != 0 );
}


inline void switch_bit( int* array, int bit )
{
  int i = bit/32;
  int j = bit-32*i;

  array[i] ^= ( 1 << j );

  return;
}


inline void set_bit( int* array, int bit )
{
  int i = bit/32;
  int j = bit-32*i;

  array[i] |= ( 1 << j );

  return;
}


inline void remove_bit( int* array, int bit )
{
  int i = bit/32;
  int j = bit-32*i;

  array[i] &= ~( 1 << j ); 

  return;
}


inline void assign_bit( int* array, int bit, bool value )
{
  if( value )
    set_bit( array, bit );
  else
    remove_bit( array, bit );

  return;
}
  

/*
 *   LEVEL FUNCTIONS
 */


inline void set_level( int* array, int bit, int level )
{
  assign_bit( array, 2*bit, is_set( &level, 0 ) );
  assign_bit( array, 2*bit+1, is_set( &level, 1 ) );

  return;
}


inline int level_setting( int* array, int bit )
{
  int      i  = bit/16;
  int      j  = 2*(bit-16*i);
  int  level;

  level = ( array[i] >> j ) & 3;

  return level;
}