#ifndef PRIVATE_USERTYPEDEFS_H
#define PRIVATE_USERTYPEDEFS_H

 /* _AMIGA symbol is defined by SAS/C */

#ifdef _AMIGA

#include <exec/types.h>
#include <exec/nodes.h>
#include <exec/lists.h>
#include <exec/libraries.h>
#include <exec/ports.h>
#include <devices/inputevent.h>
#include <dos/rdargs.h>
#include <graphics/gfx.h>
#include <graphics/text.h>
#include <graphics/displayinfo.h>
#include <graphics/rastport.h>
#include <intuition/intuition.h>
#include <intuition/screens.h>
#include <libraries/commodities.h>
#include <libraries/asl.h>
#include <workbench/workbench.h>
#include <utility/tagitem.h>

  /* Datatypes */

typedef BYTE         SCHAR;    /*  8 bit signed char as defined in <exec/types.h>      */
typedef WORD         SINT16;   /* 16 bit signed integer as defined in <exec/types.h>   */
typedef LONG         SINT32;   /* 32 bit signed integer as defined in <exec/types.h>   */
typedef UBYTE        UCHAR;    /*  8 bit unsigned char as defined in <exec/types.h>    */
typedef UWORD        UINT16;   /* 16 bit unsigned integer as defined in <exec/types.h> */
typedef ULONG        UINT32;   /* 32 bit unsigned integer as defined in <exec/types.h> */


  /* Some helpful typedefs */

  /* System */

typedef struct InputEvent          IE;
typedef struct List                LIST;
typedef struct Node                NODE;
typedef struct MsgPort             PORT;
typedef struct NewBroker           NB;
typedef struct Library             LIB;
typedef struct Window              WIN;
typedef struct Screen              SCR;
typedef struct TextFont            TF;
typedef struct TextAttr            TA;
typedef struct TextExtent          TE;
typedef struct DimensionInfo       DIMI;
typedef struct DisplayInfo         DISI;
typedef struct DrawInfo            DRAI;
typedef struct TagItem             TI;
typedef struct Gadget              GAD;
typedef struct NewGadget           NGAD;
typedef struct GadgetInfo          GADI;
typedef struct StringInfo          STRINFO;
typedef struct Image               IM;
typedef struct IBox                IBOX;
typedef struct BoxAttr             BOXATTR;
typedef struct EasyStruct          ES;
typedef struct Requester           REQ;
typedef struct Rectangle           RECT;
typedef struct RastPort            RP;
typedef struct DiskObject          DOBJ;
typedef struct RDArgs              RDARGS;
typedef struct Hook                HOOK;
typedef struct IntuiMessage        IMSG;
typedef struct Message             MSG;
typedef struct MenuItem            MI;
typedef struct FileRequester       FILEREQ;
typedef struct FontRequester       FONTREQ;
typedef struct ScreenModeRequester SCREENREQ;
typedef struct BitMap              BM;
typedef struct NameInfo            NAMI;
typedef struct WBArg               WBARG;
typedef struct FileInfoBlock       FIB;
typedef struct ExAllData           EAD;
typedef struct ExAllControl        EAC;
typedef struct NotifyRequest       NOTIFYREQ;
typedef struct NotifyMessage       NMSG;
typedef struct Task                TASK;
typedef struct WBStartup           WBSTARTUP;
typedef struct LVDrawMsg           LVDM;
typedef struct SGWork              SGW;

#ifndef LIBRARIES_GADOUTLINE_H
#include "libraries/gadoutline.h"
#endif

#ifndef LIBRARIES_PROGARGS_H
#include "libraries/progargs.h"
#endif


  /* User */

typedef struct GadOutline    GO;
typedef struct GOIMsg        GOIMSG;
typedef struct ProgArgs      PROGARGS;
typedef struct GODimensInfo  GODI;
typedef struct BoxPosInfo    BPI;
typedef struct CmdInfo       CI;
typedef struct CmdHookMsg    CHMSG;


  /* Useful defines */

#define AREG_A0    register __a0
#define AREG_A1    register __a1
#define AREG_A2    register __a2
#define AREG_A3    register __a3
#define AREG_A4    register __a4
#define AREG_A5    register __a5
#define AREG_A6    register __a6
#define AREG_A7    register __a7

#define AREG_D0    register __d0
#define AREG_D1    register __d1
#define AREG_D2    register __d2
#define AREG_D3    register __d3
#define AREG_D4    register __d4
#define AREG_D5    register __d5
#define AREG_D6    register __d6
#define AREG_D7    register __d7


#endif /* _AMIGA */

#endif /* PRIVATE_USERTYPEDEFS_H */
