/*
**	Protos.h
**
**	Global function prototype definitions
**
**	Copyright © 1990-1997 by Olaf `Olsen' Barthel
**		All Rights Reserved
*/

#ifndef _PROTOS_H
#define _PROTOS_H 1

/**********************************************************************/

	/* Debugging macro */

#define DB(x)	;
/*#define DB(x)	x */

/**********************************************************************/

	/* debug.lib */

VOID kprintf(STRPTR,...);

	/* amiga.lib */

ULONG HookEntry(struct Hook *,...);

	/* For DICE and the glue variant we have to change back to the standard stubs */

#if defined(_DCC) || defined(USE_GLUE)
#define AsmCreatePool(a1,a2,a3,x)	LibCreatePool(a1,a2,a3)
#define AsmDeletePool(a1,x)		LibDeletePool(a1)
#define AsmFreePooled(a1,a2,a3,x)	LibFreePooled(a1,a2,a3)
#define AsmAllocPooled(a1,a2,x)		LibAllocPooled(a1,a2)
#else
APTR ASM AsmCreatePool(REG(d0) ULONG MemFlags,REG(d1) ULONG PuddleSize,REG(d2) ULONG ThreshSize,REG(a6) struct ExecBase *SysBase);
VOID ASM AsmDeletePool(REG(a0) APTR PoolHeader,REG(a6) struct ExecBase *SysBase);
APTR ASM AsmAllocPooled(REG(a0) APTR PoolHeader, REG(d0) ULONG Size,REG(a6) struct ExecBase *SysBase);
VOID ASM AsmFreePooled(REG(a0) APTR PoolHeader,REG(a1) APTR Memory,REG(d0) ULONG MemSize,REG(a6) struct ExecBase *SysBase);
#endif

/**********************************************************************/

	/* Glue.asm */

VOID CustomStuffTextGlue(LONG *Data, UBYTE Char);
VOID CustomCountCharGlue(LONG *Count, UBYTE Char);

VOID StuffCharGlue(struct FormatContext *Context, UBYTE Char);

VOID CountCharGlue(ULONG *Count);

struct RendezvousData * RendezvousLoginGlue(struct MsgPort *ReadPort, struct MsgPort *WritePort, struct TagItem *TagList);
VOID RendezvousLogoffGlue(struct RendezvousData *Data);
struct Node * RendezvousNewNodeGlue(STRPTR Name);

LONG xem_sread_glue(APTR Buffer, LONG Size, ULONG Timeout);
ULONG xem_toptions_glue(LONG NumOpts, struct xem_option **Opts);
LONG xem_swrite_glue(STRPTR Buffer, LONG Size);
LONG xem_tgets_glue(STRPTR Prompt, STRPTR Buffer, ULONG Size);
VOID xem_tbeep_glue(ULONG Times, ULONG Delay);
LONG xem_macrodispatch_glue(struct XEmulatorMacroKey *XEM_MacroKey);

LONG xpr_fopen_glue(STRPTR FileName, STRPTR AccessMode);
LONG xpr_fclose_glue(struct Buffer *File);
LONG xpr_fread_glue(APTR Buffer, LONG Size, LONG Count, struct Buffer *File);
LONG xpr_fwrite_glue(APTR Buffer, LONG Size, LONG Count, struct Buffer *File);
LONG xpr_fseek_glue(struct Buffer *File, LONG Offset, LONG Origin);
LONG xpr_sread_glue(APTR Buffer, ULONG Size, ULONG Timeout);
LONG xpr_swrite_glue(APTR Buffer, LONG Size);
LONG xpr_update_glue(struct XPR_UPDATE *UpdateInfo);
LONG xpr_gets_glue(STRPTR Prompt, STRPTR Buffer);
LONG xpr_setserial_glue(LONG Status);
LONG xpr_ffirst_glue(STRPTR Buffer, STRPTR Pattern);
LONG xpr_fnext_glue(LONG OldState, STRPTR Buffer, STRPTR Pattern);
LONG xpr_finfo_glue(STRPTR FileName, LONG InfoType);
ULONG xpr_options_glue(LONG NumOpts, struct xpr_option **Opts);
LONG xpr_unlink_glue(STRPTR FileName);
LONG xpr_getptr_glue(LONG InfoType);
LONG xpr_stealopts_glue(STRPTR Prompt, STRPTR Buffer);

/**********************************************************************/
