use libc::{c_char, size_t};
use types::{Return};
type FileWriteProc = extern fn (*mut AiFile, *const char, size_t, size_t) -> size_t;
type FileReadProc = extern fn (*mut AiFile, *const char, size_t, size_t) -> size_t;
type FileTellProc = extern fn (*mut AiFile) -> size_t;
type FileFlushProc = extern fn (*mut AiFile);
type FileSeek = extern fn (*mut AiFile, size_t, Origin) -> Return;
type FileOpenProc = extern fn (*mut AiFileIO, *const c_char, *const c_char) -> *mut AiFile;
type FileCloseProc = extern fn (*mut AiFileIO, *mut AiFile);
#[repr(C)]
#[allow(dead_code)]
pub enum Origin {
Origin_SET = 0x0,
Origin_CUR = 0x1,
Origin_END = 0x2,
}
#[repr(C)]
#[allow(dead_code)]
pub struct AiFileIO {
open: FileOpenProc,
close: FileCloseProc,
user_data: *const c_char,
}
#[repr(C)]
pub struct AiFile {
read: FileReadProc,
write: FileWriteProc,
tell: FileTellProc,
size: FileTellProc,
seek: FileSeek,
flush: FileFlushProc,
user_data: *const c_char,
}