
#ifndef CLASSBASE_H
#define CLASSBASE_H 1

/*
**
**  $VER: classbase.h 1.6 (24.9.96)
**  directory.datatype 1.0
**
**  Header file for DataTypes class
**
**  Written 1996 by Roland 'Gizzy' Mainz
**  Original example source from David N. Junod
**
*/

/* amiga includes */
#include <exec/types.h>
#include <exec/ports.h>
#include <exec/memory.h>
#include <exec/lists.h>
#include <exec/semaphores.h>
#include <exec/execbase.h>
#include <dos/dos.h>
#include <dos/dosextens.h>
#include <dos/dostags.h>
#include <dos/notify.h>
#include <graphics/gfx.h>
#include <graphics/text.h>
#include <intuition/classes.h>  /* must be $Id: classes.h,v 40.0 94/02/15 17:46:35 davidj Exp Locker: davidj $ */
#include <intuition/classusr.h>
#include <intuition/cghooks.h>
#include <intuition/icclass.h>
#include <intuition/gadgetclass.h>
#include <datatypes/datatypes.h>
#include <datatypes/datatypesclass.h>
#include <datatypes/textclass.h>

/* amiga prototypes */
#include <clib/macros.h>
#include <clib/exec_protos.h>
#include <clib/utility_protos.h>
#include <clib/dos_protos.h>
#include <clib/graphics_protos.h>
#include <clib/intuition_protos.h>
#include <clib/datatypes_protos.h>
#include <clib/dtclass_protos.h>
#include <clib/alib_protos.h>
#include <clib/alib_stdio_protos.h>

/* amiga pragmas */
#include <pragmas/exec_pragmas.h>
#include <pragmas/utility_pragmas.h>
#include <pragmas/dos_pragmas.h>
#include <pragmas/graphics_pragmas.h>
#include <pragmas/intuition_pragmas.h>
#include <pragmas/datatypes_pragmas.h>
#include <pragmas/dtclass_pragmas.h>
#include <pragmas/alib_pragmas.h> /* amiga.lib stubs (tagcall pragmas) */

/* ANSI includes */
#include <string.h>

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

#define DIRECTORYDTCLASS "directory.datatype"

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

struct ClassBase
{
    struct ClassLibrary     cb_Lib;
    struct ExecBase        *cb_SysBase;
    struct Library         *cb_DOSBase;
    struct Library         *cb_IntuitionBase;
    struct Library         *cb_GfxBase;
    struct Library         *cb_UtilityBase;
    struct Library         *cb_DataTypesBase;
    struct Library         *cb_SuperClassBase;
    BPTR                    cb_SegList;
    struct SignalSemaphore  cb_Lock; /* Access lock for class */
};

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

/* SASC specific defines */
#define DISPATCHERFLAGS __saveds __asm
#define REGD0 register __d0
/* ... */
#define REGA0 register __a0
#define REGA1 register __a1
#define REGA2 register __a2
/* ... */
#define REGA6 register __a6


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

#define SysBase        (cb -> cb_SysBase)
#define DOSBase        (cb -> cb_DOSBase)
#define UtilityBase    (cb -> cb_UtilityBase)
#define IntuitionBase  (cb -> cb_IntuitionBase)
#define GfxBase        (cb -> cb_GfxBase)
#define DataTypesBase  (cb -> cb_DataTypesBase)

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

#define V( x )      ((APTR)(x))
#define G( o )      ((struct Gadget *)(o))
#define EXTG( o )   ((struct ExtGadget *)(o))

#define XTAG( expr, tagid ) ((Tag)((expr)?(tagid):(TAG_IGNORE)))


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

#include "class_iprotos.h"

#endif /* !CLASSBASE_H */


