921acfd
diff -u -u -r1.14 polyominoes.c
921acfd
--- polyominoes.c	3 Jul 2012 20:56:28 -0000	1.14
921acfd
+++ polyominoes.c	9 Jun 2013 18:33:38 -0000
921acfd
@@ -54,6 +54,9 @@
921acfd
 static Bool identical;
921acfd
 static Bool plain;
921acfd
 
921acfd
+#undef countof
921acfd
+#define countof(x) (sizeof((x))/sizeof((*x)))
921acfd
+
921acfd
 static XrmOptionDescRec opts[] =
921acfd
 {
921acfd
   {"-identical", ".polyominoes.identical", XrmoptionNoArg, "on"},
921acfd
@@ -791,7 +794,7 @@
921acfd
   int x,y,n;
921acfd
   char *data;
921acfd
 
921acfd
-  for (n=0;n<256;n++) {
921acfd
+  for (n=0;n<countof(sp->bitmaps);n++) {
921acfd
 
921acfd
 /* Avoid duplication of identical bitmaps. */
921acfd
     if (IS_LEFT_UP(n) && (IS_LEFT(n) || IS_UP(n)))
921acfd
@@ -1030,7 +1033,7 @@
921acfd
 {
921acfd
   int n;
921acfd
   
921acfd
-  for (n=0;n<256;n++)
921acfd
+  for (n=0;n<countof(sp->bitmaps);n++)
921acfd
 /* Don't bother to free duplicates */
921acfd
     if (IS_LEFT_UP(n) && (IS_LEFT(n) || IS_UP(n)))
921acfd
       sp->bitmaps[n] = None;
921acfd
@@ -1500,7 +1503,7 @@
921acfd
   int i,j,t,u;
921acfd
 
921acfd
   j=0;
921acfd
-  for (i=0;i<18;i++) {
921acfd
+  for (i=0;i
921acfd
     one_sided_pentomino[j] = pentomino[i];
921acfd
     for (t=0;t<8;t++)
921acfd
       if (one_sided_pentomino[j].transform_list[t]>=4) {
921acfd
@@ -1522,7 +1525,7 @@
921acfd
   int i,j,t,u;
921acfd
 
921acfd
   j=0;
921acfd
-  for (i=0;i<35;i++) {
921acfd
+  for (i=0;i
921acfd
     one_sided_hexomino[j] = hexomino[i];
921acfd
     for (t=0;t<8;t++)
921acfd
       if (one_sided_hexomino[j].transform_list[t]>=4) {
921acfd
@@ -1567,9 +1570,10 @@
921acfd
   }
921acfd
 
921acfd
   sp->nr_polyominoes = 12;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,12*sizeof(polyomino_type));
921acfd
-  random_permutation(12,perm_poly);
921acfd
-  for (p=0;p<12;p++) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  random_permutation(sp->nr_polyominoes,perm_poly);
921acfd
+  for (p=0;p<sp->nr_polyominoes;p++) {
921acfd
     copy_polyomino(sp->polyomino[p],pentomino[perm_poly[p]],1);
921acfd
   }
921acfd
 
921acfd
@@ -1615,9 +1619,10 @@
921acfd
   }
921acfd
 
921acfd
   sp->nr_polyominoes = 18;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,18*sizeof(polyomino_type));
921acfd
-  random_permutation(18,perm_poly);
921acfd
-  for (p=0;p<18;p++) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  random_permutation(sp->nr_polyominoes,perm_poly);
921acfd
+  for (p=0;p<sp->nr_polyominoes;p++) {
921acfd
     copy_polyomino(sp->polyomino[p],one_sided_pentomino[perm_poly[p]],1);
921acfd
   }
921acfd
 
921acfd
@@ -1674,9 +1679,10 @@
921acfd
   }
921acfd
 
921acfd
   sp->nr_polyominoes = 60;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,60*sizeof(polyomino_type));
921acfd
-  random_permutation(60,perm_poly);
921acfd
-  for (p=0;p<60;p++) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  random_permutation(sp->nr_polyominoes,perm_poly);
921acfd
+  for (p=0;p<sp->nr_polyominoes;p++) {
921acfd
     copy_polyomino(sp->polyomino[p],one_sided_hexomino[perm_poly[p]],1);
921acfd
   }
921acfd
 
921acfd
@@ -1711,12 +1717,13 @@
921acfd
   }
921acfd
 
921acfd
   sp->nr_polyominoes = 17;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,17*sizeof(polyomino_type));
921acfd
-  random_permutation(17,perm_poly);
921acfd
-  for (p=0;p<5;p++) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  random_permutation(sp->nr_polyominoes,perm_poly);
921acfd
+  for (p=0;p
921acfd
     copy_polyomino(sp->polyomino[perm_poly[p]],tetromino[p],1);
921acfd
   }
921acfd
-  for (p=0;p<12;p++) {
921acfd
+  for (p=0;p
921acfd
     copy_polyomino(sp->polyomino[perm_poly[p+5]],pentomino[p],1);
921acfd
   }
921acfd
 
921acfd
@@ -1760,10 +1767,10 @@
921acfd
   sp->nr_polyominoes = 47;
921acfd
   set_allocate(sp->polyomino,polyomino_type,47*sizeof(polyomino_type));
921acfd
   random_permutation(47,perm_poly);
921acfd
-  for (p=0;p<12;p++) {
921acfd
+  for (p=0;p
921acfd
     copy_polyomino(sp->polyomino[perm_poly[p]],pentomino[p],1);
921acfd
   }
921acfd
-  for (p=0;p<35;p++) {
921acfd
+  for (p=0;p
921acfd
     copy_polyomino(sp->polyomino[perm_poly[p+12]],hexomino[p],1);
921acfd
   }
921acfd
 
921acfd
@@ -1800,8 +1807,9 @@
921acfd
   sp->height =5;
921acfd
 
921acfd
   sp->nr_polyominoes = 10;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,10*sizeof(polyomino_type));
921acfd
-  for (p=0;p<10;p++) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  for (p=0;p<sp->nr_polyominoes;p++) {
921acfd
     copy_polyomino(sp->polyomino[p],pentomino1,1);
921acfd
   }
921acfd
 
921acfd
@@ -1831,8 +1839,9 @@
921acfd
   sp->height =23;
921acfd
 
921acfd
   sp->nr_polyominoes = 92;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,92*sizeof(polyomino_type));
921acfd
-  for (p=0;p<92;p++) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  for (p=0;p<sp->nr_polyominoes;p++) {
921acfd
     copy_polyomino(sp->polyomino[p],hexomino1,1);
921acfd
   }
921acfd
 
921acfd
@@ -1866,8 +1875,9 @@
921acfd
   sp->height =21;
921acfd
 
921acfd
   sp->nr_polyominoes = 78;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,78*sizeof(polyomino_type));
921acfd
-  for (p=0;p<78;p+=2) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  for (p=0;p<sp->nr_polyominoes;p+=2) {
921acfd
     copy_polyomino(sp->polyomino[p],heptomino1,1);
921acfd
     copy_polyomino(sp->polyomino[p+1],heptomino1,0);
921acfd
   }
921acfd
@@ -1897,8 +1907,9 @@
921acfd
   sp->height =19;
921acfd
 
921acfd
   sp->nr_polyominoes = 76;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,76*sizeof(polyomino_type));
921acfd
-  for (p=0;p<76;p++) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  for (p=0;p<sp->nr_polyominoes;p++) {
921acfd
     copy_polyomino(sp->polyomino[p],heptomino1,1);
921acfd
   }
921acfd
 
921acfd
@@ -1933,8 +1944,9 @@
921acfd
   sp->height =22;
921acfd
 
921acfd
   sp->nr_polyominoes = 50;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,50*sizeof(polyomino_type));
921acfd
-  for (p=0;p<50;p+=2) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  for (p=0;p<sp->nr_polyominoes;p+=2) {
921acfd
     copy_polyomino(sp->polyomino[p],elevenomino1,1);
921acfd
     copy_polyomino(sp->polyomino[p+1],elevenomino1,0);
921acfd
   }
921acfd
@@ -1970,8 +1982,9 @@
921acfd
   sp->height =30;
921acfd
 
921acfd
   sp->nr_polyominoes = 96;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,96*sizeof(polyomino_type));
921acfd
-  for (p=0;p<96;p++) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  for (p=0;p<sp->nr_polyominoes;p++) {
921acfd
     copy_polyomino(sp->polyomino[p],dekomino1,1);
921acfd
   }
921acfd
 
921acfd
@@ -2004,8 +2017,9 @@
921acfd
   sp->height =26;
921acfd
 
921acfd
   sp->nr_polyominoes = 312;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,312*sizeof(polyomino_type));
921acfd
-  for (p=0;p<312;p++) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  for (p=0;p<sp->nr_polyominoes;p++) {
921acfd
     copy_polyomino(sp->polyomino[p],octomino1,1);
921acfd
   }
921acfd
 
921acfd
@@ -2030,8 +2044,9 @@
921acfd
   sp->height =15;
921acfd
 
921acfd
   sp->nr_polyominoes = 45;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,45*sizeof(polyomino_type));
921acfd
-  for (p=0;p<45;p++) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  for (p=0;p<sp->nr_polyominoes;p++) {
921acfd
     copy_polyomino(sp->polyomino[p],pentomino1,1);
921acfd
   }
921acfd
 
921acfd
@@ -2057,8 +2072,9 @@
921acfd
   sp->height =33;
921acfd
 
921acfd
   sp->nr_polyominoes = 141;
921acfd
-  set_allocate(sp->polyomino,polyomino_type,141*sizeof(polyomino_type));
921acfd
-  for (p=0;p<141;p++) {
921acfd
+  set_allocate(sp->polyomino,polyomino_type,
921acfd
+               sp->nr_polyominoes*sizeof(polyomino_type));
921acfd
+  for (p=0;p<sp->nr_polyominoes;p++) {
921acfd
     copy_polyomino(sp->polyomino[p],elevenomino1,1);
921acfd
   }
921acfd