00001 00007 /*----------------------------------------------------------------------------*/ 00008 /* C Tool Box: Designed and implemented by: */ 00009 /* Walter F.J. Mueller Gesellschaft fuer Schwerionenforschung (GSI) */ 00010 /* Planckstrasse 1, D-64291 Darmstadt, Germany */ 00011 /* Email: W.F.J.Mueller@gsi.de */ 00012 /* WWW: http://www-kp3.gsi.de/www/kp3/people/mueller.html */ 00013 /*------------------------------------------+---------------------------------*/ 00014 00015 //------------------------------------------+----------------------------------- 00017 00018 inline CTBcallbackSourceBase::CTBcallbackSourceBase() 00019 : m_shead() 00020 {} 00021 00022 //------------------------------------------+----------------------------------- 00024 00025 inline CTBcallbackSourceBase::CTBcallbackSourceBase( 00026 const CTBcallbackSourceBase&) 00027 : m_shead() 00028 {} 00029 00030 //------------------------------------------+----------------------------------- 00032 00033 inline CTBcallbackSourceBase& CTBcallbackSourceBase::operator=( 00034 const CTBcallbackSourceBase&) 00035 { 00036 return *this; 00037 } 00038 00039 //------------------------------------------+----------------------------------- 00041 00042 inline bool CTBcallbackSourceBase::operator! () const 00043 { 00044 return !m_shead; 00045 } 00046 00047 //------------------------------------------+----------------------------------- 00049 00050 inline CTBcallbackSourceBase::operator bool () const 00051 { 00052 return m_shead; 00053 } 00054 00055 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00057 00058 inline CTBcallbackTargetBase::CTBcallbackTargetBase() 00059 : m_thead() 00060 {} 00061 00062 //------------------------------------------+----------------------------------- 00064 00065 inline CTBcallbackTargetBase::CTBcallbackTargetBase( 00066 const CTBcallbackTargetBase& rhs) 00067 : m_thead() 00068 { 00069 operator=(rhs); 00070 } 00071 00072 //------------------------------------------+----------------------------------- 00074 00075 inline bool CTBcallbackTargetBase::operator! () const 00076 { 00077 return !m_thead; 00078 } 00079 00080 //------------------------------------------+----------------------------------- 00082 00083 inline CTBcallbackTargetBase::operator bool () const 00084 { 00085 return m_thead; 00086 } 00087 00088 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00089 00090 //------------------------------------------+----------------------------------- 00092 00093 inline void CTBcallbackLink::Mark() 00094 { 00095 mi_nbusy += 1; 00096 return; 00097 } 00098 00099 //------------------------------------------+----------------------------------- 00101 00102 inline void CTBcallbackLink::Unmark() 00103 { 00104 mi_nbusy -= 1; 00105 return; 00106 } 00107 00108 //------------------------------------------+----------------------------------- 00110 00111 inline bool CTBcallbackLink::Busy() const 00112 { 00113 return mi_nbusy > 0; 00114 } 00115 00116 00117 //------------------------------------------+----------------------------------- 00119 00120 inline bool CTBcallbackLink::Zombie() const 00121 { 00122 return !m_slink || !m_tlink; 00123 } 00124 00125 //------------------------------------------+----------------------------------- 00127 00128 inline bool CTBcallbackLink::Deletable() const 00129 { 00130 return Zombie() && !Busy(); 00131 } 00132 00133 //------------------------------------------+----------------------------------- 00135 00136 inline void CTBcallbackLink::UnlinkSource() 00137 { 00138 if (m_slink) m_slink.Remove(&CTBcallbackLink::m_slink); 00139 return; 00140 } 00141 00142 //------------------------------------------+----------------------------------- 00144 00145 inline void CTBcallbackLink::UnlinkTarget() 00146 { 00147 if (m_tlink) m_tlink.Remove(&CTBcallbackLink::m_tlink, 00148 &CTBcallbackTargetBase::m_thead); 00149 return; 00150 } 00151