00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _SGSTREAM_HXX
00028 #define _SGSTREAM_HXX
00029
00030 #ifndef __cplusplus
00031 # error This library requires C++
00032 #endif
00033
00034 #include <simgear/compiler.h>
00035
00036 # include <istream>
00037
00038 #include <string>
00039
00040 #include <simgear/misc/zfstream.hxx>
00041
00045 class sg_gzifstream : private gzifstream_base, public std::istream
00046 {
00047 public:
00049 sg_gzifstream();
00050
00057 sg_gzifstream( const std::string& name,
00058 ios_openmode io_mode = ios_in | ios_binary );
00059
00065 sg_gzifstream( int fd, ios_openmode io_mode = ios_in|ios_binary );
00066
00072 void open( const std::string& name,
00073 ios_openmode io_mode = ios_in|ios_binary );
00074
00080 void attach( int fd, ios_openmode io_mode = ios_in|ios_binary );
00081
00085 void close() { gzbuf.close(); }
00086
00088 bool is_open() { return gzbuf.is_open(); }
00089
00090 private:
00091
00092 sg_gzifstream( const sg_gzifstream& );
00093 void operator= ( const sg_gzifstream& );
00094 };
00095
00101 std::istream& skipeol( std::istream& in );
00102
00108 std::istream& skipws( std::istream& in );
00109
00116 std::istream& skipcomment( std::istream& in );
00117
00118
00119 #endif
00120