#include <stdio.h>
#include "bitset.h"
#include "string.h"

#include "bitset.c++"

int main()
{
  bitset<size_t(60)> bs(0xaaaaaaaa);

  for(int i = 0; i < 60; ++i)
    printf("%s\n", (bs<<i).to_string().c_str());

  printf("\n\n");

  bs.flip();

  for(i = 0; i < 60; ++i)
    printf("%s\n", (bs>>i).to_string().c_str());

  printf("\n\n");

  bs.flip();

  printf("%s\n", bs.to_string().c_str());
  printf("count(): %i\n\n", bs.count());

  bs.flip();
  printf("%s\n\n", bs.to_string().c_str());

  string s = "111111110000111100000000111000001111110000001111000101010101";
  bitset<size_t(60)> bs2(s);
  printf("expected: %s\n", s.c_str());
  printf("actual:   %s\n\n", bs2.to_string().c_str());

  bs.reset();
  bs[5] = 1;
  printf("%s\n\n", bs.to_string().c_str());

  for(i = 0; i < bs.size(); ++i)
    printf("bit %3i: %i\n", i, bool(bs[i]));
}
