home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / AACD / Programming / MR_Classes / Dev / Source / tcpalette / Init.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-07-16  |  1.3 KB  |  56 lines

  1. #define DEBUG
  2. #include <debug.h>
  3.  
  4. #include "private.h"
  5.  
  6. extern ULONG INST_SIZE;
  7.  
  8. BOOL i_OpenLibs(void);
  9. void i_CloseLibs(void);
  10.  
  11. ULONG __asm DispatcherStub(register __a0 Class *Cl, register __a2 Object *Obj, register __a1 Msg M);
  12.  
  13. /**************************************************************************************/
  14.  
  15. UBYTE SuperName[]=m_SUPERCLASS_ID,
  16.       ClassName[]=m_CLASS_ID;
  17.  
  18. //UBYTE version[]="$VER: " m_CLASS_ID " 1.0 "__AMIGADATE__;
  19.  
  20. Class *ClassPtr;
  21.  
  22. int __saveds __asm __UserLibInit(register __a6 struct Library *LibBase)
  23. {
  24. //  DKP("__UserLibInit()\n");
  25.  
  26.   if(i_OpenLibs())
  27.   {
  28.     if(ClassPtr=MakeClass(ClassName,SuperName,0,INST_SIZE,0))
  29.     {
  30. //      DKP("   A4=%8lx A6=%8lx UtilityBase:&%8lx = %8lx\n",getreg(REG_A4),getreg(REG_A6),&UtilityBase,UtilityBase);
  31.       ClassPtr->cl_Dispatcher.h_Data=LibBase;
  32.       ClassPtr->cl_Dispatcher.h_Entry=DispatcherStub;
  33.  
  34.       AddClass(ClassPtr);
  35.       /* Success */
  36.       return(0);
  37.     }
  38.     i_CloseLibs();
  39.   }
  40.   /* Fail */
  41.   return(-1);
  42. }
  43.  
  44. void __saveds __asm __UserLibCleanup(register __a6 struct Library *LibBase)
  45. {
  46. //  DKP("__UserLibCleanup()\n");
  47.   RemoveClass(ClassPtr);
  48.   FreeClass(ClassPtr);
  49.   i_CloseLibs();
  50. }
  51.  
  52. ULONG __asm DispatcherStub(register __a0 Class *Cl, register __a2 Object *Obj, register __a1 Msg M)
  53. {
  54.   return(Dispatcher(Cl,Obj,M,(struct Library *)Cl->cl_Dispatcher.h_Data));
  55. }
  56.