home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / utilities / rgfx-dt / source / libbase.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-22  |  1.4 KB  |  74 lines

  1. #include <pragma/exec_lib.h>
  2. #include <pragma/intuition_lib.h>
  3. #include <dos/dos.h>
  4. #include <exec/resident.h>
  5. #include "class.h"
  6.  
  7. struct ClassBase:Library
  8. {
  9. BPTR sb_SegList;
  10. IClass *cb_Class;
  11. };
  12.  
  13. #pragma libbase ClassBase
  14.  
  15. extern "C"
  16. {
  17. IClass *ObtainClass(register __a6 ClassBase *cb);
  18. }
  19.  
  20. extern "C" void abortLibInit();
  21.  
  22. extern APTR Dispatcher;
  23.  
  24. char LibNameString[]="rgfx.datatype";
  25. char LibVersionString[]="$VER:rgfx.datatype 43.13 (22.01.00) © 1997-2000 by Achim Stegemann\n";
  26.  
  27. Library *XpkBase;
  28. Library *RenderBase;
  29. Library *SuperClassBase;
  30. Library *CyberGfxBase;
  31.  
  32. static IClass *InitClass(register __a6 ClassBase *cb)
  33. {
  34. IClass *cl;
  35. if(cl=MakeClass(LibNameString,"picture.datatype",0,sizeof(Data),0))
  36.     {
  37.     cl->h_Entry=&Dispatcher;
  38.     cl->cl_UserData=ULONG(cb);
  39.     AddClass(cl);
  40.     }
  41. return cl;
  42. }
  43.  
  44. extern "C" void INIT_7_LibInit(register __a6 ClassBase *cb)
  45. {
  46. if(SuperClassBase=OpenLibrary("datatypes/picture.datatype",39))
  47.     {
  48.     if(XpkBase=OpenLibrary("xpkmaster.library",5))
  49.         {
  50.         if(RenderBase=OpenLibrary("render.library",30))
  51.             {
  52.             CyberGfxBase=OpenLibrary("cybergraphics.library",40);
  53.             if(cb->cb_Class=cb->cb_Class=InitClass(cb)) return;
  54.             }
  55.         }
  56.     }
  57. abortLibInit();
  58. }
  59.  
  60. extern "C" void EXIT_7_LibInit(register __a6 ClassBase *cb)
  61. {
  62. if(cb->cb_Class) FreeClass(cb->cb_Class);
  63. CloseLibrary(CyberGfxBase);
  64. CloseLibrary(RenderBase);
  65. CloseLibrary(XpkBase);
  66. CloseLibrary(SuperClassBase);
  67. }
  68.  
  69. extern "C" IClass *ObtainClass(register __a6 ClassBase *cb)
  70. {
  71. return cb->cb_Class;
  72. }
  73.  
  74.