/*
**      $VER: spobject_api.h 5.3 (4.1.97)
**
**      SPObject standard API function declarations
**
**      (C) Copyright 1994-97 Andreas R. Kleinert
**      All Rights Reserved.
*/

#ifndef SPOBJECT_API_H
#define SPOBJECT_API_H

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif /* EXEC_TYPES_H */

#ifndef DOS_DOS_H
#include <dos/dos.h>
#endif /* DOS_DOS_H */

extern struct SPObjectHandle * __saveds __asm SPO_AllocHandle( register __a1 APTR future_a1);
extern void __saveds __asm SPO_FreeHandle( register __a1 struct SPObjectHandle *SPObjectHandle_a1);
extern ULONG __saveds __asm SPO_StartReplay( register __a1 struct SPObjectHandle *SPObjectHandle);
extern ULONG __saveds __asm SPO_Read( register __a1 struct SPObjectHandle *SPObjectHandle);
extern ULONG __saveds __asm SPO_Write( register __a1 struct SPObjectHandle *SPObjectHandle_a1,
                                       register __a2 struct SPObjectBase   *SPO_SourceBase,
                                       register __a3 struct SPObjectHandle *source_handle);
extern void __saveds __asm SPO_StopReplay( register __a1 struct SPObjectHandle *SPObjectHandle_a1);
extern void __saveds __asm SPO_FreeResources( register __a1 struct SPObjectHandle *SPObjectHandle_a1);
extern ULONG __saveds __asm SPO_SetAccessMode(  register __a1 struct SPObjectHandle *SPObjectHandle_a1, register __d1 ULONG mode);
extern ULONG __saveds __asm SPO_SetWriteSubType( register __a1 struct SPObjectHandle *SPObjectHandle_a1, register __a2 ULONG akt_type, register __a3 APTR future);
extern ULONG __saveds __asm SPO_SetWriteName( register __a1 struct SPObjectHandle *SPObjectHandle_a1, register __a2 char *writename, register __a3 APTR future);
extern ULONG __saveds __asm SPO_SetReadName( register __a1 struct SPObjectHandle *SPObjectHandle_a1, register __a2 char *readname, register __a3 APTR future);
extern ULONG __saveds __asm SPO_FileInfoRequest( register __a1 struct SPObjectHandle *SPObjectHandle_a1, register __a2 struct Window *window, register __a3 ULONG future);
extern ULONG __saveds __asm SPO_CheckFileType(register __a1 BPTR handle, register __a2 UBYTE *filename, register __a3 APTR future);
extern ULONG __saveds __asm SPO_SetReqIOWindow(  register __a1 struct SPObjectHandle *SPObjectHandle_a1, register __a2 struct Window *ReqIOWindow);
extern ULONG __saveds __asm SPO_ContinueReplay( register __a1 struct SPObjectHandle *SPObjectHandle_a1);
extern ULONG __saveds __asm SPO_FastForward( register __a1 struct SPObjectHandle *SPObjectHandle_a1);
extern ULONG __saveds __asm SPO_FastBackward( register __a1 struct SPObjectHandle *SPObjectHandle_a1);
extern ULONG __saveds __asm SPO_GetSampleBuffer( register __a1 struct SPObjectHandle *SPObjectHandle_a1, register __a2 UBYTE **buffer, register __a3 ULONG *buffersize);
extern ULONG __saveds __asm SPO_GetSampleInfo( register __a1 struct SPObjectHandle *SPObjectHandle_a1, register __a2 ULONG *samplesPerSec, register __a3 ULONG *volume, register __d1 APTR future);
extern ULONG __saveds __asm SPO_GetSampleList( register __a1 struct SPObjectHandle *SPObjectHandle_a1,
                                               register __a2 struct SPO_SampleList **samplelist);
extern ULONG __saveds __asm SPO_SetSampleList( register __a1 struct SPObjectHandle *SPObjectHandle_a1,
                                               register __a2 struct SPO_SampleList *samplelist);

#endif /* SPOBJECT_API_H */
