95 lines
2.8 KiB
C++
95 lines
2.8 KiB
C++
// Copyright (C) 2003 Davis E. King (davis@dlib.net)
|
|
// License: Boost Software License See LICENSE.txt for the full license.
|
|
#undef DLIB_COMPRESS_STREAM_KERNEl_ABSTRACT_
|
|
#ifdef DLIB_COMPRESS_STREAM_KERNEl_ABSTRACT_
|
|
|
|
#include "../algs.h"
|
|
#include <iosfwd>
|
|
|
|
namespace dlib
|
|
{
|
|
|
|
class compress_stream
|
|
{
|
|
/*!
|
|
INITIAL VALUE
|
|
This object does not have any state associated with it.
|
|
|
|
WHAT THIS OBJECT REPRESENTS
|
|
This object consists of the two functions compress and decompress.
|
|
These functions allow you to compress and decompress data.
|
|
!*/
|
|
|
|
public:
|
|
|
|
class decompression_error : public dlib::error {};
|
|
|
|
compress_stream (
|
|
);
|
|
/*!
|
|
ensures
|
|
- #*this is properly initialized
|
|
throws
|
|
- std::bad_alloc
|
|
!*/
|
|
|
|
virtual ~compress_stream (
|
|
);
|
|
/*!
|
|
ensures
|
|
- all memory associated with *this has been released
|
|
!*/
|
|
|
|
|
|
void compress (
|
|
std::istream& in,
|
|
std::ostream& out
|
|
) const;
|
|
/*!
|
|
ensures
|
|
- reads all data from in (until EOF is reached) and compresses it
|
|
and writes it to out
|
|
throws
|
|
- std::ios_base::failure
|
|
if there was a problem writing to out then this exception will
|
|
be thrown.
|
|
- any other exception
|
|
this exception may be thrown if there is any other problem
|
|
!*/
|
|
|
|
|
|
void decompress (
|
|
std::istream& in,
|
|
std::ostream& out
|
|
) const;
|
|
/*!
|
|
ensures
|
|
- reads data from in, decompresses it and writes it to out. note that
|
|
it stops reading data from in when it encounters the end of the
|
|
compressed data, not when it encounters EOF.
|
|
throws
|
|
- std::ios_base::failure
|
|
if there was a problem writing to out then this exception will
|
|
be thrown.
|
|
- decompression_error
|
|
if an error was detected in the compressed data that prevented
|
|
it from being correctly decompressed then this exception is
|
|
thrown.
|
|
- any other exception
|
|
this exception may be thrown if there is any other problem
|
|
!*/
|
|
|
|
|
|
private:
|
|
|
|
// restricted functions
|
|
compress_stream(compress_stream&); // copy constructor
|
|
compress_stream& operator=(compress_stream&); // assignment operator
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif // DLIB_COMPRESS_STREAM_KERNEl_ABSTRACT_
|
|
|