aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/scicore/exe_dec.h
blob: 45c1f58382f129903aabb8f1e41f2505e0dba2af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/* ScummVM - Graphic Adventure Engine
 *
 * ScummVM is the legal property of its developers, whose names
 * are too numerous to list here. Please refer to the COPYRIGHT
 * file distributed with this source distribution.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 * $URL$
 * $Id$
 *
 */

#ifndef _SCI_EXE_DEC_H_
#define _SCI_EXE_DEC_H_

typedef struct _exe_handle exe_handle_t;

typedef struct _exe_decompressor {
	const char *name; /* Decompressor name. Unique identifier, should consist
	            ** of lower-case (where applicable) alphanumerics
	            */

	exe_handle_t * (*open)(const char *filename);
	/* Opens an executable file
	** Parameters: (const char *) filename: Filename of executable to open.
	** Returns   : (exe_handle_t *) Decompressor file handle, or NULL on
	**                              error.
	** This function will verify that the file can be handled by the
	** decompressor. If this is not the case the function will fail.
	*/

	int (*read)(exe_handle_t *handle, void *buf, int count);
	/* Reads from executable file
	** Parameters: (exe_handle_t *) handle: Decompressor file handle.
	**             (void *) buf: Buffer to store decompressed data.
	**             (int) count: Size of decompressed data requested, in
	**                          bytes.
	** Returns   : (int) Number of bytes of decompressed data that was
	**                   stored in buf. If this value is less than count
	**                   an error has occured, or end-of-file was
	**                   reached.
	*/

	void (*close)(exe_handle_t *handle);
	/* Closes a decompressor file handle.
	** Parameters: (exe_handle_t *) handle: Decompressor file handle.
	** Returns   : (void)
	*/
} exe_decompressor_t;

#endif /* !_SCI_EXE_DEC_H_ */