message_history.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:6k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: message_history.cpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 20:44:05  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: message_history.cpp,v 1000.2 2004/06/01 20:44:05 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * File Description:
  35.  *  This files contain definitions for plugin messages history.
  36.  *
  37.  * ===========================================================================
  38.  */
  39. // standard includes
  40. #include <ncbi_pch.hpp>
  41. #include <corelib/ncbistd.hpp>
  42. #include <corelib/ncbimtx.hpp>
  43. #include <gui/core/message_history.hpp>
  44. #include <gui/plugin/PluginMessage.hpp>
  45. #include <gui/plugin/MessageHistoryInfo.hpp>
  46. BEGIN_NCBI_SCOPE
  47. USING_SCOPE(objects);
  48. //========================  CPluginMessageHistory  ===========================
  49. // static members
  50. auto_ptr<CPluginMessageHistory> CPluginMessageHistory::sm_Instance;
  51. // access
  52. CPluginMessageHistory& CPluginMessageHistory::Instance(void)
  53. {
  54.     DEFINE_STATIC_FAST_MUTEX(s_Mutex);
  55.     if ( sm_Instance.get() == 0 ) {
  56.         CFastMutexGuard guard(s_Mutex);
  57.         if ( sm_Instance.get() == 0 ) {
  58.             sm_Instance.reset(new CPluginMessageHistory);
  59.         }
  60.     }
  61.     return *(sm_Instance.get());
  62. }
  63. // constructor
  64. CPluginMessageHistory::CPluginMessageHistory(void)
  65. {
  66. }
  67. // destructor
  68. CPluginMessageHistory::~CPluginMessageHistory(void)
  69. {
  70. }
  71. void CPluginMessageHistory::Clear()
  72. {
  73.     m_Entries.clear();
  74. }
  75. // Add message to history list
  76. void CPluginMessageHistory::AddMessage(const CPluginMessage& msg)
  77. {
  78.     CMessageHistoryEntry entry(msg);
  79.     m_Entries.push_back(entry);
  80.     // !!! update succesor
  81. }
  82. // iterator
  83. CPluginMessageHistory::const_iterator CPluginMessageHistory::begin(void) const
  84. {
  85.     return m_Entries.begin();
  86. }
  87. CPluginMessageHistory::const_iterator CPluginMessageHistory::end(void) const
  88. {
  89.     return m_Entries.end();
  90. }
  91. //========================  CMessageHistoryEntry  ============================
  92. // constructor
  93. CPluginMessageHistory::
  94. CMessageHistoryEntry::CMessageHistoryEntry(const CPluginMessage& msg) :
  95.     m_Info(msg)
  96. {
  97. }
  98. // destructor
  99. CPluginMessageHistory::CMessageHistoryEntry::~CMessageHistoryEntry(void)
  100. {
  101. }
  102. // copy constructor
  103. CPluginMessageHistory::CMessageHistoryEntry::CMessageHistoryEntry
  104. (const CMessageHistoryEntry& other)
  105. {
  106.     *this = other;
  107. }
  108. // assignment operator
  109. CPluginMessageHistory::CMessageHistoryEntry&
  110. CPluginMessageHistory::CMessageHistoryEntry::operator=
  111. (const CMessageHistoryEntry& other)
  112. {
  113.     if ( this != &other ) {
  114.         m_Info.SetId(other.m_Info.GetId());
  115.         m_Info.SetDescription(other.m_Info.GetDescription());
  116.         m_Info.SetReply_to(other.m_Info.GetReply_to());
  117.         m_Info.ResetTime();
  118.         if (other.m_Info.CanGetTime()) {
  119.             m_Info.SetTime(other.m_Info.GetTime());
  120.         }
  121.         m_Predecessor = other.m_Predecessor;
  122.         m_Successors = other.m_Successors;
  123.     }
  124.     return *this;
  125. }
  126. // typedef CMessageHistoryInfo TInfo
  127. const CMessageHistoryInfo& 
  128. CPluginMessageHistory::CMessageHistoryEntry::GetInfo(void) const
  129. {
  130.     return m_Info;
  131. }
  132. // typedef size_t TPredecessor
  133. size_t CPluginMessageHistory::CMessageHistoryEntry::GetPredecessor(void) const
  134. {
  135.     return m_Predecessor;
  136. }
  137. void CPluginMessageHistory::CMessageHistoryEntry::SetPredecessor
  138. (const size_t& value)
  139. {
  140.     m_Predecessor = value;
  141. }
  142. // typedef vector< int > TSuccessors
  143. const vector<size_t>&
  144. CPluginMessageHistory::CMessageHistoryEntry::GetSuccessors(void) const
  145. {
  146.     return m_Successors;
  147. }
  148. void CPluginMessageHistory::CMessageHistoryEntry::AddSuccessor(size_t index)
  149. {
  150.     m_Successors.push_back(index);
  151. }
  152. END_NCBI_SCOPE
  153. /*
  154. * ===========================================================================
  155. *
  156. * $Log: message_history.cpp,v $
  157. * Revision 1000.2  2004/06/01 20:44:05  gouriano
  158. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9
  159. *
  160. * Revision 1.9  2004/05/21 22:27:40  gorelenk
  161. * Added PCH ncbi_pch.hpp
  162. *
  163. * Revision 1.8  2004/03/31 16:26:06  ucko
  164. * +ncbimtx.hpp (no longer included via PluginMessage.hpp)
  165. *
  166. * Revision 1.7  2004/03/24 13:55:29  friedman
  167. * Fixed mutex comment
  168. *
  169. * Revision 1.6  2004/03/23 19:36:42  friedman
  170. * Replaced 'static CFastMutex' with DEFINE_STATIC_FAST_MUTEX
  171. *
  172. * Revision 1.5  2003/12/31 20:26:52  dicuccio
  173. * Added Clear()
  174. *
  175. * Revision 1.4  2003/10/27 17:36:54  dicuccio
  176. * Formatting changes
  177. *
  178. * Revision 1.3  2003/07/18 14:38:17  dicuccio
  179. * Fixed: make sure to check for optional members before calling Get...()
  180. *
  181. * Revision 1.2  2003/07/15 13:53:10  shomrat
  182. * Completion of message history module.
  183. *
  184. * Revision 1.1  2003/07/14 10:59:40  shomrat
  185. * Initial Revision
  186. *
  187. *
  188. * ===========================================================================
  189. */