home *** CD-ROM | disk | FTP | other *** search
/ Tools / WinSN5.0Ver.iso / NETSCAP.50 / WIN1998.ZIP / ns / lib / mac / UserInterface / CSuspenderResumer.cp < prev    next >
Encoding:
Text File  |  1998-04-08  |  3.3 KB  |  109 lines

  1. /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
  2.  *
  3.  * The contents of this file are subject to the Netscape Public License
  4.  * Version 1.0 (the "NPL"); you may not use this file except in
  5.  * compliance with the NPL.  You may obtain a copy of the NPL at
  6.  * http://www.mozilla.org/NPL/
  7.  *
  8.  * Software distributed under the NPL is distributed on an "AS IS" basis,
  9.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
  10.  * for the specific language governing rights and limitations under the
  11.  * NPL.
  12.  *
  13.  * The Initial Developer of this code under the NPL is Netscape
  14.  * Communications Corporation.  Portions created by Netscape are
  15.  * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
  16.  * Reserved.
  17.  */
  18.  
  19. #include "CSuspenderResumer.h"
  20.  
  21. #include <algorithm> // should be <algo>
  22.  
  23. // ---------------------------------------------------------------------------
  24. //        [static member data]
  25. // ---------------------------------------------------------------------------
  26.  
  27. list<CSuspenderResumer*>    CSuspenderResumer::sSuspendersAndResumers;// = nil;
  28. Boolean                        CSuspenderResumer::sIsSuspended = false;
  29.  
  30. // ---------------------------------------------------------------------------
  31. //        Ñ CSuspenderResumer
  32. // ---------------------------------------------------------------------------
  33.  
  34. CSuspenderResumer::CSuspenderResumer()
  35. {
  36.     sSuspendersAndResumers.push_back(this);
  37. }
  38.  
  39. // ---------------------------------------------------------------------------
  40. //        Ñ ~CSuspenderResumer
  41. // ---------------------------------------------------------------------------
  42.  
  43. CSuspenderResumer::~CSuspenderResumer()
  44. {
  45.     CSuspenderResumer* theSuspenderResumer = nil;
  46.     
  47.     list<CSuspenderResumer*>::iterator theItem = find(
  48.                                                     sSuspendersAndResumers.begin(),
  49.                                                     sSuspendersAndResumers.end(),
  50.                                                     theSuspenderResumer);
  51.     if (theItem != sSuspendersAndResumers.end())
  52.     {
  53.         sSuspendersAndResumers.erase(theItem);
  54.     }
  55. }
  56.  
  57. // ---------------------------------------------------------------------------
  58. //        Ñ Suspend
  59. // ---------------------------------------------------------------------------
  60.  
  61. void
  62. CSuspenderResumer::Suspend()
  63. {
  64.       sIsSuspended = true;
  65.  
  66.     list<CSuspenderResumer*>::iterator first    = sSuspendersAndResumers.begin();
  67.     list<CSuspenderResumer*>::iterator last        = sSuspendersAndResumers.end();
  68.  
  69.     while (first != last)
  70.     {
  71.         (*first++)->SuspendSelf();
  72.     }
  73. }
  74.  
  75. // ---------------------------------------------------------------------------
  76. //        Ñ Resume
  77. // ---------------------------------------------------------------------------
  78.  
  79. void
  80. CSuspenderResumer::Resume()
  81. {
  82.       sIsSuspended = false;
  83.  
  84.     list<CSuspenderResumer*>::iterator first    = sSuspendersAndResumers.begin();
  85.     list<CSuspenderResumer*>::iterator last        = sSuspendersAndResumers.end();
  86.  
  87.     while (first != last)
  88.     {
  89.         (*first++)->ResumeSelf();
  90.     }
  91. }
  92.  
  93. // ---------------------------------------------------------------------------
  94. //        Ñ SuspendSelf
  95. // ---------------------------------------------------------------------------
  96.  
  97. void
  98. CSuspenderResumer::SuspendSelf()
  99. {
  100. }
  101.  
  102. // ---------------------------------------------------------------------------
  103. //        Ñ ResumeSelf
  104. // ---------------------------------------------------------------------------
  105.  
  106. void
  107. CSuspenderResumer::ResumeSelf()
  108. {
  109. }