home *** CD-ROM | disk | FTP | other *** search
/ Dream 41 / Amiga_Dream_41.iso / Amiga / Programmation / c / gcc / objam02.lha / objam / init / objc_init.c < prev   
Encoding:
C/C++ Source or Header  |  1995-04-16  |  1.2 KB  |  56 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. void objc_libopen_fatal(void)
  20. {
  21.   PutStr("*** Objective C initialisation error:\n  Can't open " OBJCNAME ".\n  Aborting.\n");
  22.   exit(20);
  23. }
  24.  
  25. static void __Objc_Init(void)
  26. {
  27.   register void *globaldata asm("a4");
  28.   struct __objclib_init_data *libinitdata;
  29.  
  30.   if(!(ObjcBase=(struct ObjcBase *)OpenLibrary(OBJCNAME,OBJCVERSION)))
  31.     objc_libopen_fatal();
  32.   if(!(libinitdata=(struct __objclib_init_data *)malloc(sizeof(struct __objclib_init_data))))
  33.     objc_libopen_fatal();
  34.   libinitdata->globaldata=globaldata;
  35.   libinitdata->abort=abort;
  36.   __objclib_init(libinitdata);
  37. }
  38.  
  39. static void __Objc_Exit(void)
  40. {
  41.   if(ObjcBase)
  42.   {
  43.     CloseLibrary((struct Library *)ObjcBase);
  44.     ObjcBase=NULL;
  45.   }
  46. }
  47.  
  48.  
  49. /********************************************************************* stabs */
  50.  
  51. /* ADD2INIT(__Objc_Init,0); */
  52. /* ADD2EXIT(__Objc_Exit,0); */
  53.  
  54. ADD2LIST(__Objc_Init,__CTOR_LIST__,22);
  55. ADD2LIST(__Objc_Exit,__DTOR_LIST__,22);
  56.