Mercurial > projects > ldc
comparison tango/tango/io/compress/c/bzlib.d @ 132:1700239cab2e trunk
[svn r136] MAJOR UNSTABLE UPDATE!!!
Initial commit after moving to Tango instead of Phobos.
Lots of bugfixes...
This build is not suitable for most things.
author | lindquist |
---|---|
date | Fri, 11 Jan 2008 17:57:40 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
131:5825d48b27d1 | 132:1700239cab2e |
---|---|
1 /* Converted to D from bzlib.h by htod */ | |
2 | |
3 module tango.io.compress.c.bzlib; | |
4 | |
5 /*-------------------------------------------------------------*/ | |
6 /*--- Public header file for the library. ---*/ | |
7 /*--- bzlib.h ---*/ | |
8 /*-------------------------------------------------------------*/ | |
9 | |
10 /* ------------------------------------------------------------------ | |
11 This file is part of bzip2/libbzip2, a program and library for | |
12 lossless, block-sorting data compression. | |
13 | |
14 bzip2/libbzip2 version 1.0.4 of 20 December 2006 | |
15 Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> | |
16 | |
17 Please read the WARNING, DISCLAIMER and PATENTS sections in the | |
18 README file. | |
19 | |
20 This program is released under the terms of the license contained | |
21 in the file LICENSE. | |
22 ------------------------------------------------------------------ */ | |
23 | |
24 extern(C): | |
25 | |
26 const BZ_RUN = 0; | |
27 const BZ_FLUSH = 1; | |
28 const BZ_FINISH = 2; | |
29 | |
30 const BZ_OK = 0; | |
31 const BZ_RUN_OK = 1; | |
32 const BZ_FLUSH_OK = 2; | |
33 const BZ_FINISH_OK = 3; | |
34 const BZ_STREAM_END = 4; | |
35 const BZ_SEQUENCE_ERROR = -1; | |
36 const BZ_PARAM_ERROR = -2; | |
37 const BZ_MEM_ERROR = -3; | |
38 const BZ_DATA_ERROR = -4; | |
39 const BZ_DATA_ERROR_MAGIC = -5; | |
40 const BZ_IO_ERROR = -6; | |
41 const BZ_UNEXPECTED_EOF = -7; | |
42 const BZ_OUTBUFF_FULL = -8; | |
43 const BZ_CONFIG_ERROR = -9; | |
44 | |
45 struct bz_stream | |
46 { | |
47 ubyte *next_in; | |
48 uint avail_in; | |
49 uint total_in_lo32; | |
50 uint total_in_hi32; | |
51 ubyte *next_out; | |
52 uint avail_out; | |
53 uint total_out_lo32; | |
54 uint total_out_hi32; | |
55 void *state; | |
56 void * function(void *, int , int )bzalloc; | |
57 void function(void *, void *)bzfree; | |
58 void *opaque; | |
59 } | |
60 | |
61 import tango.stdc.stdio : FILE; | |
62 | |
63 /*-- Core (low-level) library functions --*/ | |
64 | |
65 //C BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( | |
66 //C bz_stream* strm, | |
67 //C int blockSize100k, | |
68 //C int verbosity, | |
69 //C int workFactor | |
70 //C ); | |
71 extern (Windows): | |
72 int BZ2_bzCompressInit(bz_stream *strm, int blockSize100k, int verbosity, int workFactor); | |
73 | |
74 //C BZ_EXTERN int BZ_API(BZ2_bzCompress) ( | |
75 //C bz_stream* strm, | |
76 //C int action | |
77 //C ); | |
78 int BZ2_bzCompress(bz_stream *strm, int action); | |
79 | |
80 //C BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( | |
81 //C bz_stream* strm | |
82 //C ); | |
83 int BZ2_bzCompressEnd(bz_stream *strm); | |
84 | |
85 //C BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( | |
86 //C bz_stream *strm, | |
87 //C int verbosity, | |
88 //C int small | |
89 //C ); | |
90 int BZ2_bzDecompressInit(bz_stream *strm, int verbosity, int small); | |
91 | |
92 //C BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( | |
93 //C bz_stream* strm | |
94 //C ); | |
95 int BZ2_bzDecompress(bz_stream *strm); | |
96 | |
97 //C BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( | |
98 //C bz_stream *strm | |
99 //C ); | |
100 int BZ2_bzDecompressEnd(bz_stream *strm); | |
101 | |
102 | |
103 | |
104 /*-- High(er) level library functions --*/ | |
105 | |
106 version(BZ_NO_STDIO){}else{ | |
107 | |
108 const BZ_MAX_UNUSED = 5000; | |
109 alias void BZFILE; | |
110 | |
111 //C BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( | |
112 //C int* bzerror, | |
113 //C FILE* f, | |
114 //C int verbosity, | |
115 //C int small, | |
116 //C void* unused, | |
117 //C int nUnused | |
118 //C ); | |
119 extern (Windows): | |
120 BZFILE * BZ2_bzReadOpen(int *bzerror, FILE *f, int verbosity, int small, void *unused, int nUnused); | |
121 | |
122 //C BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( | |
123 //C int* bzerror, | |
124 //C BZFILE* b | |
125 //C ); | |
126 void BZ2_bzReadClose(int *bzerror, BZFILE *b); | |
127 | |
128 //C BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( | |
129 //C int* bzerror, | |
130 //C BZFILE* b, | |
131 //C void** unused, | |
132 //C int* nUnused | |
133 //C ); | |
134 void BZ2_bzReadGetUnused(int *bzerror, BZFILE *b, void **unused, int *nUnused); | |
135 | |
136 //C BZ_EXTERN int BZ_API(BZ2_bzRead) ( | |
137 //C int* bzerror, | |
138 //C BZFILE* b, | |
139 //C void* buf, | |
140 //C int len | |
141 //C ); | |
142 int BZ2_bzRead(int *bzerror, BZFILE *b, void *buf, int len); | |
143 | |
144 //C BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( | |
145 //C int* bzerror, | |
146 //C FILE* f, | |
147 //C int blockSize100k, | |
148 //C int verbosity, | |
149 //C int workFactor | |
150 //C ); | |
151 BZFILE * BZ2_bzWriteOpen(int *bzerror, FILE *f, int blockSize100k, int verbosity, int workFactor); | |
152 | |
153 //C BZ_EXTERN void BZ_API(BZ2_bzWrite) ( | |
154 //C int* bzerror, | |
155 //C BZFILE* b, | |
156 //C void* buf, | |
157 //C int len | |
158 //C ); | |
159 void BZ2_bzWrite(int *bzerror, BZFILE *b, void *buf, int len); | |
160 | |
161 //C BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( | |
162 //C int* bzerror, | |
163 //C BZFILE* b, | |
164 //C int abandon, | |
165 //C unsigned int* nbytes_in, | |
166 //C unsigned int* nbytes_out | |
167 //C ); | |
168 void BZ2_bzWriteClose(int *bzerror, BZFILE *b, int abandon, uint *nbytes_in, uint *nbytes_out); | |
169 | |
170 //C BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( | |
171 //C int* bzerror, | |
172 //C BZFILE* b, | |
173 //C int abandon, | |
174 //C unsigned int* nbytes_in_lo32, | |
175 //C unsigned int* nbytes_in_hi32, | |
176 //C unsigned int* nbytes_out_lo32, | |
177 //C unsigned int* nbytes_out_hi32 | |
178 //C ); | |
179 void BZ2_bzWriteClose64(int *bzerror, BZFILE *b, int abandon, uint *nbytes_in_lo32, uint *nbytes_in_hi32, uint *nbytes_out_lo32, uint *nbytes_out_hi32); | |
180 | |
181 } | |
182 | |
183 /*-- Utility functions --*/ | |
184 | |
185 //C BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( | |
186 //C char* dest, | |
187 //C unsigned int* destLen, | |
188 //C char* source, | |
189 //C unsigned int sourceLen, | |
190 //C int blockSize100k, | |
191 //C int verbosity, | |
192 //C int workFactor | |
193 //C ); | |
194 int BZ2_bzBuffToBuffCompress(char *dest, uint *destLen, char *source, uint sourceLen, int blockSize100k, int verbosity, int workFactor); | |
195 | |
196 //C BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( | |
197 //C char* dest, | |
198 //C unsigned int* destLen, | |
199 //C char* source, | |
200 //C unsigned int sourceLen, | |
201 //C int small, | |
202 //C int verbosity | |
203 //C ); | |
204 int BZ2_bzBuffToBuffDecompress(char *dest, uint *destLen, char *source, uint sourceLen, int small, int verbosity); | |
205 | |
206 | |
207 /*-- | |
208 Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) | |
209 to support better zlib compatibility. | |
210 This code is not _officially_ part of libbzip2 (yet); | |
211 I haven't tested it, documented it, or considered the | |
212 threading-safeness of it. | |
213 If this code breaks, please contact both Yoshioka and me. | |
214 --*/ | |
215 | |
216 //C BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( | |
217 //C void | |
218 //C ); | |
219 char * BZ2_bzlibVersion(); | |
220 | |
221 version(BZ_NO_STDIO){}else{ | |
222 | |
223 //C BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( | |
224 //C const char *path, | |
225 //C const char *mode | |
226 //C ); | |
227 BZFILE * BZ2_bzopen(char *path, char *mode); | |
228 | |
229 //C BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( | |
230 //C int fd, | |
231 //C const char *mode | |
232 //C ); | |
233 BZFILE * BZ2_bzdopen(int fd, char *mode); | |
234 | |
235 //C BZ_EXTERN int BZ_API(BZ2_bzread) ( | |
236 //C BZFILE* b, | |
237 //C void* buf, | |
238 //C int len | |
239 //C ); | |
240 int BZ2_bzread(BZFILE *b, void *buf, int len); | |
241 | |
242 //C BZ_EXTERN int BZ_API(BZ2_bzwrite) ( | |
243 //C BZFILE* b, | |
244 //C void* buf, | |
245 //C int len | |
246 //C ); | |
247 int BZ2_bzwrite(BZFILE *b, void *buf, int len); | |
248 | |
249 //C BZ_EXTERN int BZ_API(BZ2_bzflush) ( | |
250 //C BZFILE* b | |
251 //C ); | |
252 int BZ2_bzflush(BZFILE *b); | |
253 | |
254 //C BZ_EXTERN void BZ_API(BZ2_bzclose) ( | |
255 //C BZFILE* b | |
256 //C ); | |
257 void BZ2_bzclose(BZFILE *b); | |
258 | |
259 //C BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( | |
260 //C BZFILE *b, | |
261 //C int *errnum | |
262 //C ); | |
263 char * BZ2_bzerror(BZFILE *b, int *errnum); | |
264 | |
265 } | |
266 | |
267 /*-------------------------------------------------------------*/ | |
268 /*--- end bzlib.h ---*/ | |
269 /*-------------------------------------------------------------*/ |