#include #include #include static int dump_map (struct BM *map); int main (int argc, char *argv[]) { int SIZE; struct BM *map, *map2; int i, x, y; int dump; FILE *fp; if (argc < 2) SIZE = 11; else SIZE = atoi (argv[1]); if(NULL == getenv ("NODUMP")) dump = 1; else dump = 0; map = BM_create_sparse (SIZE, SIZE); /* turn on bits in X pattern */ for (i = 0 ; i < SIZE ; i++) { BM_set (map, i, i, 1); BM_set (map, (SIZE-1)-i, i, 1); } if (dump) dump_map (map); fprintf (stdout, "Size = %d\n", BM_get_map_size (map)); /* BM_dump_map_sparse (map); */ fprintf (stdout, "\n\n"); /* now invert it */ for (y = 0 ; y < SIZE ; y++) for (x = 0 ; x < SIZE ; x++) { BM_set(map, x, y, !BM_get (map, x, y)); #ifdef FOO /*DEBUG*/ if (y == 0) /*DEBUG*/ BM_dump_map_row_sparse (map, y); #endif } if (dump) dump_map (map); fprintf (stdout, "Size = %d\n", BM_get_map_size (map)); /* fprintf (stdout, "\n\n"); BM_dump_map_sparse (map); */ { fp = fopen ("dumpfile", "w"); if (0 > BM_file_write (fp, map)) { fprintf (stderr, "File_write failed\n"); goto nowrite; } fclose (fp); fp = fopen ("dumpfile", "r"); map2 = BM_file_read (fp); fclose (fp); dump_map (map2); } BM_destroy (map2); nowrite: BM_destroy (map); return 0; } static int dump_map (struct BM *map) { int x, y; for (y = 0 ; y < map->rows ; y++) { for (x = 0 ; x < map->cols ; x++) { fprintf (stdout, "%c", BM_get(map, x, y) ? '#' : '.'); } fprintf (stdout, "\n"); } }