home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 106 / af106sub.adf / datatypes.LZX / 16sv_datatype / classbase.h < prev    next >
C/C++ Source or Header  |  1983-01-14  |  5KB  |  164 lines

  1.  
  2. #ifndef CLASSBASE_H
  3. #define CLASSBASE_H 1
  4.  
  5. /*
  6. **
  7. **  $VER: classbase.h 1.2 (9.11.97)
  8. **  16sv.datatype 1.2
  9. **
  10. **  Header file for DataTypes class
  11. **
  12. **  Written 1996/97 by Roland 'Gizzy' Mainz
  13. **  Original example source from David N. Junod
  14. **
  15. */
  16.  
  17. /* amiga includes */
  18. #include <exec/types.h>
  19. #include <exec/ports.h>
  20. #include <exec/memory.h>
  21. #include <exec/lists.h>
  22. #include <exec/semaphores.h>
  23. #include <exec/execbase.h>
  24. #include <dos/dos.h>
  25. #include <dos/dosextens.h>
  26. #include <dos/rdargs.h>
  27. #include <dos/dostags.h>
  28. #include <intuition/classes.h>  /* must be $Id: classes.h,v 40.0 94/02/15 17:46:35 davidj Exp Locker: davidj $ */
  29. #include <intuition/classusr.h>
  30. #include <intuition/cghooks.h>
  31. #include <intuition/icclass.h>
  32. #include <intuition/gadgetclass.h>
  33. #include <datatypes/datatypes.h>
  34. #include <datatypes/datatypesclass.h>
  35. #include <datatypes/soundclass.h>
  36.  
  37. /* amiga prototypes */
  38. #include <clib/macros.h>
  39. #include <clib/exec_protos.h>
  40. #include <clib/utility_protos.h>
  41. #include <clib/dos_protos.h>
  42. #include <clib/intuition_protos.h>
  43. #include <clib/datatypes_protos.h>
  44. #include <clib/dtclass_protos.h>
  45. #include <clib/iffparse_protos.h>
  46. #ifdef PARAMETERS_STACK
  47. #include <clib/alib_protos.h>
  48. #include <clib/alib_stdio_protos.h>
  49. #endif /* PARAMETERS_STACK */
  50.  
  51. /* amiga pragmas */
  52. #include <pragmas/exec_pragmas.h>
  53. #include <pragmas/utility_pragmas.h>
  54. #include <pragmas/dos_pragmas.h>
  55. #include <pragmas/intuition_pragmas.h>
  56. #include <pragmas/datatypes_pragmas.h>
  57. #include <pragmas/dtclass_pragmas.h>
  58. #include <pragmas/iffparse_pragmas.h>
  59. #include <pragmas/alib_pragmas.h> /* amiga.lib stubs (tagcall pragmas) */
  60.  
  61. /* ANSI includes */
  62. #include <string.h>
  63.  
  64. /*****************************************************************************/
  65.  
  66. #ifndef AFF_68060
  67. #define AFF_68060 (1L<<7)
  68. #endif /* !AFF_68060 */
  69.  
  70. /*****************************************************************************/
  71.  
  72. struct ClassBase
  73. {
  74.     struct ClassLibrary     cb_Lib;
  75.     struct ExecBase        *cb_SysBase;
  76.     struct Library         *cb_UtilityBase;
  77.     struct Library         *cb_DOSBase;
  78.     struct Library         *cb_IFFParseBase;
  79.     struct Library         *cb_IntuitionBase;
  80.     struct Library         *cb_DataTypesBase;
  81.     struct Library         *cb_SuperClassBase;
  82.     BPTR                    cb_SegList;
  83.     struct SignalSemaphore  cb_Lock;           /* Access lock */
  84. };
  85.  
  86. /*****************************************************************************/
  87.  
  88. /* SASC specific defines */
  89. #define DISPATCHERFLAGS __saveds __asm
  90. #define ASM __asm
  91. #define REGD0 register __d0
  92. /* ... */
  93. #define REGA0 register __a0
  94. #define REGA1 register __a1
  95. #define REGA2 register __a2
  96. /* ... */
  97. #define REGA6 register __a6
  98.  
  99. /*****************************************************************************/
  100.  
  101. #define SysBase        (cb -> cb_SysBase)
  102. #define UtilityBase    (cb -> cb_UtilityBase)
  103. #define DOSBase        (cb -> cb_DOSBase)
  104. #define IFFParseBase   (cb -> cb_IFFParseBase)
  105. #define IntuitionBase  (cb -> cb_IntuitionBase)
  106. #define DataTypesBase  (cb -> cb_DataTypesBase)
  107.  
  108. /*****************************************************************************/
  109.  
  110. /* integer division, rounded */
  111. #define INTDIVR( x, y ) (((x) + ((y) / 2)) / (y))
  112.  
  113. /* Align memory on 4 byte boundary */
  114. #define ALIGN_LONG( mem ) ((APTR)((((ULONG)(mem)) + 3UL) & ~3UL))
  115.  
  116. /* Align memory on 16 byte boundary */
  117. #define ALIGN_QUADLONG( mem ) ((APTR)((((ULONG)(mem)) + 15UL) & ~15UL))
  118.  
  119. /* Following ptr */
  120. #define MEMORY_FOLLOWING( ptr )     ((void *)((ptr) + 1))
  121.  
  122. /* Memory after n bytes */
  123. #define MEMORY_N_FOLLOWING( ptr, n ) ((void *)(((UBYTE *)ptr) + n ))
  124.  
  125. /* Memory after n bytes, longword aligned (Don't forget the 4 bytes in size for rounding !!) */
  126. #define MEMORY_NAL_FOLLOWING( ptr, n ) (ALIGN_LONG( ((void *)(((UBYTE *)ptr) + n )) ))
  127.  
  128. /* casts */
  129. #define V( x )    ((VOID *)(x))
  130. #define G( o )    ((struct Gadget *)(o))
  131. #define EXTG( o ) ((struct ExtGadget *)(o))
  132.  
  133. /* Exclude tag item */
  134. #define XTAG( expr, tagid ) ((Tag)((expr)?(tagid):(TAG_IGNORE)))
  135.  
  136. /* Get data from pointer only if it is NOT NULL (and cast data to ULONG) */
  137. #define XPTRDATA( x ) ((ULONG)((x)?(*(x)):(0UL)))
  138.  
  139. /* Boolean conversion */
  140. #define MAKEBOOL( x ) ((BOOL)((x) != NULL))
  141.  
  142. /*****************************************************************************/
  143.  
  144. #ifndef PARAMETERS_STACK
  145. #define PARAMETERS_STACK 1
  146. #define  CLIB_ALIB_PROTOS_H
  147. __stdargs void  NewList( struct List *list );
  148. __stdargs ULONG DoMethodA( Object *obj, Msg message );
  149. __stdargs ULONG DoMethod( Object *obj, unsigned long MethodID, ... );
  150. __stdargs ULONG DoSuperMethodA( struct IClass *cl, Object *obj, Msg message );
  151. __stdargs ULONG DoSuperMethod( struct IClass *cl, Object *obj, unsigned long MethodID, ... );
  152. __stdargs ULONG CoerceMethodA( struct IClass *cl, Object *obj, Msg message );
  153. __stdargs ULONG CoerceMethod( struct IClass *cl, Object *obj, unsigned long MethodID, ... );
  154. __stdargs ULONG SetSuperAttrs( struct IClass *cl, Object *obj, unsigned long Tag1, ... );
  155. #endif /* !PARAMETERS_STACK */
  156.  
  157. /*****************************************************************************/
  158.  
  159. #include "class_iprotos.h"
  160.  
  161. #endif /* !CLASSBASE_H */
  162.  
  163.  
  164.