#include "swMemory.h"

#define COPYRIGHT   "Copyright 1989 by Davide P. Cervone, all rights reserved" 

#define PORTNAME        "sWindowsPort"

/*
 *  DEFAULTSIGNAL is the signal to wait for when a screen can not be closed
 *  immediately, and no other signal could be allocated.
 */

#define DEFAULTSIGNAL   SIGBREAKF_CTRL_F
#define NOWINDOW        ((struct Window *)-1L)
#define ONE             1L


/*
 *  swHandlerInfo
 *
 *  The data structure shared between the handler and the loader
 *  the loader sets some of these variables on behalf of the handler,
 *  in order to keep the handler as small as possible.  The handler
 *  passes information that the loader needs (like the pointers to 
 *  the routines for SetFunction) via this structure
 */

struct swHandlerInfo
{
   struct MsgPort swPort;                   /* port used to store this info */
   short MajVers,MinVers, LoadVers;         /* version of handler and loader */
   long Segment;                            /* SegList loaded by loader */
   struct IntuitionBase **IntuitionBase;
   struct SysBase **SysBase;
   
   SLISTITEM *ScreenList;                   /* the linked list of screens */
   WLISTITEM *WindowList;                   /* the linked list of windows */
   
   /*
    *  These are the routines replaced by SetFunction()
    */
   
   void (*aOpenWindow)();
   void (*aCloseWindow)();
   void (*aCloseScreen)();
   
   /*
    *  These are the values returned by SetFunction, and are used
    *  to replace the original routines when sWindows exits
    */
   
   long *OldOpenWindow;
   long *OldCloseWindow;
   long *OldCloseScreen;
};

/*
 *  Macros to make using swHandlerInfo easy
 */

#define VAR(x)      (*(swHandlerData->x))
#define var(x)      (swHandlerData->x)
