xref: /aosp_15_r20/external/bsdiff/include/bsdiff/decompressor_interface.h (revision a3a45f308bd90ef1a6e6a5e8fb92fe449b895909)
1  // Copyright 2017 The Chromium OS 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.
4  
5  #ifndef _BSDIFF_DECOMPRESSOR_INTERFACE_H_
6  #define _BSDIFF_DECOMPRESSOR_INTERFACE_H_
7  
8  #include <stddef.h>
9  #include <stdint.h>
10  
11  #include <memory>
12  
13  #include "bsdiff/constants.h"
14  
15  namespace bsdiff {
16  
17  class DecompressorInterface {
18   public:
~DecompressorInterface()19    virtual ~DecompressorInterface() {}
20  
21    // Set the buffer starting from |input_data| with length |size| as the input
22    // compressed stream. This buffer is owned by the caller and should stay
23    // valid until the Close() function is called.
24    virtual bool SetInputData(const uint8_t* input_data, size_t size) = 0;
25  
26    // Decompress the stream and output |bytes_to_output| bytes of data to
27    // |output_data|. Returns false if not all bytes_to_output can be
28    // decompressed from the stream due to a decompressor error or EOF.
29    virtual bool Read(uint8_t* output_data, size_t bytes_to_output) = 0;
30  
31    // Close the decompression stream.
32    virtual bool Close() = 0;
33  };
34  
35  std::unique_ptr<DecompressorInterface> CreateDecompressor(CompressorType type);
36  
37  }  // namespace bsdiff
38  #endif  // _BSDIFF_DECOMPRESSOR_INTERFACE_H_
39