home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / AACD / Programming / MR_Classes / Dev / Source / supermodel / boopsi_MakeClass.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-07-16  |  906 b   |  31 lines

  1. #include <intuition/classes.h>
  2. #include <proto/intuition.h>
  3. #include "protos.h"
  4.  
  5. #include <dos.h>
  6.  
  7. ULONG __asm A6Loader(register __a0 Class *Cl, register __a2 Object *Obj, register __a1 Msg M);
  8.  
  9. Class *i_MakeClass(STRPTR ClassID, STRPTR SuperClassID, APTR SuperClassPtr, ULONG ISize, ULONG Nil, ULONG(*Entry)() )
  10. {
  11.   Class *c;
  12.   // Hook
  13.   
  14.   if(c=MakeClass(ClassID,SuperClassID,SuperClassPtr,ISize,Nil)) 
  15.   {
  16.     c->cl_Dispatcher.h_Entry    =(HOOKFUNC)A6Loader;
  17.     c->cl_Dispatcher.h_SubEntry =Entry;
  18.     c->cl_Dispatcher.h_Data     =getreg(REG_A6);
  19.   }
  20.   return(c);  
  21. }
  22.  
  23. ULONG __asm A6Loader(register __a0 Class *Cl, register __a2 Object *Obj, register __a1 Msg M)
  24. {
  25.   ULONG __asm (*entry)(register __a0 Class *Cl, register __a2 Object *Obj, register __a1 Msg M, register __a6 APTR Lib);
  26.   
  27.   entry=Cl->cl_Dispatcher.h_SubEntry;
  28.   
  29.   return(entry(Cl,Obj,M,(struct Library *)Cl->cl_Dispatcher.h_Data));
  30. }
  31.