fill (int count, char with)
{
  fprintf (stderr, "  o Length %d char %d (%02x)\n",
           count, with & 0xff, with & 0xff);
  fflush (stderr);
  fill2 (8257, 'z', 0);         // first part
  fill2 (count - 8257, with, 1);        // do it for real
}
static void fill2(int i, int j, char b[19][19], int size)
{
  if (b[i][j] >= 3) return;
  b[i][j] = 3;
  if (i+1<size && b[i+1][j]==EMPTY) fill2(i+1,j,b, size);
  if (j+1<size && b[i][j+1]==EMPTY) fill2(i,j+1,b, size);
  if (i-1>=0 && b[i-1][j]==EMPTY) fill2(i-1,j,b, size);
  if (j-1>=0 && b[i][j-1]==EMPTY) fill2(i,j-1,b, size);
}
/*
** Convert a string into its printable form.  "width" is the output
** width. "prec" is the maximum number of characters of "s" to output,
** where -1 means until NUL.
*/
static int cvt_s(SprintfState *ss, const char *str, int width, int prec,
		 int flags)
{
    int slen;

    if (prec == 0)
	return 0;

    /* Limit string length by precision value */
    if (!str) {
    	str = "(null)";
    } 
    if (prec > 0) {
	/* this is:  slen = strnlen(str, prec); */
	register const char *s;

	for(s = str; prec && *s; s++, prec-- )
	    ;
	slen = s - str;
    } else {
	slen = strlen(str);
    }

    /* and away we go */
    return fill2(ss, str, slen, width, flags);
}
Exemple #4
0
TEST(ustl_forward_list, constructors) {
  // default:
  ustl::forward_list<int> l1;
  l1.insert_after(l1.before_begin(), 3);
  ASSERT_EQ(3, l1.front());

  // fill:
  ustl::forward_list<int> fill1(ustl::forward_list<int>::size_type(10));
  auto it1 = fill1.begin();
  for (size_t i = 0; i < 10; i++)
    ASSERT_EQ(*it1++, 0);

  ustl::forward_list<int> fill2(ustl::forward_list<int>::size_type(10),
                                static_cast<int>(-1));
  auto it2 = fill2.begin();
  for (size_t i = 0; i < 10; i++)
    ASSERT_EQ(*it2++, -1);

  // range:
  ustl::vector<int> v1{1, 2, 3};
  ustl::forward_list<int> range1(v1.begin(), v1.end());
  const ustl::forward_list<int> range1a{1, 2, 3};
  ASSERT_TRUE(range1 == range1a);

  // copy:
  ustl::forward_list<int> copy1(range1);
  ASSERT_TRUE(copy1 == range1a);

  // initializer list:
  ustl::forward_list<int> l2{1, 2, 3, 4, 5};
  const ustl::forward_list<int> l3{1, 2, 3, 4, 5};
  ASSERT_TRUE(l2 == l3);
}
Exemple #5
0
void test_realloc_multiple_bases2() {
  void *p1 = malloc(4);
  if (!p1) return;
  fill(p1, 4);
  char *p2 = nondet ? realloc(p1, 6) : malloc(2);
  if (!p2) return;
  fill2(p2, 2);
  char *p3 = realloc(p2, 10);
  if (!p3) return;
  char *p4 = realloc(p3, 5);
  if (!p4) return;
  fill(p4, 5);
  char *p5 = malloc(6);
  if (!p5) return;
  fill2(p5, 3);
  char *p6 = realloc(nondet ? p4 : p5, 4);
  if (!p6) return;
  fill(p6, 4);
}
Exemple #6
0
/*
** Convert a string into its printable form.  "width" is the output
** width. "prec" is the maximum number of characters of "s" to output,
** where -1 means until NUL.
*/
static int cvt_s(SprintfState *ss, const char *s, int width, int prec,
		 int flags)
{
    int slen;

    if (prec == 0)
	return 0;

    /* Limit string length by precision value */
    slen = s ? strlen(s) : 6;
    if (prec > 0) {
	if (prec < slen) {
	    slen = prec;
	}
    }

    /* and away we go */
    return fill2(ss, s ? s : "(null)", slen, width, flags);
}
//---------------------------------------------------------------------------
void __fastcall TAlmas3ProbSetKey::fill(TProbKey nKey)
{
//#define Adg1Base 1
//количество первых соседей
//#define Adg1State 3
//количество вторых соседей
//#define Adg2Num 3
//количество состояний вторых соседей
//#define Adg2State 5
//состояние вторых соседей означающее отсутсвие второго соседа
//#define NoAdg2Val (Adg2State-1)
//емкость состояний для первых j соседей
//#define Adg3State(j) (IntPow(IntPow(Adg2State,Adg2Num), j))
//база
//#define Adg2Base(i, j) (Adg1State*Adg3State(j)*IntPow(Adg2State,i))

//#define divGetAdg1(Key) (Key%Adg1State)
//#define divSetAdg1(Key, Data) (Key + ((Data%Adg1State) - divGetAdg1(Key))*Adg1Base)
//#define divGetAdg2(Key, i, j) ((Key/Adg2Base(i,j))%Adg2State)
//#define divSetAdg2(Key, Data, i, j) (Key + ((Data%Adg2State) - divGetAdg2(Key,i,j))*Adg2Base(i,j))


	Adg1 = divGetAdg1(nKey);
	Adg2_i0_j0 = divGetAdg2(nKey, 0, 0);
	//Adg2_i1_j0 = Adg2Base(1,0);
	Adg2_i1_j0 = divGetAdg2(nKey, 1, 0);
	//Adg2_i2_j0 = Adg2Base(2,0);
	Adg2_i2_j0 = divGetAdg2(nKey, 2, 0);
	Adg2_i0_j1 = divGetAdg2(nKey, 0, 1);
	Adg2_i1_j1 = divGetAdg2(nKey, 1, 1);
	Adg2_i2_j1 = divGetAdg2(nKey, 2, 1);
	Adg2_i0_j2 = divGetAdg2(nKey, 0, 2);
	Adg2_i1_j2 = divGetAdg2(nKey, 1, 2);
	Adg2_i2_j2 = divGetAdg2(nKey, 2, 2);

	fill2(nKey);

	int nType;
	int nNumber=-2;
	TAlmas3ProbSetGlobal::GetProbNameFromKey2(nKey, nType, nNumber, strName);
}
/*
** Convert a string into its printable form. |aWidth| is the output
** width. |aPrec| is the maximum number of characters of |aStr| to output,
** where -1 means until NUL.
*/
int
nsTextFormatter::cvt_S(SprintfStateStr* aState, const char16_t* aStr, int aWidth, int aPrec,
                       int aFlags)
{
  int slen;

  if (aPrec == 0) {
    return 0;
  }

  /* Limit string length by precision value */
  slen = aStr ? NS_strlen(aStr) : 6;
  if (aPrec > 0) {
    if (aPrec < slen) {
      slen = aPrec;
    }
  }

  /* and away we go */
  return fill2(aState, aStr ? aStr : u"(null)", slen, aWidth, aFlags);
}
Exemple #9
0
// Here's the wrapper for fill2; it's a little more complicated because we need
// to check the flags and create the array of pointers.
void wrap_fill2(np::ndarray const & array) {
    if (array.get_dtype() != np::dtype::get_builtin<double>()) {
        PyErr_SetString(PyExc_TypeError, "Incorrect array data type");
        p::throw_error_already_set();
    }
    if (array.get_nd() != 2) {
        PyErr_SetString(PyExc_TypeError, "Incorrect number of dimensions");
        p::throw_error_already_set();
    }
    if (!(array.get_flags() & np::ndarray::C_CONTIGUOUS)) {
        PyErr_SetString(PyExc_TypeError, "Array must be row-major contiguous");
        p::throw_error_already_set();
    }
    double * iter = reinterpret_cast<double*>(array.get_data());
    int rows = array.shape(0);
    int cols = array.shape(1);
    boost::scoped_array<double*> ptrs(new double*[rows]);
    for (int i = 0; i < rows; ++i, iter += cols) {
        ptrs[i] = iter;
    }
    fill2(ptrs.get(), array.shape(0), array.shape(1));
}
/*
** Convert a double precision floating point number into its printable
** form.
*/
int
nsTextFormatter::cvt_f(SprintfStateStr* aState, double aDouble, int aWidth, int aPrec,
                       const char16_t aType, int aFlags)
{
  int    mode = 2;
  int    decpt;
  int    sign;
  char   buf[256];
  char*  bufp = buf;
  int    bufsz = 256;
  char   num[256];
  char*  nump;
  char*  endnum;
  int    numdigits = 0;
  char   exp = 'e';

  if (aPrec == -1) {
    aPrec = 6;
  } else if (aPrec > 50) {
    // limit precision to avoid PR_dtoa bug 108335
    // and to prevent buffers overflows
    aPrec = 50;
  }

  switch (aType) {
    case 'f':
      numdigits = aPrec;
      mode = 3;
      break;
    case 'E':
      exp = 'E';
      MOZ_FALLTHROUGH;
    case 'e':
      numdigits = aPrec + 1;
      mode = 2;
      break;
    case 'G':
      exp = 'E';
      MOZ_FALLTHROUGH;
    case 'g':
      if (aPrec == 0) {
        aPrec = 1;
      }
      numdigits = aPrec;
      mode = 2;
      break;
    default:
      NS_ERROR("invalid aType passed to cvt_f");
  }

  if (PR_dtoa(aDouble, mode, numdigits, &decpt, &sign,
              &endnum, num, bufsz) == PR_FAILURE) {
    buf[0] = '\0';
    return -1;
  }
  numdigits = endnum - num;
  nump = num;

  if (sign) {
    *bufp++ = '-';
  } else if (aFlags & _SIGNED) {
    *bufp++ = '+';
  }

  if (decpt == 9999) {
    while ((*bufp++ = *nump++)) {
    }
  } else {

    switch (aType) {

      case 'E':
      case 'e':

        *bufp++ = *nump++;
        if (aPrec > 0) {
          *bufp++ = '.';
          while (*nump) {
            *bufp++ = *nump++;
            aPrec--;
          }
          while (aPrec-- > 0) {
            *bufp++ = '0';
          }
        }
        *bufp++ = exp;

        ::snprintf(bufp, bufsz - (bufp - buf), "%+03d", decpt - 1);
        break;

      case 'f':

        if (decpt < 1) {
          *bufp++ = '0';
          if (aPrec > 0) {
            *bufp++ = '.';
            while (decpt++ && aPrec-- > 0) {
              *bufp++ = '0';
            }
            while (*nump && aPrec-- > 0) {
              *bufp++ = *nump++;
            }
            while (aPrec-- > 0) {
              *bufp++ = '0';
            }
          }
        } else {
          while (*nump && decpt-- > 0) {
            *bufp++ = *nump++;
          }
          while (decpt-- > 0) {
            *bufp++ = '0';
          }
          if (aPrec > 0) {
            *bufp++ = '.';
            while (*nump && aPrec-- > 0) {
              *bufp++ = *nump++;
            }
            while (aPrec-- > 0) {
              *bufp++ = '0';
            }
          }
        }
        *bufp = '\0';
        break;

      case 'G':
      case 'g':

        if ((decpt < -3) || ((decpt - 1) >= aPrec)) {
          *bufp++ = *nump++;
          numdigits--;
          if (numdigits > 0) {
            *bufp++ = '.';
            while (*nump) {
              *bufp++ = *nump++;
            }
          }
          *bufp++ = exp;
          ::snprintf(bufp, bufsz - (bufp - buf), "%+03d", decpt - 1);
        } else {
          if (decpt < 1) {
            *bufp++ = '0';
            if (aPrec > 0) {
              *bufp++ = '.';
              while (decpt++) {
                *bufp++ = '0';
              }
              while (*nump) {
                *bufp++ = *nump++;
              }
            }
          } else {
            while (*nump && decpt-- > 0) {
              *bufp++ = *nump++;
              numdigits--;
            }
            while (decpt-- > 0) {
              *bufp++ = '0';
            }
            if (numdigits > 0) {
              *bufp++ = '.';
              while (*nump) {
                *bufp++ = *nump++;
              }
            }
          }
          *bufp = '\0';
        }
    }
  }

  char16_t rbuf[256];
  char16_t* rbufp = rbuf;
  bufp = buf;
  // cast to char16_t
  while ((*rbufp++ = *bufp++)) {
  }
  *rbufp = '\0';

  return fill2(aState, rbuf, NS_strlen(rbuf), aWidth, aFlags);
}
Exemple #11
0
void scan(unsigned char* in)
{

	{
		unsigned char yych;

		if (limit1 <= cursor1) fill1(1);
		yych = *cursor1;
		{
			static void *yytarget[256] = {
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy2,  &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy11, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy3,  &&yy5,  &&yy7,  &&yy9,  &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13
			};
			goto *yytarget[yych];
		}
yy2:
yy3:
		++cursor1;
		return "a";
yy5:
		++cursor1;
		return "b";
yy7:
		++cursor1;
		return "c";
yy9:
		++cursor1;
		return "d";
yy11:
		++cursor1;
		return "1";
yy13:
		++cursor1;
		return ".";
	}

}

void scan(unsigned short* in)
{

	{
		unsigned short yych;

		if (limit2 <= cursor2) fill2(1);
		yych = *cursor2;
		if (yych & ~0xFF) {
			goto yy13;
		} else {
			static void *yytarget[256] = {
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy2,  &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy11, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy3,  &&yy5,  &&yy7,  &&yy9,  &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13,
				&&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13
			};
			goto *yytarget[yych];
		}
yy2:
yy3:
		++cursor2;
		return "a";
yy5:
		++cursor2;
		return "b";
yy7:
		++cursor2;
		return "c";
yy9:
		++cursor2;
		return "d";
yy11:
		++cursor2;
		return "2";
yy13:
		++cursor2;
		return ".";
	}

}
Exemple #12
0
void Board::update_territory()
{
  if (s)
    memcpy(tscore, s->score, sizeof(score));
    //tscore = s->score;
  else
    memcpy(tscore, score, sizeof(score));
    //tscore = score;

  int i, j;
  for (i=0; i<size; i++)
    for (j=0; j<size; j++) {
      switch (dead[i][j]) {
      case 0:
	territory[i][j] = b[i][j];
	break;
      case 1:
	territory[i][j] = EMPTY;
	break;
      case 2:
	territory[i][j] = 32;
	break;
      }
      if (dead[i][j] == 1) {
	tscore[b[i][j] == WHITE? 0:1]++;
      }
    }

  for (i=0; i<size; i++)
    for (j=0; j<size; j++) {
      if (territory[i][j] == EMPTY) {
	fill2(i, j, territory, size);
	bool w=0, b=0;
	for (int i=0; i<size; i++)
	  for (int j=0; j<size; j++) {
	    if (territory[i][j] == 3) {
	      if (i+1<size) { 
		char c = territory[i+1][j];
		if (c==WHITE) w=1;
		else if (c==BLACK) b=1;
	      }
	      if (j+1<size) { 
		char c = territory[i][j+1];
		if (c==WHITE) w=1;
		else if (c==BLACK) b=1;
	      }
	      if (i-1>=0) { 
		char c = territory[i-1][j];
		if (c==WHITE) w=1;
		else if (c==BLACK) b=1;
	      }
	      if (j-1>=0) { 
		char c = territory[i][j-1];
		if (c==WHITE) w=1;
		else if (c==BLACK) b=1;
	      }
	    }
	  }
	  {
	  for (int i=0; i<size; i++)
	  for (int j=0; j<size; j++) {
	    if (territory[i][j] == 3) {
	      if (w &&!b) {
		territory[i][j] = 4+WHITE;
		tscore[1]++;
	      } else if (!w &&b) {
		territory[i][j] = 4+BLACK;
		tscore[0]++;
	      } else
		territory[i][j] = 4+EMPTY;
	    }
	  }
	  }
      }
    } 

  update_pos();
 // UI->cells->refresh();
}