LLVM
4.0.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
llvm.src
include
llvm
Support
JamCRC.h
Go to the documentation of this file.
1
//===-- llvm/Support/JamCRC.h - Cyclic Redundancy Check ---------*- C++ -*-===//
2
//
3
// The LLVM Compiler Infrastructure
4
//
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
7
//
8
//===----------------------------------------------------------------------===//
9
//
10
// This file contains an implementation of JamCRC.
11
//
12
// We will use the "Rocksoft^tm Model CRC Algorithm" to describe the properties
13
// of this CRC:
14
// Width : 32
15
// Poly : 04C11DB7
16
// Init : FFFFFFFF
17
// RefIn : True
18
// RefOut : True
19
// XorOut : 00000000
20
// Check : 340BC6D9 (result of CRC for "123456789")
21
//
22
// N.B. We permit flexibility of the "Init" value. Some consumers of this need
23
// it to be zero.
24
//
25
//===----------------------------------------------------------------------===//
26
27
#ifndef LLVM_SUPPORT_JAMCRC_H
28
#define LLVM_SUPPORT_JAMCRC_H
29
30
#include "llvm/Support/DataTypes.h"
31
32
namespace
llvm {
33
template
<
typename
T>
class
ArrayRef;
34
35
class
JamCRC
{
36
public
:
37
JamCRC
(
uint32_t
Init
= 0xFFFFFFFFU) : CRC(
Init
) {}
38
39
// \brief Update the CRC calculation with Data.
40
void
update
(
ArrayRef<char>
Data);
41
42
uint32_t
getCRC
()
const
{
return
CRC; }
43
44
private
:
45
uint32_t
CRC;
46
};
47
}
// End of namespace llvm
48
49
#endif
llvm::JamCRC::JamCRC
JamCRC(uint32_t Init=0xFFFFFFFFU)
Definition:
JamCRC.h:37
llvm::ArrayRef
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
Definition:
APInt.h:33
uint32_t
llvm::JamCRC
Definition:
JamCRC.h:35
llvm::JamCRC::getCRC
uint32_t getCRC() const
Definition:
JamCRC.h:42
llvm::Init
Definition:
Record.h:259
llvm::JamCRC::update
void update(ArrayRef< char > Data)
Definition:
JamCRC.cpp:92
Generated on Wed Mar 8 2017 17:11:24 for LLVM by
1.8.6