Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef ESBTL_COMPRESSED_IFSTREAM_H
00036 #define ESBTL_COMPRESSED_IFSTREAM_H
00037
00038 #include <ESBTL/internal/compressed_ifstream.h>
00039 #include <boost/iostreams/filtering_stream.hpp>
00040 #include <boost/iostreams/filter/bzip2.hpp>
00041 #include <boost/iostreams/filter/gzip.hpp>
00042 #include <boost/iostreams/filter/zlib.hpp>
00043
00045 namespace ESBTL{
00046 namespace internal{
00047 template<>
00048 class Ifstream_compress<BZIP2>
00049 {
00050 boost::iostreams::filtering_stream<boost::iostreams::input> input_;
00051 public:
00052 boost::iostreams::filtering_stream<boost::iostreams::input>&
00053 get(std::ifstream& input){
00054 input_.push(boost::iostreams::bzip2_decompressor());
00055 input_.push(input);
00056 return input_;
00057 }
00058 };
00059
00060 template<>
00061 class Ifstream_compress<GZIP>
00062 {
00063 boost::iostreams::filtering_stream<boost::iostreams::input> input_;
00064 public:
00065 boost::iostreams::filtering_stream<boost::iostreams::input>&
00066 get(std::ifstream& input){
00067 input_.push(boost::iostreams::gzip_decompressor());
00068 input_.push(input);
00069 return input_;
00070 }
00071 };
00072
00073 } }
00075 #endif //ESBTL_COMPRESSED_IFSTREAM_H