// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef _BSDIFF_BZ2_DECOMPRESSOR_H_
#define _BSDIFF_BZ2_DECOMPRESSOR_H_

#include <bzlib.h>

#include "bsdiff/decompressor_interface.h"

namespace bsdiff {

class BZ2Decompressor : public DecompressorInterface {
 public:
  BZ2Decompressor() = default;
  ~BZ2Decompressor();

  bool SetInputData(const uint8_t* input_data, size_t size) override;

  bool Read(uint8_t* output_data, size_t bytes_to_output) override;

  bool Close() override;

 private:
  // The low-level bzip2 stream.
  bz_stream stream_;

  // Whether the stream_ is initialized.
  bool stream_initialized_{false};
};

}  // namespace bsdiff

#endif
