Home | History | Annotate | Download | only in Support
      1 //===-- llvm/Support/Compression.h ---Compression----------------*- 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 basic functions for compression/uncompression.
     11 //
     12 //===----------------------------------------------------------------------===//
     13 
     14 #ifndef LLVM_SUPPORT_COMPRESSION_H
     15 #define LLVM_SUPPORT_COMPRESSION_H
     16 
     17 #include "llvm/Support/DataTypes.h"
     18 #include <memory>
     19 #include "llvm/ADT/SmallVector.h"
     20 
     21 namespace llvm {
     22 
     23 class StringRef;
     24 
     25 namespace zlib {
     26 
     27 enum CompressionLevel {
     28   NoCompression,
     29   DefaultCompression,
     30   BestSpeedCompression,
     31   BestSizeCompression
     32 };
     33 
     34 enum Status {
     35   StatusOK,
     36   StatusUnsupported,    // zlib is unavailable
     37   StatusOutOfMemory,    // there was not enough memory
     38   StatusBufferTooShort, // there was not enough room in the output buffer
     39   StatusInvalidArg,     // invalid input parameter
     40   StatusInvalidData     // data was corrupted or incomplete
     41 };
     42 
     43 bool isAvailable();
     44 
     45 Status compress(StringRef InputBuffer, SmallVectorImpl<char> &CompressedBuffer,
     46                 CompressionLevel Level = DefaultCompression);
     47 
     48 Status uncompress(StringRef InputBuffer,
     49                   SmallVectorImpl<char> &UncompressedBuffer,
     50                   size_t UncompressedSize);
     51 
     52 uint32_t crc32(StringRef Buffer);
     53 
     54 }  // End of namespace zlib
     55 
     56 } // End of namespace llvm
     57 
     58 #endif
     59 
     60