home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C++ / Applications / Nuntius 1.2 / src / Nuntius / UPtrObject.cp < prev    next >
Encoding:
Text File  |  1994-02-20  |  1.6 KB  |  81 lines  |  [TEXT/MPS ]

  1. // Copyright © 1993 Peter Speck (speck@dat.ruc.dk).  All rights reserved.
  2. // UPtrObject.cp
  3.  
  4. #include "UPtrObject.h"
  5. #include "UFatalError.h"
  6.  
  7. #pragma segment MyTools
  8.  
  9. Boolean IsPtrObject(PPtrObject *obj)
  10. {
  11. #if qDebug
  12.     if (!obj)
  13.         fprintf(stderr, "obj is nil\n");
  14.     else if (long(obj) & 1)
  15.         fprintf(stderr, "obj is odd: $%lx\n", long(obj));
  16.     else if (PtrZone(Ptr(obj)) != ApplicationZone() || MemError())
  17.         fprintf(stderr, "PtrZone(Ptr(obj)) = $%lx != ApplicationZone() = %lx,   obj = $%lx\n", PtrZone(Ptr(obj)), ApplicationZone(), long(obj));
  18.     else if (*(long*)obj == 0xF1F1F1F1)
  19.         fprintf(stderr, "obj appears to be uninitialized: at $%lx\n", long(obj));
  20.     else
  21.         return true;
  22.     ProgramBreak("Probably don't continue...");
  23.     return false;
  24. #else
  25.     return obj != nil;
  26. #endif
  27. }
  28.  
  29. void FreeIfPtrObject(PPtrObject *obj)
  30. {
  31.     if (obj && IsPtrObject(obj))
  32.         delete obj;
  33. }
  34.  
  35. void FailNonPtrObject(PPtrObject *obj)
  36. {
  37.     if (!IsPtrObject(obj))
  38.         FailOSErr(minErr);
  39. }
  40.  
  41. //----------------------------------------------------------------------
  42.  
  43. void InitUPtrObject()
  44. {
  45. }
  46.  
  47. void *PPtrObject::operator new(size_t size)
  48. {
  49.     Ptr p = NewPtr(size);
  50.     if (!p)
  51.         PanicExitToShell("Got nil NewPtr in 'void *PPtrObject::operator new'");
  52.         //@@ Failure ????
  53. #if qDebug
  54.     BlockSet(p, size, 0xF1);
  55. #endif
  56.     return p;
  57. }
  58.  
  59. void PPtrObject::operator delete(void *p)
  60. {
  61.     if (!p)
  62.         return;
  63. #if qDebug
  64.     IsPtrObject((PPtrObject*)p);
  65.     long size = GetPtrSize(Ptr(p));
  66.     BlockSet(Ptr(p), size, 0xF1);
  67. #endif
  68.     DisposPtr(Ptr(p));
  69.     if (MemError())
  70.         ProgramBreak("Bad DisposPtr()");
  71. }
  72.  
  73. PPtrObject::PPtrObject()
  74. {
  75. }
  76.  
  77. PPtrObject::~PPtrObject()
  78. {
  79. }
  80.  
  81.