12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #ifndef __NDE_VFS_H
- #define __NDE_VFS_H
- #include <foundation/types.h>
- #include <stdio.h>
- //#define NDE_ALLOW_NONCACHED
- /*
- #ifdef NDE_ALLOW_NONCACHED
- #ifndef NDE_NOWIN32FILEIO
- #error NDE_ALLOW_NONCACHED at least for now requires NDE_NOWIN32FILEIO
- #endif
- #endif
- */
- #define VFILE_INC 65536
- #define VFS_READ 1
- #define VFS_WRITE 2
- #define VFS_SEEKEOF 4
- #define VFS_CREATE 8
- #define VFS_NEWCONTENT 16
- #define VFS_MUSTEXIST 32
- typedef struct {
- uint8_t *data;
- unsigned long ptr;
- unsigned long filesize;
- unsigned long maxsize;
- char *filename;
- char mode;
- int cached;
- int dirty;
- #ifdef NDE_ALLOW_NONCACHED
- FILE *rfile;
- #endif
- FILE *lockFile;
- char lockname[1024];
- int locks;
- } VFILE;
- #ifdef __cplusplus
- extern "C" {
- #endif
- VFILE *Vfnew(const char *fl, const char *mode, int Cached);
- VFILE *Vfopen(VFILE *f, const char *fl, const char *mode, int Cached);
- size_t Vfread(void *ptr, size_t size, VFILE *buf);
- void Vfseek(VFILE *fl, long i, int whence);
- unsigned long Vftell(VFILE *fl);
- void Vfclose(VFILE *fl);
- void Vfdestroy(VFILE *fl); // benski> TODO:
- void Vfwrite(const void *ptr, size_t size, VFILE *f);
- int Vfeof(VFILE *fl);
- int Vsync(VFILE *fl); // 1 on error updating
- int Vflock(VFILE *fl, bool is_sync=true); // returns 0 on failure
- void Vfunlock(VFILE *fl, bool is_sync=true);
- #ifdef __cplusplus
- }
- #endif
- #endif
|