view src/ploki/strutil.c @ 8916:0234daffd946

<oerjan> addquote <int-e> I couldn\'t help thinking that maybe if one considers the ramifications in full detail it will turn out that overthinking is often not helpful and therefore, not something to be proud of.
author HackBot
date Sun, 14 Aug 2016 02:31:47 +0000
parents ac0403686959
children
line wrap: on
line source

#include "strutil.h"

#include <string.h>

/* FYI: This is the "One-at-a-Time" algorithm by Bob Jenkins
 * from requirements by Colin Plumb.
 * (http://burtleburtle.net/bob/hash/doobs.html) */
size_t u_hash(const char *s, size_t l, size_t h) {
	size_t i;

	for (i = 0; i < l; ++i) {
		h += (unsigned char)s[i];
		h += h << 10;
		h ^= h >> 6;
	}
	h += h << 3;
	h ^= h >> 11;
	h += h << 15;

	return h;
}

int u_cmp(const char *as, size_t al, const char *bs, size_t bl) {
	int tmp;
	if (as == bs && al == bl)
		return 0;
	if ((tmp = memcmp(as, bs, al < bl ? al : bl)))
		return tmp;
	if (al < bl)
		return -1;
	if (al > bl)
		return 1;
	return 0;
}