/export/rook2/users/build/gfcppsancout64/product/include/gfcpp/CacheableKeys.hpp

00001 #ifndef _GEMFIRE_CACHEABLEKEYS_HPP_
00002 #define _GEMFIRE_CACHEABLEKEYS_HPP_
00003 
00004 /*=========================================================================
00005  * (c) Copyright 2002-2007, GemStone Systems, Inc. All Rights Reserved.
00006  * 1260 NW Waterhouse Ave., Suite 200,  Beaverton, OR 97006
00007  *=========================================================================
00008  */
00009 
00010 #include "gfcpp_globals.hpp"
00011 
00012 
00013 namespace gemfire
00014 {
00015   namespace serializer
00016   {
00017 
00018     template <typename TObj>
00019     inline bool equals( const TObj& x, const TObj& y )
00020     {
00021       return ( x == y );
00022     }
00023 
00024 
00025 
00026     inline uint32_t hashcode( const bool value )
00027     {
00028       if (value) return 1231;
00029       else return 1237;
00030     }
00031 
00032     inline uint32_t hashcode( const uint8_t value )
00033     {
00034       return (uint32_t)value;
00035     }
00036 
00037     inline uint32_t hashcode( const int8_t value )
00038     {
00039       return (uint32_t)value;
00040     }
00041 
00042     inline uint32_t hashcode( const uint16_t value )
00043     {
00044       return (uint32_t)value;
00045     }
00046 
00047     inline uint32_t hashcode( const int16_t value )
00048     {
00049       return (uint32_t)value;
00050     }
00051 
00052     inline uint32_t hashcode( const uint32_t value )
00053     {
00054       return value;
00055     }
00056 
00057     inline uint32_t hashcode( const int32_t value )
00058     {
00059       return (uint32_t)value;
00060     }
00061 
00062     inline uint32_t hashcode( const uint64_t value )
00063     {
00064       uint32_t hash = (uint32_t)value;
00065       hash = hash ^ (uint32_t)(value >> 32);
00066       return hash;
00067     }
00068 
00069     inline uint32_t hashcode( const int64_t value )
00070     {
00071       uint32_t hash = (uint32_t)value;
00072       hash = hash ^ (uint32_t)(value >> 32);
00073       return hash;
00074     }
00075 
00076     inline uint32_t hashcode( const float value )
00077     {
00078       union float_uint32_t
00079       {
00080           float f;
00081           uint32_t u;
00082       } v;
00083       v.f = value;
00084       return v.u;
00085     }
00086 
00087     inline uint32_t hashcode( const double value )
00088     {
00089       union double_uint64_t
00090       {
00091           double d;
00092           uint64_t u;
00093       } v;
00094       v.d = value;
00095       return hashcode(v.u);
00096     }
00097 
00098   }
00099 }
00100 
00101 
00102 #endif // _GEMFIRE_CACHEABLEKEYS_HPP_

GemFire C++ Cache API Documentation