#ifdef __GNUC__
#include "clib.h"
#endif
#include "othello.h"
#include "edgeval.h"

/* ================================================================ */
/*               A very simple bit vector package                   */


#define BITMAP(name, num_bits) \
    unsigned short   name[num_bits / 16 + 1]


#define SETBIT(arr, bit) \
    (arr[bit >> 4] |= bits[bit & 15])

#define CLEARBIT(arr, bit) \
    (arr[bit >> 4] &= ~bits[bit & 15])

#define TESTBIT(arr, bit) \
    (arr[bit >> 4] & bits[bit & 15])

#define ZERO(arr, numbits) \
    { int   i; \
      for (i = 0; i < numbits / 16 + 1; ++i) \
          arr[i] = 0; \
    }

extern unsigned short bits[];


/* ================================================================ */


extern unsigned short   convergedbits_me[];
extern unsigned short   convergedbits_you[];

void
print_table(num)
int   num;
{
    int   temp;
    int   i;

    temp = num;
    for (i = 0; i < 8; ++i) {
	putchar(".XO"[temp % 3]);
	temp /= 3;
    }
    printf("  %5d  %5d  %c  %c\n", (int) edgeval_me_to_move[num],
	   (int) edgeval_you_to_move[num], 
	   TESTBIT(convergedbits_me,  num) ? 'C' : ' ', 
	   TESTBIT(convergedbits_you, num) ? 'C' : ' ');
}


void
main()
{
    int   i;

    init_edgevals();
    
    for (i = 0; i < 6561; ++i) {
	printf("%4d  ", i);
	print_table(i);
    }
}

	
