
 /* superplay_internal.h
    - Include File for SPObject-Support Routines -
    (c) 1990-94 by Andreas R. Kleinert
    Last changes : 27.11.1994
 */

#ifndef SUPERPLAY_INTERNAL_H
#define SUPERPLAY_INTERNAL_H

#ifndef SUPERPLAY_SUPERPLAYBASE_H
#include <superplay/superplaybase.h>
#endif  /* SUPERPLAY_SUPERPLAYBASE_H */

#ifndef SPOBJECTS_SPOBJECTBASE_H
#include <spobjects/spobjectbase.h>
#endif  /* SPOBJECTS_SPOBJECTBASE_H */

#ifndef INTUITION_INTUITIONBASE_H
#include <intuition/intuitionbase.h>
#endif /* INTUITION_INTUITIONBASE_H */

#ifndef EXEC_MEMORY_H
#include <exec/memory.h>
#endif /* EXEC_MEMORY_H */

#ifndef EXEC_LISTS_H
#include <exec/lists.h>
#endif /* EXEC_LISTS_H */

#ifndef EXEC_INTERRUPTS_H
#include <exec/interrupts.h>
#endif /* EXEC_INTERRUPTS_H */

#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/intuition.h>
#include <proto/utility.h>
#include <proto/spobjects.h>


#include "SP_MemSubs.h"


/* *************************************************** */
/* *						     * */
/* * SP_SuperVisor.c : Functions	             * */
/* *						     * */
/* *************************************************** */

extern struct AI_IFFHandle * __saveds __asm SPL_AllocHandle( register __a1 APTR future_a1);
extern void __saveds __asm SPL_FreeHandle( register __a1 struct AI_IFFHandle *ai_iffhandle_a1);
extern void __saveds __asm SPL_StopReplay( register __a1 struct AI_IFFHandle *ai_iffhandle_a1);
extern void __saveds __asm SPL_FreeResources( register __a1 struct AI_IFFHandle *ai_iffhandle_a1);


/* *************************************************** */
/* *						     * */
/* * SP_WriteSubs.c : ...                            * */
/* *						     * */
/* *************************************************** */

extern ULONG __saveds __asm SPL_SuperWrite( register __a1 struct AI_IFFHandle *ai_iffhandle_a1,
                                            register __a2 struct AI_IFFHandle *source_handle);


/* *************************************************** */
/* *						     * */
/* * SP_InfoSubs.c : ...                             * */
/* *						     * */
/* *************************************************** */

extern ULONG __saveds __asm SPL_FileInfoRequest( register __a1 struct AI_IFFHandle *ai_iffhandle_a1, register __a2 struct Window *window, register __a3 ULONG future);
extern ULONG __saveds __asm SPL_GetFileType(     register __a1 struct AI_IFFHandle *ai_iffhandle_a1, register __a2 char *filename, register __a3 ULONG *filetype);

extern long __saveds __stdargs SPLI_CheckSPObject(BPTR handle, struct AI_IFFHandle *ai_iffhandle, char *filename, struct SPOCheckFile *spo_check);


/* *************************************************** */
/* *						     * */
/* * SP_ChangeSubs.c : ...                           * */
/* *						     * */
/* *************************************************** */

extern ULONG __saveds __asm SPL_InitHandleAsDOS(  register __a1 struct AI_IFFHandle *ai_iffhandle_a1, register __a2 APTR future);
extern ULONG __saveds __asm SPL_InitHandleAsClip( register __a1 struct AI_IFFHandle *ai_iffhandle_a1, register __a2 APTR future);
extern ULONG __saveds __asm SPL_SetWriteType( register __a1 struct AI_IFFHandle *ai_iffhandle_a1, register __a2 ULONG akt_type, register __a3 APTR future);
extern ULONG __saveds __asm SPL_SetWriteName( register __a1 struct AI_IFFHandle *ai_iffhandle_a1, register __a2 char *writename, register __a3 APTR future);
extern ULONG __saveds __asm SPL_SetReqIOWindow( register __a1 struct AI_IFFHandle *ai_iffhandle_a1, register __a2 struct Window *ReqIOWindow);


/* *************************************************** */
/* *						     * */
/* * SP_Error.c : ...                                * */
/* *						     * */
/* *************************************************** */

extern char * __saveds __asm SPL_GetErrorString( register __a1 ULONG error_code_a1);


/* *************************************************** */
/* *						     * */
/* * SP_PlaySubs.c : ...                             * */
/* *						     * */
/* *************************************************** */

extern ULONG __saveds __asm SPL_ReadPlayData( register __a1 struct AI_IFFHandle *ai_iffhandle_a1,
                                              register __a2 char *filename);
extern ULONG __saveds __asm SPL_SuperPlay( register __a1 struct AI_IFFHandle *ai_iffhandle_a1,
                                           register __a2 char *filename);
extern ULONG __saveds __asm SPL_ContinueReplay( register __a1 struct AI_IFFHandle *ai_iffhandle_a1);


/* *************************************************** */
/* *						     * */
/* * SP_RecogSubs.c : ...                            * */
/* *						     * */
/* *************************************************** */

extern struct SPO_ObjectNode * __saveds __stdargs SPLI_GetSPObject(ULONG subtype);


/* *************************************************** */
/* *						     * */
/* * Additional Base Declarations		     * */
/* *						     * */
/* *************************************************** */

extern struct SuperPlayBase *SuperPlayBase;
extern struct ExecBase	    *SysBase;
extern struct DosLibrary    *DOSBase;
extern struct IntuitionBase *IntuitionBase;
extern struct Library       *UtilityBase;


 /* structures for SPObject-Handling */

struct AI_IFFHandle                   /* STRICTLY PRIVATE */
{
 BPTR                ah_filehandle_source;
 BPTR                ah_filehandle_dest;

 ULONG               ah_FileType;           /* SP_FILETYPE_ ... */
 ULONG               ah_Type;               /* SP_SUBTYPE_  ... */
 ULONG               ah_WriteMode;          /* SP_SUBTYPE_  ... */
 UBYTE              *ah_WriteName;
 ULONG               ah_Medium;             /* SPO_MEDIUM_  ... */

 struct AIM_MemList *ah_ramhandle;

 struct SPObjectBase   *ah_ObjectBase;  /* Library-Base of spobject.    */
 struct SPO_ObjectNode *ah_SPObject;
 APTR                   ah_SPHandle;

 struct Window         *ah_ReqIOWindow;
};

#endif /* SUPERPLAY_INTERNAL_H */
