#ifndef __INC_POS_PDOS_IOSTRUCT_H
#define __INC_POS_PDOS_IOSTRUCT_H
/*******************************************************************
 Includes Release 24
 (C) Copyright 1995-1997 proDAD
     All Rights Reserved

 $AUT Holger Burkarth
 $DAT >>IOStruct.h<<   23 Jan 1997    14:35:29 - (C) ProDAD
*******************************************************************/
#ifndef __INC_POS_PDOS_DOSTYPES_H
#include <pDOS/DosTypes.h>
#endif
#ifndef __INC_POS_PDOS_FIB_H
#include <pDOS/FIB.h>
#endif


/*----------------------------------
-----------------------------------*/
struct pOS_IOStruct
{
  UWORD  iost_StructSize;
  ULONG  iost_UserData[2];

  UBYTE  iost_Reserved[16];

  dossize_t (*iost_Read_func)   (_R_A0 struct pOS_IOStruct*,_R_A1 VOID* buf,_R_D0 dossize_t size);
  dossize_t (*iost_Write_func)  (_R_A0 struct pOS_IOStruct*,_R_A1 const VOID* buf,_R_D0 dossize_t size);
  dospos_t  (*iost_Seek_func)   (_R_A0 struct pOS_IOStruct*,_R_D0 dospos_t pos,_R_D1 ULONG mode);
  BOOL      (*iost_Examine_func)(_R_A0 struct pOS_IOStruct*,_R_A1 struct pOS_FileInfoBlock*);
  BOOL      (*iost_Flush_func)  (_R_A0 struct pOS_IOStruct*);
  ULONG     (*iost_Reserved_func[8])(_R_A0 struct pOS_IOStruct*);
};


#define _IOSTREAD(io,buf,size)   ( (io)->iost_Read_func(io,buf,size) )
#define _IOSTWRITE(io,buf,size)  ( (io)->iost_Write_func(io,buf,size) )
#define _IOSTSEEK(io,pos,mode)   ( (io)->iost_Seek_func(io,pos,mode) )
#define _IOSTEXAMINE(io,fib)     ( (io)->iost_Examine_func(io,fib) )
#define _IOSTFLUSH(io)           ( (io)->iost_Flush_func(io) )


#endif
