1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
use libc::*; use path::*; use utf8::*; use allegro_util::c_bool; opaque!(ALLEGRO_FILE); #[repr(C)] #[derive(Copy, Clone, Debug)] pub struct ALLEGRO_FILE_INTERFACE { pub fi_fopen: Option<unsafe extern "C" fn(path: *const c_char, mode: *const c_char) -> *mut c_void>, pub fi_fclose: Option<unsafe extern "C" fn(handle: *mut ALLEGRO_FILE) -> c_bool>, pub fi_fread: Option<unsafe extern "C" fn(f: *mut ALLEGRO_FILE, ptr: *mut c_void, size: c_ulong) -> c_ulong>, pub fi_fwrite: Option<unsafe extern "C" fn(f: *mut ALLEGRO_FILE, ptr: *const c_void, size: c_ulong) -> c_ulong>, pub fi_fflush: Option<unsafe extern "C" fn(f: *mut ALLEGRO_FILE) -> c_bool>, pub fi_ftell: Option<unsafe extern "C" fn(f: *mut ALLEGRO_FILE) -> i64>, pub fi_fseek: Option<unsafe extern "C" fn(f: *mut ALLEGRO_FILE, offset: i64, whence: c_int) -> c_bool>, pub fi_feof: Option<unsafe extern "C" fn(f: *mut ALLEGRO_FILE) -> c_bool>, pub fi_ferror: Option<unsafe extern "C" fn(f: *mut ALLEGRO_FILE) -> c_int>, pub fi_ferrmsg: Option<unsafe extern "C" fn(f: *mut ALLEGRO_FILE) -> *const c_char>, pub fi_fclearerr: Option<unsafe extern "C" fn(f: *mut ALLEGRO_FILE)>, pub fi_fungetc: Option<unsafe extern "C" fn(f: *mut ALLEGRO_FILE, c: c_int) -> c_int>, pub fi_fsize: Option<unsafe extern "C" fn(f: *mut ALLEGRO_FILE) -> off_t>, } #[derive(Copy, Clone)] #[repr(u32)] #[derive(Debug)] pub enum ALLEGRO_SEEK { ALLEGRO_SEEK_SET = 0, ALLEGRO_SEEK_CUR = 1, ALLEGRO_SEEK_END = 2, } extern "C" { pub fn al_fopen(path: *const c_char, mode: *const c_char) -> *mut ALLEGRO_FILE; pub fn al_fopen_interface(vt: *const ALLEGRO_FILE_INTERFACE, path: *const c_char, mode: *const c_char) -> *mut ALLEGRO_FILE; pub fn al_create_file_handle(vt: *const ALLEGRO_FILE_INTERFACE, userdata: *mut c_void) -> *mut ALLEGRO_FILE; pub fn al_fclose(f: *mut ALLEGRO_FILE) -> c_bool; pub fn al_fread(f: *mut ALLEGRO_FILE, ptr: *mut c_void, size: c_ulong) -> c_ulong; pub fn al_fwrite(f: *mut ALLEGRO_FILE, ptr: *const c_void, size: c_ulong) -> c_ulong; pub fn al_fflush(f: *mut ALLEGRO_FILE) -> c_bool; pub fn al_ftell(f: *mut ALLEGRO_FILE) -> i64; pub fn al_fseek(f: *mut ALLEGRO_FILE, offset: i64, whence: c_int) -> c_bool; pub fn al_feof(f: *mut ALLEGRO_FILE) -> c_bool; pub fn al_ferror(f: *mut ALLEGRO_FILE) -> c_int; pub fn al_ferrmsg(f: *mut ALLEGRO_FILE) -> *const c_char; pub fn al_fclearerr(f: *mut ALLEGRO_FILE); pub fn al_fungetc(f: *mut ALLEGRO_FILE, c: c_int) -> c_int; pub fn al_fsize(f: *mut ALLEGRO_FILE) -> i64; pub fn al_fgetc(f: *mut ALLEGRO_FILE) -> c_int; pub fn al_fputc(f: *mut ALLEGRO_FILE, c: c_int) -> c_int; pub fn al_fread16le(f: *mut ALLEGRO_FILE) -> i16; pub fn al_fread16be(f: *mut ALLEGRO_FILE) -> i16; pub fn al_fwrite16le(f: *mut ALLEGRO_FILE, w: i16) -> c_ulong; pub fn al_fwrite16be(f: *mut ALLEGRO_FILE, w: i16) -> c_ulong; pub fn al_fread32le(f: *mut ALLEGRO_FILE) -> i32; pub fn al_fread32be(f: *mut ALLEGRO_FILE) -> i32; pub fn al_fwrite32le(f: *mut ALLEGRO_FILE, l: i32) -> c_ulong; pub fn al_fwrite32be(f: *mut ALLEGRO_FILE, l: i32) -> c_ulong; pub fn al_fgets(f: *mut ALLEGRO_FILE, p: *mut c_char, max: c_ulong) -> *mut c_char; pub fn al_fget_ustr(f: *mut ALLEGRO_FILE) -> *mut ALLEGRO_USTR; pub fn al_fputs(f: *mut ALLEGRO_FILE, p: *const c_char) -> c_int; pub fn al_fprintf(f: *mut ALLEGRO_FILE, format: *const c_char, ...) -> c_int; pub fn al_fopen_fd(fd: c_int, mode: *const c_char) -> *mut ALLEGRO_FILE; pub fn al_make_temp_file(tmpl: *const c_char, ret_path: *mut *mut ALLEGRO_PATH) -> *mut ALLEGRO_FILE; pub fn al_fopen_slice(fp: *mut ALLEGRO_FILE, initial_size: c_ulong, mode: *const c_char) -> *mut ALLEGRO_FILE; pub fn al_get_new_file_interface() -> *const ALLEGRO_FILE_INTERFACE; pub fn al_set_new_file_interface(file_interface: *const ALLEGRO_FILE_INTERFACE); pub fn al_set_standard_file_interface(); pub fn al_get_file_userdata(f: *mut ALLEGRO_FILE) -> *mut c_void; }