1ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov//===-- llvm/Support/Compression.h ---Compression----------------*- C++ -*-===// 2ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov// 3ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov// The LLVM Compiler Infrastructure 4ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov// 5ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov// This file is distributed under the University of Illinois Open Source 6ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov// License. See LICENSE.TXT for details. 7ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov// 8ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov//===----------------------------------------------------------------------===// 9ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov// 10ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov// This file contains basic functions for compression/uncompression. 11ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov// 12ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov//===----------------------------------------------------------------------===// 13ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 14ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov#ifndef LLVM_SUPPORT_COMPRESSION_H 15ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov#define LLVM_SUPPORT_COMPRESSION_H 16ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 17ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov#include "llvm/Support/DataTypes.h" 1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include <memory> 19dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "llvm/ADT/SmallVector.h" 20ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 21ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovnamespace llvm { 22ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 23ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovclass StringRef; 24ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 25ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovnamespace zlib { 26ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 27ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovenum CompressionLevel { 28ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov NoCompression, 29ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov DefaultCompression, 30ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov BestSpeedCompression, 31ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov BestSizeCompression 32ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov}; 33ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 34ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovenum Status { 35ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov StatusOK, 3636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines StatusUnsupported, // zlib is unavailable 3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines StatusOutOfMemory, // there was not enough memory 3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines StatusBufferTooShort, // there was not enough room in the output buffer 3936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines StatusInvalidArg, // invalid input parameter 4036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines StatusInvalidData // data was corrupted or incomplete 41ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov}; 42ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 43ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonovbool isAvailable(); 44ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 45dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesStatus compress(StringRef InputBuffer, SmallVectorImpl<char> &CompressedBuffer, 46ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov CompressionLevel Level = DefaultCompression); 47ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 48ee03c949b85036b68c261dcc27dca064ee7e525dAlexey SamsonovStatus uncompress(StringRef InputBuffer, 49dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines SmallVectorImpl<char> &UncompressedBuffer, 50ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov size_t UncompressedSize); 51ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 52ef7aefc53bf24214f489bf9e4100bcff45f7b12aAlexey Samsonovuint32_t crc32(StringRef Buffer); 53ef7aefc53bf24214f489bf9e4100bcff45f7b12aAlexey Samsonov 54ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov} // End of namespace zlib 55ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 56ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov} // End of namespace llvm 57ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 58ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov#endif 59ee03c949b85036b68c261dcc27dca064ee7e525dAlexey Samsonov 60