[complement-svn] SF.net SVN: complement: [1404] trunk/complement/explore/include/mt/uid.h
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2006-11-24 10:15:26
|
Revision: 1404 http://svn.sourceforge.net/complement/?rev=1404&view=rev Author: complement Date: 2006-11-24 02:15:25 -0800 (Fri, 24 Nov 2006) Log Message: ----------- use int64_t to reduce comparisons Modified Paths: -------------- trunk/complement/explore/include/mt/uid.h Modified: trunk/complement/explore/include/mt/uid.h =================================================================== --- trunk/complement/explore/include/mt/uid.h 2006-11-24 10:14:24 UTC (rev 1403) +++ trunk/complement/explore/include/mt/uid.h 2006-11-24 10:15:25 UTC (rev 1404) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <06/11/23 16:51:52 ptr> +// -*- C++ -*- Time-stamp: <06/11/23 23:34:55 ptr> /* * Copyright (c) 2006 @@ -16,6 +16,7 @@ #endif #include <string> +// #include <algorithm> #include <stdint.h> namespace xmt { @@ -25,6 +26,7 @@ union { uint8_t b[16]; uint32_t i[4]; + uint64_t l[2]; } u; @@ -33,19 +35,29 @@ uuid_type( const uuid_type& uid ) { - u.i[0] = uid.u.i[0]; - u.i[1] = uid.u.i[1]; - u.i[2] = uid.u.i[2]; - u.i[3] = uid.u.i[3]; + // u.i[0] = uid.u.i[0]; u.i[1] = uid.u.i[1]; + // u.i[2] = uid.u.i[2]; u.i[3] = uid.u.i[3]; + u.l[0] = uid.u.l[0]; u.l[1] = uid.u.l[1]; } - bool operator ==( const uuid_type& uid ) - { return u.i[0] == uid.u.i[0] && u.i[1] == uid.u.i[1] && u.i[2] == uid.u.i[2] && u.i[3] == uid.u.i[3]; } + bool operator ==( const uuid_type& uid ) const + { + // return u.i[0] == uid.u.i[0] && u.i[1] == uid.u.i[1] && u.i[2] == uid.u.i[2] && u.i[3] == uid.u.i[3]; + return u.l[0] == uid.u.l[0] && u.l[1] == uid.u.l[1]; + } + + bool operator !=( const uuid_type& uid ) const + { + // return u.i[0] != uid.u.i[0] || u.i[1] != uid.u.i[1] || u.i[2] != uid.u.i[2] || u.i[3] != uid.u.i[3]; + return u.l[0] != uid.u.l[0] || u.l[1] != uid.u.l[1]; + } - bool operator !=( const uuid_type& uid ) - { return u.i[0] != uid.u.i[0] || u.i[1] != uid.u.i[1] || u.i[2] != uid.u.i[2] || u.i[3] != uid.u.i[3]; } - + bool operator <( const uuid_type& uid ) const + { + // return std::lexicographical_compare( u.i, u.i + 4, uid.u.i, uid.u.i + 4 ); + return u.l < uid.u.l ? true : u.l > uid.u.l ? false : (u.l[1] < uid.u.l[1]); + } }; const std::string& hostid_str(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |