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

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