/*********************************************************************
 * This file is part of the cpplibs suite.
 *
 * Copyright (C) 2001 Topi Mäenpää
 * All rights reserved.
 *
 * This program is free software. You can redistribute and/or modify
 * it under the terms of the free software licence found in the
 * accompanying file "COPYING". The licence terms must always be
 * redistributed with this source file. The above copyright notice
 * must be reproduced in all modified and unmodified copies of this
 * source file.
 *
 * $Revision: 1.3 $
 *********************************************************************/

#include "Hashtable.h"

namespace util
{
	template <> unsigned long hashCode(const std::string& obj)
	{
		unsigned long h = 0, g;
		unsigned char* name = (unsigned char*)obj.data();
		for (unsigned int i=0;i<obj.size();i++, name++)
			{
				h = ( h << 4 ) + *name;
				if ( (g = (h & 0xF0000000)) )
					h ^= g >> 24;
				h &= ~g;
			}
		return h;
	}
}
