home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / c / objam01.lha / objam / init / objc_init.c < prev   
Encoding:
C/C++ Source or Header  |  1995-01-18  |  1.2 KB  |  51 lines

  1. /*
  2. ** ObjectiveAmiga: Initialization module source
  3. ** See GNU:lib/libobjam/ReadMe for details
  4. */
  5.  
  6.  
  7. #include <headers/stabs.h>
  8. #include <proto/exec.h>
  9. #include <proto/objc.h>
  10. #include <stdlib.h>
  11. #include <objc/runtime.h> /* The kitchen sink */
  12.  
  13.  
  14. struct ObjcBase *ObjcBase;
  15.  
  16.  
  17. /************************************************************ initialization */
  18.  
  19. static void __Objc_Init(void)
  20. {
  21.   register void *globaldata asm("a4");
  22.   struct __objclib_init_data *libinitdata;
  23.  
  24.   if(!(ObjcBase=(struct ObjcBase *)OpenLibrary(OBJCNAME,OBJCVERSION)))
  25.     objc_fatal("Can't open " OBJCNAME);
  26.  
  27.   if(!(libinitdata=(struct __objclib_init_data *)malloc(sizeof(struct __objclib_init_data))))
  28.     objc_fatal("Can't initialize runtime library (not enough memory)");
  29.   libinitdata->globaldata=globaldata;
  30.   libinitdata->abort=abort;
  31.   __objclib_init(libinitdata);
  32. }
  33.  
  34. static void __Objc_Exit(void)
  35. {
  36.   if(ObjcBase)
  37.   {
  38.     CloseLibrary((struct Library *)ObjcBase);
  39.     ObjcBase=NULL;
  40.   }
  41. }
  42.  
  43.  
  44. /********************************************************************* stabs */
  45.  
  46. /* ADD2INIT(__Objc_Init,0); */
  47. /* ADD2EXIT(__Objc_Exit,0); */
  48.  
  49. ADD2LIST(__Objc_Init,__CTOR_LIST__,22);
  50. ADD2LIST(__Objc_Exit,__DTOR_LIST__,22);
  51.