Add a C++11 ThreadPool implementation in LLVM
[oota-llvm.git] / include / llvm / Support / MD5.h
index 9d306993f0e94d2ad61a4d80483281b1ff49d555..f6e1e92c9fa82020862514ab2cb4977fbe671d17 100644 (file)
  * See md5.c for more information.
  */
 
-#ifndef LLVM_SYSTEM_MD5_H
-#define LLVM_SYSTEM_MD5_H
+#ifndef LLVM_SUPPORT_MD5_H
+#define LLVM_SUPPORT_MD5_H
 
+#include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/SmallString.h"
 #include "llvm/Support/DataTypes.h"
 
 namespace llvm {
 
-template <typename T> class ArrayRef;
-
 class MD5 {
   // Any 32-bit or wider unsigned integer data type will do.
   typedef uint32_t MD5_u32plus;
 
   MD5_u32plus a, b, c, d;
   MD5_u32plus hi, lo;
-  unsigned char buffer[64];
+  uint8_t buffer[64];
   MD5_u32plus block[16];
 
 public:
-  typedef unsigned char MD5Result[16];
+  typedef uint8_t MD5Result[16];
 
   MD5();
 
-  /// \brief Updates the hash for arguments provided.
-  void update(ArrayRef<unsigned char> Data);
+  /// \brief Updates the hash for the byte stream provided.
+  void update(ArrayRef<uint8_t> Data);
+
+  /// \brief Updates the hash for the StringRef provided.
+  void update(StringRef Str);
 
   /// \brief Finishes off the hash and puts the result in result.
-  void final(MD5Result &result);
+  void final(MD5Result &Result);
 
-  static void stringifyResult(MD5Result &Res, SmallString<32> &Str);
+  /// \brief Translates the bytes in \p Res to a hex string that is
+  /// deposited into \p Str. The result will be of length 32.
+  static void stringifyResult(MD5Result &Result, SmallString<32> &Str);
 
 private:
-  const unsigned char *body(ArrayRef<unsigned char> Data);
+  const uint8_t *body(ArrayRef<uint8_t> Data);
 };
 
 }