 
#ifndef __dl_file_h
#define __dl_file_h
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __dl_core_h
#include "Core.h"
#endif
#ifndef __dl_swi_h
#include "SWI.h"
#endif
extern os_error *file_lasterror;
extern os_error *File_Delete(char *filename);
extern int File_Size(char *filename);
extern BOOL File_Exists(char *filename);
typedef int file_position;
typedef int file_handle;
#define file_READERROR (-1)
typedef enum
{
file_READ = 0x40, 
file_WRITE = 0x80, 
file_APPEND = 0xC0 
} file_access;
extern file_handle File_Open(char *filename, file_access access);
extern os_error *File_Close(file_handle handle);
extern BOOL File_EOF(file_handle handle);
extern os_error *File_Seek(file_handle handle, file_position position);
extern file_position File_ReturnPos(file_handle handle);
extern int File_ReadExtent(file_handle handle);
extern os_error *File_WriteBytes(file_handle handle,
void *buffer, int numbytes);
extern int File_ReadBytes(file_handle handle, void *buffer, int numbytes);
extern os_error *File_Write8(file_handle handle, int byte);
#define File_WriteByte File_Write8
#define File_WriteChar File_Write8
extern int File_Read8(file_handle handle);
#define File_ReadByte File_Read8
#define File_ReadChar File_Read8
extern os_error *File_Write32(file_handle handle, int word);
#define File_WriteWord File_Write32
#define File_WriteInt File_Write32
#define File_WriteLong File_Write32
extern int File_Read32(file_handle handle);
#define File_ReadWord File_Read32
#define File_ReadInt File_Read32
#define File_ReadLong File_Read32
extern int File_Read32R(file_handle handle);
#define File_ReadWordR File_Read32R
#define File_ReadIntR File_Read32R
#define File_ReadLongR File_Read32R
extern os_error *File_Write32R(file_handle handle, int word);
#define File_WriteWordR File_Write32R
#define File_WriteIntR File_Write32R
#define File_WriteLongR File_Write32R
extern void File_SetType(char *filename, int type);
extern int File_GetType(char *filename);
#define File_GetLength(filename, size_ptr) \
SWI(2, 5, SWI_OS_File, 5, (filename), NULL, NULL, NULL, NULL, (size_ptr))
extern BOOL File_IsDirectory(char *pathname);
extern os_error *File_LoadTo(char *filename, void *address, int *size );
extern void File_Date(char *filename, char *fivebytedate);
extern char *File_AllocLoad0( char *filename);
extern int File_printf(file_handle file, char *format, ...);
extern int File_ReadExtent(file_handle handle);
#define FILETYPE(x) (((x) & 0xFFF00) >> 8)
#define filetype_AIM 0x004
#define filetype_CLEAR 0x690
#define filetype_DEGAS 0x691
#define filetype_IMG 0x692
#define filetype_AMIGAIFF 0x693
#define filetype_MACPAINT 0x694
#define filetype_GIF 0x695
#define filetype_PCX 0x697
#define filetype_QRT 0x698
#define filetype_MTV 0x699
#define filetype_CADSOFT 0x69A
#define filetype_IRLAM 0x69B
#define filetype_BMP 0x69C
#define filetype_TARGA 0x69D
#define filetype_PBMPlus 0x69E
#define filetype_ZVDA 0x69F
#define filetype_MSX2 0x6A0
#define filetype_RLE 0x6A1
#define filetype_COLORIX 0x6A2
#define filetype_FITS 0x6A3
#define filetype_HAWKV9 0x6A4
#define filetype_REPLAY 0xAE7
#define filetype_ALARMS 0xAE9
#define filetype_DRAWFILE 0xAFF
#define filetype_BBCROM 0xBBC
#define filetype_AUDIOWRK 0xBD6
#define filetype_RENDPIC 0xD58
#define filetype_ARCHIVE 0xDDC
#define filetype_PROART 0xDE2
#define filetype_PICTURE 0xDFA
#define filetype_PRNTDEFN 0xFC6
#define filetype_DOSDISC 0xFC8
#define filetype_SUNRASTR 0xFC9
#define filetype_DEVICE 0xFCC
#define filetype_CACHE 0xFCF
#define filetype_PCEMCONF 0xFD0
#define filetype_DEBIMAGE 0xFD3
#define filetype_TASKEXEC 0xFD6
#define filetype_TASKOBEY 0xFD7
#define filetype_MAKEFILE 0xFE1
#define filetype_DOS 0xFE4
#define filetype_DESKTOP 0xFEA
#define filetype_OBEY 0xFEB
#define filetype_TEMPLATE 0xFEC
#define filetype_PALETTE 0xFED
#define filetype_TIFF 0xFF0
#define filetype_CONFIG 0xFF2
#define filetype_PRINTOUT 0xFF4
#define filetype_POSCRIPT 0xFF5
#define filetype_FONT 0xFF6
#define filetype_BBCFONT 0xFF7
#define filetype_ABSOLUTE 0xFF8
#define filetype_SPRITE 0xFF9
#define filetype_MODULE 0xFFA
#define filetype_BASIC 0xFFB
#define filetype_UTILITY 0xFFC
#define filetype_DATA 0xFFD
#define filetype_COMMAND 0xFFE
#define filetype_TEXT 0xFFF
#ifdef __cplusplus
}
#endif
#endif
