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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: active_obj.cpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 19:18:00  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.8
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: active_obj.cpp,v 1000.2 2004/06/01 19:18:00 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. * Author: Michael Kholodov
  35. *
  36. * File Description:  CActiveObject and IEventListener, object notification
  37. *                    interface
  38. *
  39. * ---------------------------------------------------------------------------
  40. * $Log: active_obj.cpp,v $
  41. * Revision 1000.2  2004/06/01 19:18:00  gouriano
  42. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.8
  43. *
  44. * Revision 1.8  2004/05/17 21:10:28  gorelenk
  45. * Added include of PCH ncbi_pch.hpp
  46. *
  47. * Revision 1.7  2004/02/27 14:37:32  kholodov
  48. * Modified: set collection replaced by list for listeners
  49. *
  50. * Revision 1.6  2002/12/16 18:56:50  kholodov
  51. * Fixed: memory leak in CStatement object
  52. *
  53. * Revision 1.5  2002/10/22 22:14:01  vakatov
  54. * Get rid of a compilation warning
  55. *
  56. * Revision 1.4  2002/09/18 18:47:30  kholodov
  57. * Modified: CActiveObject inherits directly from IEventListener
  58. * Added: Additional trace output
  59. *
  60. * Revision 1.3  2002/09/09 20:48:56  kholodov
  61. * Added: Additional trace output about object life cycle
  62. * Added: CStatement::Failed() method to check command status
  63. *
  64. * Revision 1.2  2002/02/05 17:16:23  kholodov
  65. * Put into right scope, invalidobjex retired
  66. *
  67. * Revision 1.1  2002/01/30 14:51:20  kholodov
  68. * User DBAPI implementation, first commit
  69. *
  70. *
  71. *
  72. * ===========================================================================
  73. */
  74. #include <ncbi_pch.hpp>
  75. #include "active_obj.hpp"
  76. #include <corelib/ncbistre.hpp>
  77. #include <typeinfo>
  78. //#include "invalidobjex.hpp"
  79. BEGIN_NCBI_SCOPE
  80. CActiveObject::CActiveObject() 
  81. {
  82.     SetIdent("ActiveObject");
  83. }
  84. CActiveObject::~CActiveObject() 
  85. {
  86. }
  87. void CActiveObject::AddListener(CActiveObject* obj)
  88. {
  89.   m_listenerList.push_back(obj);
  90.   _TRACE("Object " << obj->GetIdent() << " " << (void*)obj
  91.          << " inserted into "
  92.          << GetIdent() << " " << (void*)this << " listener list");
  93. }
  94. void CActiveObject::RemoveListener(CActiveObject* obj)
  95. {
  96.     m_listenerList.remove(obj);
  97.     _TRACE("Object " << obj->GetIdent() << " " << (void*)obj
  98.            << " removed from "
  99.            << GetIdent() << " " << (void*)this << " listener list");
  100.   
  101. }
  102. void CActiveObject::Notify(const CDbapiEvent& e)
  103. {
  104.   TLList::iterator i = m_listenerList.begin();
  105.   for( ; i != m_listenerList.end(); ++i ) {
  106.       _TRACE("Object " << GetIdent() << " " << (void*)this
  107.              << " notifies " << (*i)->GetIdent() << " " << (void*)(*i));
  108.     (*i)->Action(e);
  109.   }
  110. }
  111. void CActiveObject::Action(const CDbapiEvent&)
  112. {
  113. }
  114. CActiveObject::TLList& CActiveObject::GetListenerList()
  115. {
  116.     return m_listenerList;
  117. }
  118.   
  119. string CActiveObject::GetIdent() const
  120. {
  121.     return m_ident;
  122. }
  123. void CActiveObject::SetIdent(const string& name)
  124. {
  125.   m_ident = name;
  126. }
  127. END_NCBI_SCOPE
  128. //======================================================