1 /* 2 Audio File Library 3 Copyright (C) 1999, Elliot Lee <sopwith (at) redhat.com> 4 5 This library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Library General Public 7 License as published by the Free Software Foundation; either 8 version 2 of the License, or (at your option) any later version. 9 10 This library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Library General Public License for more details. 14 15 You should have received a copy of the GNU Library General Public 16 License along with this library; if not, write to the 17 Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 Boston, MA 02111-1307 USA. 19 */ 20 21 /* 22 af_vfs.h 23 24 Virtual file operations for the Audio File Library. 25 */ 26 27 #ifndef AUDIOFILE_VFS_H 28 #define AUDIOFILE_VFS_H 1 29 30 #include <stdio.h> 31 #include <audiofile.h> 32 33 struct _AFvirtualfile 34 { 35 ssize_t (*read) (AFvirtualfile *vfile, void *data, size_t nbytes); 36 long (*length) (AFvirtualfile *vfile); 37 ssize_t (*write) (AFvirtualfile *vfile, const void *data, size_t nbytes); 38 void (*destroy)(AFvirtualfile *vfile); 39 long (*seek) (AFvirtualfile *vfile, long offset, int is_relative); 40 long (*tell) (AFvirtualfile *vfile); 41 42 void *closure; 43 }; 44 45 AFvirtualfile *af_virtual_file_new (void); 46 AFvirtualfile *af_virtual_file_new_for_file (FILE *fh); 47 void af_virtual_file_destroy (AFvirtualfile *vfile); 48 49 size_t af_fread (void *data, size_t size, size_t nmemb, AFvirtualfile *vfile); 50 size_t af_fwrite (const void *data, size_t size, size_t nmemb, AFvirtualfile *vfile); 51 int af_fclose (AFvirtualfile *vfile); 52 long af_flength (AFvirtualfile *vfile); 53 int af_fseek (AFvirtualfile *vfile, long offset, int whence); 54 long af_ftell (AFvirtualfile *vfile); 55 56 #endif 57