LCOV - code coverage report
Current view: top level - src/leveldb/util - crc32c.h (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 4 4 100.0 %
Date: 2015-10-12 22:39:14 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file. See the AUTHORS file for names of contributors.
       4             : 
       5             : #ifndef STORAGE_LEVELDB_UTIL_CRC32C_H_
       6             : #define STORAGE_LEVELDB_UTIL_CRC32C_H_
       7             : 
       8             : #include <stddef.h>
       9             : #include <stdint.h>
      10             : 
      11             : namespace leveldb {
      12             : namespace crc32c {
      13             : 
      14             : // Return the crc32c of concat(A, data[0,n-1]) where init_crc is the
      15             : // crc32c of some string A.  Extend() is often used to maintain the
      16             : // crc32c of a stream of data.
      17             : extern uint32_t Extend(uint32_t init_crc, const char* data, size_t n);
      18             : 
      19             : // Return the crc32c of data[0,n-1]
      20             : inline uint32_t Value(const char* data, size_t n) {
      21       17506 :   return Extend(0, data, n);
      22             : }
      23             : 
      24             : static const uint32_t kMaskDelta = 0xa282ead8ul;
      25             : 
      26             : // Return a masked representation of crc.
      27             : //
      28             : // Motivation: it is problematic to compute the CRC of a string that
      29             : // contains embedded CRCs.  Therefore we recommend that CRCs stored
      30             : // somewhere (e.g., in files) should be masked before being stored.
      31             : inline uint32_t Mask(uint32_t crc) {
      32             :   // Rotate right by 15 bits and add a constant.
      33        2090 :   return ((crc >> 15) | (crc << 17)) + kMaskDelta;
      34             : }
      35             : 
      36             : // Return the crc whose masked representation is masked_crc.
      37             : inline uint32_t Unmask(uint32_t masked_crc) {
      38       13538 :   uint32_t rot = masked_crc - kMaskDelta;
      39       13538 :   return ((rot >> 17) | (rot << 15));
      40             : }
      41             : 
      42             : }  // namespace crc32c
      43             : }  // namespace leveldb
      44             : 
      45             : #endif  // STORAGE_LEVELDB_UTIL_CRC32C_H_

Generated by: LCOV version 1.11