⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 weakmap.inl

📁 ncbi源码
💻 INL
字号:
/* * =========================================================================== * PRODUCTION $Log: weakmap.inl,v $ * PRODUCTION Revision 1000.0  2003/10/29 15:33:24  gouriano * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.7 * PRODUCTION * =========================================================================== */#if defined(WEAKMAP__HPP)  &&  !defined(WEAKMAP__INL)#define WEAKMAP__INL/*  $Id: weakmap.inl,v 1000.0 2003/10/29 15:33:24 gouriano Exp $* ===========================================================================**                            PUBLIC DOMAIN NOTICE*               National Center for Biotechnology Information**  This software/database is a "United States Government Work" under the*  terms of the United States Copyright Act.  It was written as part of*  the author's official duties as a United States Government employee and*  thus cannot be copyrighted.  This software/database is freely available*  to the public for use. The National Library of Medicine and the U.S.*  Government have not placed any restriction on its use or reproduction.**  Although all reasonable efforts have been taken to ensure the accuracy*  and reliability of the software and data, the NLM and the U.S.*  Government do not and cannot warrant the performance or results that*  may be obtained by using this software or data. The NLM and the U.S.*  Government disclaim all warranties, express or implied, including*  warranties of performance, merchantability or fitness for any particular*  purpose.**  Please cite the author in any work or product based on this material.** ===========================================================================** Author: Eugene Vasilchenko** File Description:*   Inline methods for classes defined in weakmap.hpp** ---------------------------------------------------------------------------* $Log: weakmap.inl,v $* Revision 1000.0  2003/10/29 15:33:24  gouriano* PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.7** Revision 1.7  2001/05/17 15:01:19  lavr* Typos corrected** Revision 1.6  2001/01/05 20:08:54  vasilche* Added util directory for various algorithms and utility classes.** Revision 1.5  2000/12/26 22:23:46  vasilche* Fixed errors of compilation on Mac.** Revision 1.4  2000/10/20 15:51:28  vasilche* Fixed data error processing.* Added interface for constructing container objects directly into output stream.* object.hpp, object.inl and object.cpp were split to* objectinfo.*, objecttype.*, objectiter.* and objectio.*.** Revision 1.3  2000/10/13 16:28:34  vasilche* Reduced header dependency.* Avoid use of templates with virtual methods.* Reduced amount of different maps used.* All this lead to smaller compiled code size (libraries and programs).** Revision 1.2  2000/09/29 20:14:30  vasilche* Fixed name conflict (map).** Revision 1.1  2000/09/29 16:18:16  vasilche* Fixed binary format encoding/decoding on 64 bit compulers.* Implemented CWeakMap<> for automatic cleaning map entries.* Added cleaning local hooks via CWeakMap<>.* Renamed ReadTypeName -> ReadFileHeader, ENoTypeName -> ENoFileHeader.* Added some user interface methods to CObjectIStream, CObjectOStream and* CObjectStreamCopier.** ===========================================================================*/template<class Object>inlinevoid CWeakMapKey<Object>::Register(TWeakMap* m){    _ASSERT(m_Maps.find(m) == m_Maps.end());    m_Maps.insert(m);}template<class Object>inlinevoid CWeakMapKey<Object>::Deregister(TWeakMap* m){    _ASSERT(m_Maps.find(m) != m_Maps.end());    m_Maps.erase(m);}template<class Object>inlinesize_t CWeakMap<Object>::size(void) const{    return m_Map.size();}template<class Object>inlinebool CWeakMap<Object>::empty(void) const{    return m_Map.empty();}template<class Object>inlineCWeakMap<Object>::CWeakMap(void){}template<class Object>inlineCWeakMap<Object>::~CWeakMap(void){    while ( !empty() ) {        erase(*(m_Map.begin()->first));    }}template<class Object>inlinevoid CWeakMap<Object>::insert(key_type& key, const mapped_type& object){    pair<TMap::iterator, bool> insert =        m_Map.insert(TMap::value_type(&key, object));    if ( insert.second ) {        key.Register(this);    }    else {        insert.first->second = object;    }}template<class Object>inlinevoid CWeakMap<Object>::erase(key_type& key){    TMap::iterator mi = m_Map.find(&key);    if ( mi != m_Map.end() ) {        m_Map.erase(mi);        key.Deregister(this);    }}template<class Object>inlinevoid CWeakMap<Object>::Forget(key_type& key){    _ASSERT(m_Map.find(&key) != m_Map.end());    m_Map.erase(&key);    key.Deregister(this);}template<class Object>inlinetypename CWeakMap<Object>::const_iteratorCWeakMap<Object>::find(key_type& key) const{    return m_Map.find(&key);}template<class Object>inlinetypename CWeakMap<Object>::iteratorCWeakMap<Object>::find(key_type& key){    return m_Map.find(&key);}template<class Object>inlinetypename CWeakMap<Object>::const_iteratorCWeakMap<Object>::begin(void) const{    return m_Map.begin();}template<class Object>inlinetypename CWeakMap<Object>::iteratorCWeakMap<Object>::begin(void){    return m_Map.begin();}template<class Object>inlinetypename CWeakMap<Object>::const_iteratorCWeakMap<Object>::end(void) const{    return m_Map.end();}template<class Object>inlinetypename CWeakMap<Object>::iteratorCWeakMap<Object>::end(void){    return m_Map.end();}template<class Object>inlineCWeakMapKey<Object>::CWeakMapKey(void){}template<class Object>inlineCWeakMapKey<Object>::~CWeakMapKey(void){    while ( !m_Maps.empty() ) {        (*m_Maps.begin())->Forget(*this);    }}#endif /* def WEAKMAP__HPP  &&  ndef WEAKMAP__INL */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -