~ubuntu-branches/ubuntu/wily/luatex/wily

« back to all changes in this revision

Viewing changes to source/libs/zlib/zlib-1.2.3/contrib/iostream/zfstream.h

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Preining
  • Date: 2010-04-29 00:47:19 UTC
  • mfrom: (1.1.10 upstream)
  • Revision ID: james.westby@ubuntu.com-20100429004719-o42etkqe90n97b9e
Tags: 0.60.1-1
* new upstream release, adapt build-script patch
* disable patch: upstream-epstopdf_cc_no_xpdf_patching, included upstream
* disable patch: libpoppler-0.12, not needed anymore

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
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