#include <MYLIB:ISAMLibPragmas.h>
#include <MYLIB:ISAMErrDefs.h>
#include <exec/types.h>

#define OK          (long)  0
#define NOT_OK      (long)  1

#define ALLFILES    (UWORD) 0

extern BOOL ISAM;  /* is ISAM still out there? */

/************** PROTOTYPES FOR USER-LINKED ISAM FUNCTIONS *******************/

long ShutDownISAM ( void );

long DisConnectISAM ( int exitcode );

long CreateISAMFile ( char *SpecsFileName );

long ReIndexISAMFile ( char *SpecsFileName, BOOL Counter );
 
long DeleteISAMFile ( char *SpecsFileName );

long OpenISAMFile ( char *SpecsFileName, BOOL LLock, char LockType,
                    BOOL SaveHead, ULONG *ISAMHandle );
 
long ReadUniqueISAMRecord ( ULONG ISAMHandle, UWORD KeyNo, void *KeyValue,
                      BOOL LLock, char LockType, ULONG *RecNo, void *Record );
 
long SetUpISAMIterationRange ( ULONG ISAMHandle, UWORD KeyNo, UBYTE IterType,
                               void *KeyFrom, void *KeyTo );
 
long SetUpISAMIterationKey ( ULONG ISAMHandle, UWORD KeyNo,
                             void *KeyValue );

long SetUpISAMIterationPrefix ( ULONG ISAMHandle, UWORD KeyNo,
                                void *Prefix, UWORD Len );
 
long ReadNextISAMRecord ( ULONG ISAMHandle, UWORD KeyNo, BOOL LLock,
                          char LockType, ULONG *RecNo, void *Record );
 
long ReadNextISAMKey ( ULONG ISAMHandle, UWORD KeyNo, ULONG *RecNo,
                       void *KeyValue );

long CountISAMRecords ( ULONG ISAMHandle, UWORD KeyNo, ULONG CountMax,
                        ULONG *Count );

long DeleteISAMRecords ( ULONG ISAMHandle, UWORD KeyNo, ULONG *Count );

long ReadISAMRecord ( ULONG ISAMHandle, ULONG RecNo, BOOL LLock, char LockType,
                      void *Record );
 
long StoreISAMRecord ( ULONG ISAMHandle, void *Record, BOOL LLock,
                       char LockType, ULONG *RecNo );

long ModifyISAMRecord ( ULONG ISAMHandle, ULONG RecNo, void *Record );

long DeleteISAMRecord ( ULONG ISAMHandle, ULONG RecNo );

long CloseISAMFile ( ULONG ISAMHandle );

long LockISAMFile ( ULONG ISAMHandle, char LockType );

long UnLockISAMFile ( ULONG ISAMHandle );

long LockISAMRecord ( ULONG ISAMHandle, ULONG RecNo, char LockType );

long UnLockISAMRecord ( ULONG ISAMHandle, ULONG RecNo );

long UnLockAllISAMRecords ( ULONG ISAMHandle );


/********************** Other ISAM-related Functions ********************/

char *ISAMWhy ( long ErrNo );

long ReportISAMStatus ( void );
