| Index: grit/extern/FP.py
 | 
| ===================================================================
 | 
| --- grit/extern/FP.py	(revision 0)
 | 
| +++ grit/extern/FP.py	(revision 0)
 | 
| @@ -0,0 +1,34 @@
 | 
| +#!/usr/bin/python
 | 
| +# Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
 | 
| +# Use of this source code is governed by a BSD-style license that can be
 | 
| +# found in the LICENSE file.
 | 
| +
 | 
| +try:
 | 
| +  import hashlib
 | 
| +  _new_md5 = hashlib.md5
 | 
| +except ImportError:
 | 
| +  import md5
 | 
| +  _new_md5 = md5.new
 | 
| +
 | 
| +"""64-bit fingerprint support for strings.
 | 
| +
 | 
| +Usage:
 | 
| +    from extern import FP
 | 
| +    print 'Fingerprint is %ld' % FP.FingerPrint('Hello world!')
 | 
| +"""
 | 
| +
 | 
| +
 | 
| +def UnsignedFingerPrint(str, encoding='utf-8'):
 | 
| +  """Generate a 64-bit fingerprint by taking the first half of the md5
 | 
| +  of the string."""
 | 
| +  hex128 = _new_md5(str).hexdigest()
 | 
| +  int64 = long(hex128[:16], 16)
 | 
| +  return int64
 | 
| +
 | 
| +def FingerPrint(str, encoding='utf-8'):
 | 
| +  fp = UnsignedFingerPrint(str, encoding=encoding)
 | 
| +  # interpret fingerprint as signed longs
 | 
| +  if fp & 0x8000000000000000L:
 | 
| +    fp = - ((~fp & 0xFFFFFFFFFFFFFFFFL) + 1)
 | 
| +  return fp
 | 
| +
 | 
| 
 | 
| Property changes on: grit/extern/FP.py
 | 
| ___________________________________________________________________
 | 
| Added: svn:eol-style
 | 
|    + LF
 | 
| 
 | 
| 
 |