OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [zlib/] [contrib/] [iostream/] [zfstream.h] - Blame information for rev 745

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 745 jeremybenn
 
2
#ifndef zfstream_h
3
#define zfstream_h
4
 
5
#include <fstream.h>
6
#include "zlib.h"
7
 
8
class gzfilebuf : public streambuf {
9
 
10
public:
11
 
12
  gzfilebuf( );
13
  virtual ~gzfilebuf();
14
 
15
  gzfilebuf *open( const char *name, int io_mode );
16
  gzfilebuf *attach( int file_descriptor, int io_mode );
17
  gzfilebuf *close();
18
 
19
  int setcompressionlevel( int comp_level );
20
  int setcompressionstrategy( int comp_strategy );
21
 
22
  inline int is_open() const { return (file !=NULL); }
23
 
24
  virtual streampos seekoff( streamoff, ios::seek_dir, int );
25
 
26
  virtual int sync();
27
 
28
protected:
29
 
30
  virtual int underflow();
31
  virtual int overflow( int = EOF );
32
 
33
private:
34
 
35
  gzFile file;
36
  short mode;
37
  short own_file_descriptor;
38
 
39
  int flushbuf();
40
  int fillbuf();
41
 
42
};
43
 
44
class gzfilestream_common : virtual public ios {
45
 
46
  friend class gzifstream;
47
  friend class gzofstream;
48
  friend gzofstream &setcompressionlevel( gzofstream &, int );
49
  friend gzofstream &setcompressionstrategy( gzofstream &, int );
50
 
51
public:
52
  virtual ~gzfilestream_common();
53
 
54
  void attach( int fd, int io_mode );
55
  void open( const char *name, int io_mode );
56
  void close();
57
 
58
protected:
59
  gzfilestream_common();
60
 
61
private:
62
  gzfilebuf *rdbuf();
63
 
64
  gzfilebuf buffer;
65
 
66
};
67
 
68
class gzifstream : public gzfilestream_common, public istream {
69
 
70
public:
71
 
72
  gzifstream();
73
  gzifstream( const char *name, int io_mode = ios::in );
74
  gzifstream( int fd, int io_mode = ios::in );
75
 
76
  virtual ~gzifstream();
77
 
78
};
79
 
80
class gzofstream : public gzfilestream_common, public ostream {
81
 
82
public:
83
 
84
  gzofstream();
85
  gzofstream( const char *name, int io_mode = ios::out );
86
  gzofstream( int fd, int io_mode = ios::out );
87
 
88
  virtual ~gzofstream();
89
 
90
};
91
 
92
template<class T> class gzomanip {
93
  friend gzofstream &operator<<(gzofstream &, const gzomanip<T> &);
94
public:
95
  gzomanip(gzofstream &(*f)(gzofstream &, T), T v) : func(f), val(v) { }
96
private:
97
  gzofstream &(*func)(gzofstream &, T);
98
  T val;
99
};
100
 
101
template<class T> gzofstream &operator<<(gzofstream &s, const gzomanip<T> &m)
102
{
103
  return (*m.func)(s, m.val);
104
}
105
 
106
inline gzofstream &setcompressionlevel( gzofstream &s, int l )
107
{
108
  (s.rdbuf())->setcompressionlevel(l);
109
  return s;
110
}
111
 
112
inline gzofstream &setcompressionstrategy( gzofstream &s, int l )
113
{
114
  (s.rdbuf())->setcompressionstrategy(l);
115
  return s;
116
}
117
 
118
inline gzomanip<int> setcompressionlevel(int l)
119
{
120
  return gzomanip<int>(&setcompressionlevel,l);
121
}
122
 
123
inline gzomanip<int> setcompressionstrategy(int l)
124
{
125
  return gzomanip<int>(&setcompressionstrategy,l);
126
}
127
 
128
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.