#pragma once #include #include struct fastfile; typedef struct fastfile fastfile_t; struct fastfile { int size; struct { int (*seek) (fastfile_t *ff,int position); int (*tell) (fastfile_t *ff); int (*read) (fastfile_t *ff,void *buffer,int len); int (*write)(fastfile_t *ff,void *buffer,int len); int (*close)(fastfile_t *ff); } ops; }; static inline int ff_seek(fastfile_t *ff,int position) { if (!ff || !ff->ops.seek) return -ENULLPTR; return ff->ops.seek(ff,position); }; static inline int ff_tell(fastfile_t *ff) { if (!ff || !ff->ops.tell) return -ENULLPTR; return ff->ops.tell(ff); }; static inline int ff_read(fastfile_t *ff,void *buffer,int len) { if (!ff || !ff->ops.read) return -ENULLPTR; return ff->ops.read(ff,buffer,len); }; static inline int ff_write(fastfile_t *ff,void *buffer,int len) { if (!ff || !ff->ops.write) return -ENULLPTR; return ff->ops.write(ff,buffer,len); }; static inline int ff_close(fastfile_t *ff) { if (!ff || !ff->ops.close) return -ENULLPTR; return ff->ops.close(ff); };