home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / DC-POS24.LZX / pOS / IncPOS.lzx / pExec / Class.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-18  |  2.4 KB  |  100 lines

  1. #ifndef __INC_POS_PEXEC_CLASS_H
  2. #define __INC_POS_PEXEC_CLASS_H
  3. /*******************************************************************
  4.  Includes Release 24
  5.  (C) Copyright 1995-1997 proDAD
  6.      All Rights Reserved
  7.  
  8.  $AUT Holger Burkarth
  9.  $DAT >>Class.h<<   26 Oct 1996    08:17:52 - (C) ProDAD
  10. *******************************************************************/
  11. #ifndef __INC_POS_PEXEC_LIST_H
  12. #include <pExec/List.h>
  13. #endif
  14.  
  15.  
  16. /*----------------------------------
  17. -----------------------------------*/
  18. struct pOS_Class
  19. {
  20.   ULONG (*cl_Dispatcher)(_R_LB struct pOS_ExecBase*,_R_A0 const struct pOS_Class*,_R_A1 APTR,_R_A2 struct pOS_Method*);
  21.   size_t      cl_ObjSize;       /* without sizeof(pOS_Object) */
  22.   size_t      cl_ObjOffset;
  23.   UWORD       cl_ClassNr;
  24.   UWORD       cl_Pad;           /* damit sizeof==16 wird */
  25. };
  26.  
  27.  
  28. /*----------------------------------
  29. -----------------------------------*/
  30. struct pOS_Method
  31. {
  32.   ULONG  mth_ID;
  33. };
  34.  
  35.  
  36.  
  37. /*----------------------------------
  38. -----------------------------------*/
  39. struct pOS_Member
  40. {
  41.   struct pOS_NClass *mb_NClass;
  42.   size_t             mb_MembOffset;
  43. };
  44.  
  45.  
  46.  
  47.  
  48. /*----------------------------------
  49. -----------------------------------*/
  50. struct pOS_NClass
  51. {
  52.   struct pOS_ExNode        ncl_Node;        /* Public-Class => ln_Name for ClassName */
  53.   UWORD                    ncl_OpenCnt;
  54.   UWORD                    ncl_Version;
  55.   size_t                   ncl_SumSize;     /* with sizeof(pOS_Object) */
  56.   ULONG                    ncl_UserData;    /* for the User own use */
  57.   struct pOS_Library      *ncl_Library;     /* ~NULL, wurde nachgeladen */
  58.   size_t                   ncl_NASize;      /* beinhaltet die dynamische Länge von pOS_NClass */
  59.                                           /* Null => wurde nicht dyn. erzeugt */
  60.   const struct pOS_NClass *ncl_SupClass;    /* ~NULL => SuperClass */
  61.  
  62.   UBYTE  ncl_Reserved[18];
  63.  
  64.   UWORD                    ncl_MembCnt;   /* Anzahl der Member-Objekte */
  65.   UWORD                    ncl_ClassCnt;  /* Anzahl der Klassen */
  66.   struct pOS_Class         ncl_Class[1];
  67.  
  68. /*\
  69. *** pOS_Class  x[ncl_ClassCnt-1]
  70. *** pOS_Member y[ncl_MembCnt]
  71. \*/
  72. };
  73.  
  74.  
  75. /*----------------------------------
  76. -----------------------------------*/
  77. struct pOS_Object
  78. {
  79.   struct pOS_NClass *obj_Class;
  80. };
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90. struct pOS_NClass* pOS_GETNCLASS(APTR);
  91.  
  92. #define pOS_GETNCLASS(obj) \
  93.   ( (((struct pOS_Object*)(obj))-1)->obj_Class  )
  94.  
  95.  
  96. /* Error from Dispatcher */
  97. #define pOS_CLASSERR  (~0l)
  98.  
  99. #endif
  100.