/*
 * win.h
 *
 * [Generated from win, 25 September 1996]
 */

#if !defined(__CC_NORCROFT) || !defined(__arm)
  #error You must use the Norcroft ARM Compiler for Sapphire programs
#endif

#pragma include_only_once
#pragma force_top_level

#ifndef __win_h
#define __win_h

#ifndef __sapphire_h
  #include "sapphire.h"
#endif

/*----- Overview ----------------------------------------------------------*
 *
 * Functions provided:
 *
 *  win_eventHandler
 *  win_removeEventHandler
 *  win_swapWindow
 *  win_windowDeleted
 *  win_unknownHandler
 *  win_removeUnknownHandler
 *  win_init
 */

/* --- win_eventHandler --- *
 *
 * On entry:	R0 == window handle
 *		R1 == pointer to routine to call
 *		R2 == R10 value to call routine with
 *		R3 == R12 value to call routine with
 *
 * On exit:	May return an error
 *
 * Use:		Adds a routine to the event handler list. Later added
 *		routines are called first. The event handing routine
 *		must preserve all the registers, but may alter the carry
 *		flag. If it returns with carry set, then no more event
 *		handlers, OR post-filters, will be called.
 */

extern routine win_eventHandler;

/* --- win_removeEventHandler --- *
 *
 * On entry:	R0 == window handle
 *		R1 == pointer to routine called
 *		R2 == R10 value routine is called with
 *		R3 == R12 value routine is called with
 *
 * On exit:	--
 *
 * Use:		Removes a routine to the event handler list.
 */

extern routine win_removeEventHandler;

/* --- win_swapWindow --- *
 *
 * On entry:	R0 == old window handle
 *		R1 == new window handle
 *
 * On exit:	--
 *
 * Use:		Searches for all the event handlers for window R0, and
 *		changes the window handle for R1.  This is designed for
 *		situations in wihich a window has been deleted and
 *		recreated.
 */

extern routine win_swapWindow;

/* --- win_windowDeleted --- *
 *
 * On entry:	R0 == window handle
 *
 * On exit:	--
 *
 * Use:		Removes all the event handlers associated with the given
 *		window handle.  It is intended to be used when a window
 *		has been deleted.
 */

extern routine win_windowDeleted;

/* --- win_unknownHandler --- *
 *
 * On entry:	R0 == pointer to routine to call
 *		R1 == R4 value to call routine with
 *		R2 == R10 value to call routine with
 *		R3 == R12 value to call routine with
 *
 * On exit:	May return an error
 *
 * Use:		Adds a rountine to the event handler list. Later added
 *		routines are called first. The event handing routine
 *		must preserve all the registers, but may alter the carry
 *		flag. If it returns with carry set, then no more event
 *		handlers, OR post-filters, will be called.
 */

extern routine win_unknownHandler;

/* --- win_removeUnknownHandler --- *
 *
 * On entry:	R0 == pointer to routine called
 *		R1 == R4 value routine is called with
 *		R2 == R10 value routine is called with
 *		R3 == R12 value routine is called with
 *
 * On exit:	--
 *
 * Use:		Removes a routine to the unknown handler list.
 */

extern routine win_removeUnknownHandler;

/* --- win_init --- *
 *
 * On entry:	--
 *
 * On exit:	--
 *
 * Use:		Initialises the win system.
 */

extern routine win_init;

/*----- That's all, folks -------------------------------------------------*/

#endif
