00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00040
00049 #ifndef _adgali_ios_h
00050 #define _adgali_ios_h
00051
00052 #include <stdio.h>
00053
00055
00056 struct _agl_iosio;
00057
00059
00063 typedef struct agl_ios
00064 {
00065 agl_handle handle;
00066 struct _agl_iosio *pio;
00067 char *filename;
00068 void *priv;
00069 } agl_ios;
00070
00071 typedef struct _agl_iosio
00072 {
00073 char *desc;
00074 int (*is) (agl_module *, char *, agl_ios *);
00075 agl_ios *(*open) (agl_module *, char *, agl_ios *);
00076 long (*seek) (agl_ios *, long, int);
00077 long (*read) (agl_ios *, void *, long, long, void *);
00078 long (*write) (agl_ios *, void *, long, long, void *);
00079 int (*close) (agl_ios *);
00080 } agl_iosio;
00081
00082
00083 extern agl_ios *agl_ios_open(agl_handle handle, char *address);
00084
00086
00099 #define agl_ios_seek(ios, offset, whence) (agl_assert(ios != NULL), \
00100 ((ios)->pio->seek(ios, offset, whence)))
00101
00103
00109 #define agl_ios_tell(ios) (agl_assert(ios != NULL), \
00110 ((ios)->pio->seek(ios, 0, SEEK_CUR)))
00111
00113
00124 #define agl_ios_read(ios, buf, size, maxnum, supp) (agl_assert(ios != NULL), \
00125 ((ios)->pio->read(ios, buf, size, maxnum ,supp)))
00126
00128
00139 #define agl_ios_write(ios, buf, size, maxnum, supp) (agl_assert(ios != NULL), \
00140 ((ios)->pio->write(ios, buf, size, maxnum ,supp)))
00141
00143
00150 #define agl_ios_close(ios) (agl_assert(ios != NULL), \
00151 ((ios)->pio->close(ios)))
00152
00153
00154 #endif