home *** CD-ROM | disk | FTP | other *** search
/ Dream 41 / Amiga_Dream_41.iso / Amiga / Programmation / c / gcc / objam02.lha / objam / runtime / objclib.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-04-16  |  4.2 KB  |  158 lines

  1. /*
  2. ** ObjectiveAmiga: objc-*.library main module
  3. ** See GNU:lib/libobjam/ReadMe for details
  4. */
  5.  
  6.  
  7. #define LIBIDSTRING "objc-5-2-3.library 2.1 (16.4.95)"
  8. #define LIBVERSION  2
  9. #define LIBREVISION 1
  10.  
  11.  
  12. /****************************************************************** includes */
  13.  
  14. #include <exec/types.h>
  15. #include <exec/execbase.h>
  16. #include <dos/dosextens.h>
  17. #include <proto/exec.h>
  18. #include <headers/stabs.h>
  19.  
  20. #include <libraries/objc.h>
  21. #include <clib/objc_protos.h>
  22.  
  23. #include "zone.h"
  24. #include "atom.h"
  25. #include "misc.h"
  26.  
  27.  
  28. /******************************************************************* defines */
  29.  
  30. #ifdef AMIGAOS_39
  31. #define OSLIBVERSION 39
  32. #else
  33. #define OSLIBVERSION 37
  34. #endif
  35.  
  36.  
  37. /******************************************************************* exports */
  38.  
  39. const BYTE LibName[]=OBJCNAME;
  40. const BYTE LibIdString[]=LIBIDSTRING;
  41. const UWORD LibVersion=LIBVERSION;
  42. const UWORD LibRevision=LIBREVISION;
  43.  
  44.  
  45. /******************************************************* global declarations */
  46.  
  47. struct ObjcBase *myLibPtr;
  48. struct ExecBase *SysBase;
  49. struct DosLibrary *DOSBase;
  50. struct Library *UtilityBase;
  51. struct Library *__UtilityBase;
  52.  
  53.  
  54. /*********************************** user library initialization and cleanup */
  55.  
  56. static int Cleanup(void)
  57. {
  58.   if(__DefaultMallocZone) NXDestroyZone(__DefaultMallocZone);
  59.   if(UtilityBase) CloseLibrary(UtilityBase);
  60.   if(DOSBase) CloseLibrary((struct Library *)DOSBase);
  61.   return 1;
  62. }
  63.  
  64. int __UserLibInit(struct Library *myLib) /* CAUTION: This function may run in a forbidden state */
  65. {
  66.   /* setup your library base - to access library functions over *this* basePtr! */
  67.  
  68.   myLibPtr = (struct ObjcBase *)myLib;
  69.  
  70.   SysBase=*(struct ExecBase **)4;
  71.   if(!(DOSBase=(struct DosLibrary *)OpenLibrary("dos.library",OSLIBVERSION))) return Cleanup();
  72.   if(!(UtilityBase=OpenLibrary("utility.library",OSLIBVERSION))) return Cleanup();
  73.   __UtilityBase=UtilityBase;
  74.   if(!(__DefaultMallocZone=NXCreateZone(2*vm_page_size,vm_page_size,TRUE))) return Cleanup();
  75.   if(!(__AtomList=(struct List *)NXZoneMalloc(__DefaultMallocZone,sizeof(struct List)))) return Cleanup();
  76.   NewList(__AtomList);
  77.  
  78.   return 0;
  79. }
  80.  
  81. void __UserLibCleanUp() /* CAUTION: This function runs in a forbidden state */
  82. {
  83.   Cleanup();
  84. }
  85.  
  86.  
  87. struct __objclib_init_data *libinitdata;
  88.  
  89. BOOL __objclib_init(struct __objclib_init_data *data)
  90. {
  91.   libinitdata=data;
  92.   return TRUE;
  93. }
  94.  
  95.  
  96. /**************************************************************** jump table */
  97.  
  98. ADDTABL_1(__objclib_init,a0);
  99.  
  100. ADDTABL_3(NXCreateZone,d0,d1,d2);
  101. ADDTABL_4(NXCreateChildZone,a0,d0,d1,d2);
  102. ADDTABL_1(NXMergeZone,a0);
  103. ADDTABL_1(NXZoneFromPtr,a1);
  104. ADDTABL_1(NXDestroyZone,a0);
  105. ADDTABL_2(NXZoneMalloc,a0,d0);
  106. ADDTABL_3(NXZoneCalloc,a0,d0,d1);
  107. ADDTABL_3(NXZoneRealloc,a0,a1,d0);
  108. ADDTABL_2(NXZoneFree,a0,a1);
  109. ADDTABL_2(NXNameZone,a0,a1);
  110. ADDTABL_1(NXZonePtrInfo,a1);
  111. ADDTABL_0(NXDefaultMallocZone);
  112. ADDTABL_0(NXMallocCheck);
  113.  
  114. ADDTABL_1(NXUniqueString,a1);
  115. ADDTABL_2(NXUniqueStringWithLength,a1,d0);
  116. ADDTABL_1(NXUniqueStringNoCopy,a1);
  117. ADDTABL_1(NXCopyStringBuffer,a1);
  118. ADDTABL_2(NXCopyStringBufferFromZone,a1,a0);
  119.  
  120. ADDTABL_1(__objc_xmalloc,d0);
  121. ADDTABL_2(__objc_xmalloc_from_zone,d0,a0);
  122. ADDTABL_2(__objc_xrealloc,a0,d0);
  123. ADDTABL_2(__objc_xcalloc,d0,d1);
  124. ADDTABL_1(__objc_xfree,a0);
  125.  
  126. ADDTABL_1(objc_fatal,a0);
  127. ADDTABL_2(__objc_archiving_fatal,a0,d0);
  128. ADDTABL_1(class_create_instance,a1);
  129. ADDTABL_2(class_create_instance_from_zone,a1,a0);
  130. ADDTABL_1(object_copy,a1);
  131. ADDTABL_2(object_copy_from_zone,a1,a0);
  132. ADDTABL_1(object_dispose,a1);
  133.  
  134. ADDTABL_1(objc_aligned_size,a0);
  135. ADDTABL_1(objc_sizeof_type,a0);
  136. ADDTABL_1(objc_alignof_type,a0);
  137. ADDTABL_1(objc_promoted_size,a0);
  138. ADDTABL_1(objc_skip_type_qualifiers,a0);
  139. ADDTABL_1(objc_skip_typespec,a0);
  140. ADDTABL_1(objc_skip_offset,a0);
  141. ADDTABL_1(objc_skip_argspec,a0);
  142. ADDTABL_1(method_get_number_of_arguments,a1);
  143. ADDTABL_1(method_get_sizeof_arguments,a1);
  144. ADDTABL_3(method_get_first_argument,a1,a2,a0);
  145. ADDTABL_2(method_get_next_argument,a2,a0);
  146. ADDTABL_4(method_get_nth_argument,a1,a2,d0,a0);
  147. ADDTABL_1(objc_get_type_qualifiers,a0);
  148.  
  149. ADDTABL_2(sarray_new,d0,a0);
  150. ADDTABL_1(sarray_free,a1);
  151. ADDTABL_1(sarray_lazy_copy,a1);
  152. ADDTABL_2(sarray_realloc,a1,d0);
  153. ADDTABL_3(sarray_at_put,a1,d0,a0);
  154. ADDTABL_3(sarray_at_put_safe,a1,d0,a0);
  155. ADDTABL_0(__objc_print_dtable_stats);
  156.  
  157. ADDTABL_END();
  158.