e2830054f70a1a420b1ffcef25da4c4e0ead58ff
[bertos.git] / mware / kfile.h
1 /*!
2  * \file
3  * <!--
4  * Copyright 2004 Develer S.r.l. (http://www.develer.com/)
5  * Copyright 1999, 2000, 2001, 2003 Bernardo Innocenti <bernie@develer.com>
6  * This file is part of DevLib - See devlib/README for information.
7  * -->
8  *
9  * \brief Virtual KFile I/O interface.
10  *
11  * \version $Id$
12  * \author Bernardo Innocenti <bernie@develer.com>
13  */
14
15 /*#*
16  *#* $Log$
17  *#* Revision 1.3  2004/12/31 16:43:23  bernie
18  *#* Move seek function last in VT.
19  *#*
20  *#* Revision 1.2  2004/08/25 14:12:09  rasky
21  *#* Aggiornato il comment block dei log RCS
22  *#*
23  *#* Revision 1.1  2004/08/04 02:40:25  bernie
24  *#* Add virtual file I/O interface.
25  *#*
26  *#*/
27 #ifndef MWARE_KFILE_H
28 #define MWARE_KFILE_H
29
30 #include <compiler.h>
31
32 /* fwd decl */
33 struct _KFile;
34
35 typedef size_t  (*ReadFunc_t)   (struct _KFile *fd, char *buf, size_t size);
36 typedef size_t  (*WriteFunc_t)  (struct _KFile *fd, const char *buf, size_t size);
37 typedef bool    (*SeekFunc_t)   (struct _KFile *fd, int32_t offset);
38 typedef bool    (*OpenFunc_t)   (struct _KFile *fd, const char *name, int mode);
39 typedef bool    (*CloseFunc_t)  (struct _KFile *fd);
40
41
42 /* Context data for callback functions which operate on
43  * pseudo files.
44  */
45 typedef struct _KFile
46 {
47         ReadFunc_t              read;
48         WriteFunc_t             write;
49         OpenFunc_t              open;
50         CloseFunc_t             close;
51         SeekFunc_t              seek;
52
53         /* NOTE: these must _NOT_ be size_t on 16bit CPUs! */
54         uint32_t                SeekPos;
55         uint32_t                Size;
56 } KFile;
57
58 #endif /* MWARE_KFILE_H */