home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C++ / Applications / Muddweller 1.2 / source code / Main / NoTrace.cp < prev    next >
Encoding:
Text File  |  1994-02-11  |  2.3 KB  |  107 lines  |  [TEXT/MPS ]

  1. /* NoTrace - Routines which must be compiled with -trace off                  */
  2.  
  3. #include "NoTrace.h"
  4.  
  5.  
  6.         // • Implementation use
  7. #ifndef __GLOBALS__
  8. #include "Globals.h"
  9. #endif
  10.  
  11. #ifndef __MUDDOC__
  12. #include "MUDDoc.h"
  13. #endif
  14.  
  15. #ifndef __UMUDDWELLER__
  16. #include "UMUDDweller.h"
  17. #endif
  18.  
  19.  
  20. //------------------------------------------------------------------------------
  21.  
  22. const int kLargeHist = 256;
  23.  
  24. //------------------------------------------------------------------------------
  25.  
  26. #pragma segment MARes
  27.  
  28. pascal long GrowZone (long needed)
  29. {
  30.     long count, result;
  31.  
  32.     if (gMemReserve && (gMemReserve != GetGZMoveHnd ()) &&
  33.             (gMemReserve != GetGZRootHnd ())) {
  34.         DisposIfHandle (gMemReserve);
  35.         gMemReserve = NULL;
  36.         gMemIsLow = TRUE;
  37.         return 1;
  38.     }
  39.     if (gMemReserve2 && (gMemReserve2 != GetGZMoveHnd ()) &&
  40.             (gMemReserve2 != GetGZRootHnd ())) {
  41.         DisposIfHandle (gMemReserve2);
  42.         gMemReserve2 = NULL;
  43.         gMemIsLow = TRUE;
  44.         return 1;
  45.     }
  46.     count = GetHandleSize ((Handle) gMyDocList) / sizeof (Handle);
  47.     result = 0;
  48.     while ((count-- > 0) && (result == 0))
  49.         result = ((TMUDDoc *) ((**gMyDocList) [count]))->GrowZone (needed);
  50.     return result;
  51. }
  52.  
  53. //------------------------------------------------------------------------------
  54.  
  55. #pragma segment MARes
  56.  
  57. pascal long TCommandView::GrowZone (long )
  58. {
  59.     Handle mvh, roh, h;
  60.     int i;
  61.     
  62.     if (fMaxLines > 0) {
  63.         mvh = GetGZMoveHnd ();
  64.         roh = GetGZRootHnd ();
  65.         i = fFirstIndex;
  66.         while (i != fCurIndex) {
  67.             h = *(*fHandList + i);
  68.             if ((h != mvh) && (h != roh) && (GetHandleSize (h) >= kLargeHist)) {
  69.                 SetHandleSize (h, 0);
  70.                 gPurgedHist = TRUE;
  71.                 return 1;
  72.             }
  73.             i = (i + 1) % fMaxLines;
  74.         }
  75.     }
  76.     return 0;
  77. }
  78.  
  79. //------------------------------------------------------------------------------
  80.  
  81. #pragma segment MARes
  82.  
  83. pascal long TMUDDoc::GrowZone (long needed)
  84. {
  85.     if ((fLogWindow != NULL) && (fLogWindow->fCommandView != NULL))
  86.         return fLogWindow->fCommandView->GrowZone (needed);
  87.     else
  88.         return 0;
  89. }
  90.  
  91. //------------------------------------------------------------------------------
  92.  
  93. #pragma segment MAInit
  94.  
  95. pascal void InitNoTrace (void)
  96. {
  97.     gMemIsLow = FALSE;
  98.     gMemReserve = NewPermHandle (kRsrvSize);
  99.     gMemReserve2 = NewPermHandle (kRsrvSize);
  100.     gMyDocList = (HandleListHandle) NewPermHandle (0);
  101.     FailNIL (gMyDocList);
  102.     gAppGrowZone = GrowZone;
  103.     gPurgedHist = FALSE;
  104. }
  105.  
  106. //------------------------------------------------------------------------------
  107.