示例#1
0
TEST(SBuffer, WriteChar) {
	int socks[2];
	ASSERT_EQ(socketpair(AF_UNIX, SOCK_STREAM, 0, socks), 0);

	SocketWBuffer swb(socks[0], 1);

	swb.WriteChar('a');
	swb.Flush();

	char a[1];
	ASSERT_EQ(read(socks[1], a, sizeof(a)), sizeof(a));
	ASSERT_EQ('a', a[0]);
}
示例#2
0
TEST(SBuffer, WriteUint32) {
	int socks[2];
	ASSERT_EQ(socketpair(AF_UNIX, SOCK_STREAM, 0, socks), 0);

	SocketWBuffer swb(socks[0], 1000);

	swb.WriteUint32(1000000);
	swb.Flush();

	char c[32];
	read(socks[1], c, sizeof(c));
	ASSERT_EQ('1', c[0]);
	ASSERT_EQ('0', c[1]);
	ASSERT_EQ('0', c[2]);
	ASSERT_EQ('0', c[3]);
	ASSERT_EQ('0', c[4]);
	ASSERT_EQ('0', c[5]);
	ASSERT_EQ('0', c[6]);
}
示例#3
0
TEST(SBuffer, WriteMulti) {
	int socks[2];
	ASSERT_EQ(socketpair(AF_UNIX, SOCK_STREAM, 0, socks), 0);
	SocketWBuffer swb(socks[0], 1000);

	swb.WriteField("Pray for Paris");
	swb.WriteChar(' ');
	swb.WriteUint32(13);
	swb.WriteChar('.');
	swb.WriteUint32(11);
	swb.WriteChar('.');
	swb.WriteUint32(2015);
	swb.WriteChar('\0');
	swb.Flush();

	char b[26];
	ASSERT_EQ(read(socks[1], b, sizeof(b)), sizeof(b));
	std::string str(b);
	ASSERT_EQ("Pray for Paris 13.11.2015", str);
}
示例#4
0
文件: itqsort.c 项目: ksherlock/gno
	int
nqsort(char *bas, unsigned n, unsigned wid, int (*cmp)(void *, void *))
{
	unsigned mumble;
	unsigned j;
	unsigned k;
	unsigned pvt;
	unsigned cnt;
	unsigned lo[DEPTH];
	unsigned hi[DEPTH];

	if ( n < 2 )
		return 0;

	/*  init  */
	cnt = 1;
	lo[0] = 0;
	hi[0] = n - 1;

	while ( cnt-- )
	{
		pvt = lo[cnt];
		j = pvt + 1;
		n = k = hi[cnt];
		while ( j < k )
		{
			while ( (j < k) &&
			        (*cmp)(bas + (j * wid), bas + (pvt * wid)) < 1 )
				++j;

			while ( (j <= k) &&
			        (*cmp)(bas + (pvt * wid), bas + (k * wid)) < 1)
				--k;

			if ( j < k )
				swb(bas + (j++ * wid), bas + (k-- * wid), wid);
			}

		if ( (*cmp)(bas + (pvt * wid), bas + (k * wid)) > 0 )
			swb(bas + (pvt * wid), bas + (k * wid), wid);

		if ( k > pvt )
			--k;

		if ( (k > pvt) && (n > j) && ((k - pvt) < (n - j)) )
		{
			mumble = k;
			k = n;
			n = mumble;
			mumble = pvt;
			pvt = j;
			j = mumble;
		}

		if ( k > pvt )
		{
			lo[cnt] = pvt;
			hi[cnt++] = k;
		}

		if ( n > j )
		{
			lo[cnt] = j;
			hi[cnt++] = n;
		}

		if ( cnt >= DEPTH )
			return -1;
	}

	return 0;
}