home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 110 / EnigmaAmiga110CD.iso / indispensabili / utility / apdf / xpdf-0.80 / xpdf / stub.cc < prev    next >
C/C++ Source or Header  |  1999-05-20  |  835b  |  55 lines

  1. #ifdef __SASC
  2.  
  3. #include "gmem.h"
  4.  
  5. // operator new should not return NULL
  6. void* operator new(size_t sz) {
  7.     return gmalloc(sz==0?1:sz);
  8. }
  9.  
  10. void operator delete(void* p) {
  11.     gfree(p);
  12. }
  13.  
  14. #endif
  15.  
  16.  
  17. #ifdef __GNUC__
  18. //#include <powerup/gcclib/powerup_protos.h>
  19.  
  20. typedef void (*fp)();
  21.  
  22. extern fp __CTOR_LIST__;
  23. extern fp __DTOR_LIST__;
  24. extern fp __END_CTOR_LIST__;
  25. extern fp __END_DTOR_LIST__;
  26.  
  27.  
  28. class stub_t {
  29.   public:
  30.     stub_t() {
  31.     //PPCprintf("ctors: %lx-%lx\n",&__CTOR_LIST__,&__END_CTOR_LIST__);
  32.     //PPCprintf("dtors: %lx-%lx\n",&__DTOR_LIST__,&__END_DTOR_LIST__);
  33.     fp* p=&__CTOR_LIST__;
  34.     while(*p++);
  35.     while(p<&__END_CTOR_LIST__) {
  36.         if(*p)
  37.         (*p)();
  38.         ++p;
  39.     }
  40.     }
  41.     ~stub_t() {
  42.     fp* p=&__DTOR_LIST__;
  43.     while(*p++);
  44.     while(p<&__END_DTOR_LIST__) {
  45.         if(*p)
  46.         (*p)();
  47.         ++p;
  48.     }
  49.     }
  50. };
  51.  
  52. static stub_t stub;
  53. #endif
  54.  
  55.