5f64612e1da2727a37faeed02a4e6c85606e5ca7
[supertux.git] / src / squirrel / include / sqstdio.h
1 /*      see copyright notice in squirrel.h */\r
2 #ifndef _SQSTDIO_H_\r
3 #define _SQSTDIO_H_\r
4 \r
5 #ifdef __cplusplus\r
6 \r
7 #define SQSTD_STREAM_TYPE_TAG 0x80000000\r
8 \r
9 struct SQStream {\r
10         virtual ~SQStream() { };\r
11         virtual SQInteger Read(void *buffer, SQInteger size) = 0;\r
12         virtual SQInteger Write(void *buffer, SQInteger size) = 0;\r
13         virtual SQInteger Flush() = 0;\r
14         virtual SQInteger Tell() = 0;\r
15         virtual SQInteger Len() = 0;\r
16         virtual SQInteger Seek(SQInteger offset, SQInteger origin) = 0;\r
17         virtual bool IsValid() = 0;\r
18         virtual bool EOS() = 0;\r
19 };\r
20 \r
21 extern "C" {\r
22 #endif\r
23 \r
24 #define SQ_SEEK_CUR 0\r
25 #define SQ_SEEK_END 1\r
26 #define SQ_SEEK_SET 2\r
27 \r
28 typedef void* SQFILE;\r
29 \r
30 SQUIRREL_API SQFILE sqstd_fopen(const SQChar *,const SQChar *);\r
31 SQUIRREL_API SQInteger sqstd_fread(SQUserPointer, SQInteger, SQInteger, SQFILE);\r
32 SQUIRREL_API SQInteger sqstd_fwrite(const SQUserPointer, SQInteger, SQInteger, SQFILE);\r
33 SQUIRREL_API SQInteger sqstd_fseek(SQFILE , SQInteger , SQInteger);\r
34 SQUIRREL_API SQInteger sqstd_ftell(SQFILE);\r
35 SQUIRREL_API SQInteger sqstd_fflush(SQFILE);\r
36 SQUIRREL_API SQInteger sqstd_fclose(SQFILE);\r
37 SQUIRREL_API SQInteger sqstd_feof(SQFILE);\r
38 \r
39 SQUIRREL_API SQRESULT sqstd_createfile(HSQUIRRELVM v, SQFILE file,SQBool own);\r
40 SQUIRREL_API SQRESULT sqstd_getfile(HSQUIRRELVM v, SQInteger idx, SQFILE *file);\r
41 \r
42 //compiler helpers\r
43 SQUIRREL_API SQRESULT sqstd_loadfile(HSQUIRRELVM v,const SQChar *filename,SQBool printerror);\r
44 SQUIRREL_API SQRESULT sqstd_dofile(HSQUIRRELVM v,const SQChar *filename,SQBool retval,SQBool printerror);\r
45 SQUIRREL_API SQRESULT sqstd_writeclosuretofile(HSQUIRRELVM v,const SQChar *filename);\r
46 \r
47 SQUIRREL_API SQRESULT sqstd_register_iolib(HSQUIRRELVM v);\r
48 \r
49 #ifdef __cplusplus\r
50 } /*extern "C"*/\r
51 #endif\r
52 \r
53 #endif /*_SQSTDIO_H_*/\r
54 \r