.\" Automatically generated by Pandoc 2.2.1 .\" .TH "ALLEGRO_FILE_INTERFACE" "3alleg5" "" "Allegro reference manual" "" .hy .SH NAME .PP ALLEGRO_FILE_INTERFACE \- Allegro 5 API .SH SYNOPSIS .IP .nf \f[C] #include\ typedef\ struct\ ALLEGRO_FILE_INTERFACE \f[] .fi .SH DESCRIPTION .PP A structure containing function pointers to handle a type of \[lq]file\[rq], real or virtual. See the full discussion in al_set_new_file_interface(3alleg5). .PP The fields are: .IP .nf \f[C] void*\ \ \ \ \ \ \ \ \ (*fi_fopen)(const\ char\ *path,\ const\ char\ *mode); bool\ \ \ \ \ \ \ \ \ \ (*fi_fclose)(ALLEGRO_FILE\ *f); size_t\ \ \ \ \ \ \ \ (*fi_fread)(ALLEGRO_FILE\ *f,\ void\ *ptr,\ size_t\ size); size_t\ \ \ \ \ \ \ \ (*fi_fwrite)(ALLEGRO_FILE\ *f,\ const\ void\ *ptr,\ size_t\ size); bool\ \ \ \ \ \ \ \ \ \ (*fi_fflush)(ALLEGRO_FILE\ *f); int64_t\ \ \ \ \ \ \ (*fi_ftell)(ALLEGRO_FILE\ *f); bool\ \ \ \ \ \ \ \ \ \ (*fi_fseek)(ALLEGRO_FILE\ *f,\ int64_t\ offset,\ int\ whence); bool\ \ \ \ \ \ \ \ \ \ (*fi_feof)(ALLEGRO_FILE\ *f); int\ \ \ \ \ \ \ \ \ \ \ (*fi_ferror)(ALLEGRO_FILE\ *f); const\ char\ *\ \ (*fi_ferrmsg)(ALLEGRO_FILE\ *f); void\ \ \ \ \ \ \ \ \ \ (*fi_fclearerr)(ALLEGRO_FILE\ *f); int\ \ \ \ \ \ \ \ \ \ \ (*fi_fungetc)(ALLEGRO_FILE\ *f,\ int\ c); off_t\ \ \ \ \ \ \ \ \ (*fi_fsize)(ALLEGRO_FILE\ *f); \f[] .fi .PP The fi_open function must allocate memory for whatever userdata structure it needs. The pointer to that memory must be returned; it will then be associated with the file. The other functions can access that data by calling al_get_file_userdata(3alleg5) on the file handle. If fi_open returns NULL then al_fopen(3alleg5) will also return NULL. .PP The fi_fclose function must clean up and free the userdata, but Allegro will free the ALLEGRO_FILE(3alleg5) handle. .PP If fi_fungetc is NULL, then Allegro's default implementation of a 16 char long buffer will be used.