X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fguid.cpp;h=e537ba661410cfbd2cfc567e768b4ca88c793c34;hb=756c0d29ac1742f231e6615f9a577e574e35a4af;hp=cfac979727a55683925773c9e4935b3cd1a07cd9;hpb=37600b4b217caa5e316984ec0b035c5e8f9698af;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/guid.cpp b/synfig-core/trunk/src/synfig/guid.cpp index cfac979..e537ba6 100644 --- a/synfig-core/trunk/src/synfig/guid.cpp +++ b/synfig-core/trunk/src/synfig/guid.cpp @@ -6,7 +6,7 @@ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley -** Copyright (c) 2007 Chris Moore +** Copyright (c) 2007, 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -23,9 +23,6 @@ /* === H E A D E R S ======================================================= */ -#define HASH_MAP_H -#define SUBTRACT_RNG_H - #ifdef USING_PCH # include "pch.h" #else @@ -48,12 +45,7 @@ #ifdef HASH_MAP_H #include HASH_MAP_H -using namespace __gnu_cxx; -#endif - -#ifdef SUBTRACT_RNG_H -#include SUBTRACT_RNG_H -using namespace __gnu_cxx; +#include FUNCTIONAL_H #endif #ifdef _WIN32 @@ -92,7 +84,7 @@ static void (*get_rand_long_long)(uint64_t&)=_set_up_rand_long_long; static void _set_up_rand_long_long(uint64_t &x) { #ifdef _DEBUG - synfig::info("Starting up GUID system..."); + // synfig::info("Starting up GUID system..."); #endif _a=GUID_RNG(time(0)+clock()); _b=GUID_RNG(clock()); @@ -130,7 +122,7 @@ static void (*get_rand_long_long)(uint64_t&)=_set_up_rand_long_long; static void _set_up_rand_long_long(uint64_t &x) { #ifdef _DEBUG - synfig::info("Starting up GUID system..."); + // synfig::info("Starting up GUID system..."); #endif rand_fd=open("/dev/urandom",O_RDONLY); get_rand_long_long=_get_rand_long_long; @@ -155,20 +147,31 @@ synfig::GUID synfig::GUID::hasher(const String& str) { #ifdef HASH_MAP_H - hash string_hash_; - const unsigned int seed( - string_hash_( - str.c_str() - ) - ); -#else - const unsigned int seed(0x3B642879); - for(int i=0;i string_hash_; + const unsigned int seed(string_hash_(str)); +# else // FUNCTIONAL_HASH_ON_STRING + HASH_MAP_NAMESPACE::hash string_hash_; + const unsigned int seed(string_hash_(str.c_str())); +# endif // FUNCTIONAL_HASH_ON_STRING +#else // HASH_MAP_H + unsigned int seed(0x3B642879); + for(unsigned int i=0;i>(32-(i%24)))^(seed<<(i%24)) + seed^=(seed*str[i])*i; + seed=(seed>>(32-(i%24)))^(seed<<(i%24)); } -#endif +#endif // HASH_MAP_H GUID_RNG random(seed); GUID ret(0);