#ifndef FSABSTRACT_H
#define FSABSTRACT_H
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
class vfs_abstract {
protected:
vfs_abstract * prev;
vfs_abstract * next;
void * dev;
public:
/* File I/O */
virtual int vfs_open(FILE *,int flags,...) = 0;
virtual int vfs_close(FILE *) = 0;
virtual size_t vfs_read(FILE *,void *,size_t,size_t) = 0;
virtual size_t vfs_write(FILE *,void *,size_t,size_t) = 0;
/* Dir I/O */
virtual int vfs_opendir(DIR *,const char *) = 0x0;
virtual int vfs_closedir(DIR *) = 0x0;
virtual int vfs_mkdir(const char *,mode_t) = 0;
virtual int vfs_readdir(DIR *,struct dirent *) = 0;
/* FS Functions */
virtual int vfs_init(void) = 0;
virtual int vfs_format(dev_t *) = 0;
virtual int vfs_stop(void) = 0;
virtual int vfs_sync(void) = 0;
/* Misc Functions */
virtual int vfs_unlink(const char *) = 0;
virtual int vfs_rename(const char *,const char *) = 0;
virtual ~vfs_abstract(void) { };
}; // vfs_FS
#endif // !FSABSTRACT_H