home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / utilities / pcd-dt35 / source / libbase.c < prev    next >
C/C++ Source or Header  |  2000-01-22  |  1KB  |  59 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 44.1 (22.01.00) © 1997-2000 by Achim Stegemann\n";
  25.  
  26. Library *SuperClassBase;
  27.  
  28. static IClass *InitClass(register __a6 ClassBase *cb)
  29. {
  30. IClass *cl;
  31. if(cl=MakeClass(LibNameString,"picture.datatype",0,0,0))
  32.     {
  33.     cl->h_Entry=&Dispatcher;
  34.     cl->cl_UserData=ULONG(cb);
  35.     AddClass(cl);
  36.     }
  37. return cl;
  38. }
  39.  
  40. extern "C" void INIT_7_LibInit(register __a6 ClassBase *cb)
  41. {
  42. if(SuperClassBase=OpenLibrary("datatypes/picture.datatype",44))
  43.     {
  44.     if(cb->cb_Class=cb->cb_Class=InitClass(cb)) return;
  45.     }
  46. abortLibInit();
  47. }
  48.  
  49. extern "C" void EXIT_7_LibInit(register __a6 ClassBase *cb)
  50. {
  51. if(cb->cb_Class) FreeClass(cb->cb_Class);
  52. CloseLibrary(SuperClassBase);
  53. }
  54.  
  55. extern "C" IClass *ObtainClass(register __a6 ClassBase *cb)
  56. {
  57. return cb->cb_Class;
  58. }
  59.