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

📄 message_history.hpp

📁 ncbi源码
💻 HPP
字号:
/* * =========================================================================== * PRODUCTION $Log: message_history.hpp,v $ * PRODUCTION Revision 1000.1  2004/04/12 18:12:30  gouriano * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.4 * PRODUCTION * =========================================================================== */#ifndef GUI_PLUGIN_MESSAGEHISTORY_HPP#define GUI_PLUGIN_MESSAGEHISTORY_HPP/* $Id: message_history.hpp,v 1000.1 2004/04/12 18:12:30 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. * * =========================================================================== * * File Description: *  This files contain definitions for plugin messages history. * * =========================================================================== */#include <corelib/ncbistd.hpp>#include <corelib/ncbiobj.hpp>#include <gui/plugin/PluginMessage.hpp>#include <gui/plugin/MessageHistoryInfo.hpp>#include <vector>BEGIN_NCBI_SCOPE// forward declarationsclass CPluginMessageHistory_CI;//=======================  CPluginMessageHistory  ===========================/*  * NOTE: Messages can be ordered by the time they were entered into the  * message queue which result in a linear data structure.  * It can also be as a 'forest' where messages points to messages they * initiated (a tree stucture). * Though the underlying data structures supporst both views, currently * we support only the linear view at the user level. */class NCBI_XGBPLUGIN_EXPORT CPluginMessageHistory{public:    // access    static CPluginMessageHistory& Instance(void);    // destructor    virtual ~CPluginMessageHistory(void);    // types    typedef objects::CMessageHistoryInfo TInfo;    typedef CPluginMessageHistory_CI     const_iterator;    // clear the current history    void Clear();    // Add message to history list    void AddMessage(const objects::CPluginMessage&);    // Returns the number of message in the history repository    SIZE_TYPE  Size(void) const;        const TInfo& operator[](size_t) const;    // iterator    const_iterator begin(void) const;    const_iterator end(void) const;private:    friend class CPluginMessageHistory_CI;    class CMessageHistoryEntry     {    public:        // constructor        CMessageHistoryEntry(const objects::CPluginMessage&);        // destructor        ~CMessageHistoryEntry(void);        // copy constructor         CMessageHistoryEntry(const CMessageHistoryEntry&);        // assignment operator        CMessageHistoryEntry& operator=(const CMessageHistoryEntry&);        // types        typedef objects::CMessageHistoryInfo TInfo;        typedef size_t                       TPredecessor;        typedef vector<size_t>               TSuccessors;                // typedef CMessageHistoryInfo TInfo        const TInfo& GetInfo(void) const;                // typedef size_t TPredecessor        TPredecessor GetPredecessor(void) const;        void SetPredecessor(const TPredecessor& value);                // typedef vector< int > TSuccessors        const TSuccessors& GetSuccessors(void) const;        void AddSuccessor(size_t);    private:                // data        TInfo           m_Info;        TPredecessor    m_Predecessor;        TSuccessors     m_Successors;    };    // constructor    CPluginMessageHistory(void);    // Prohibit copy constructor and assignment operator    CPluginMessageHistory(const CPluginMessageHistory&);    CPluginMessageHistory& operator=(const CPluginMessageHistory&);    // private types    typedef vector< CMessageHistoryEntry > TEntries;    // data    static auto_ptr<CPluginMessageHistory> sm_Instance;    TEntries                               m_Entries;};//======================  CPluginMessageHistory_CI  ==========================class NCBI_XGBPLUGIN_EXPORT CPluginMessageHistory_CI{public:    // types    typedef CPluginMessageHistory::TInfo    TInfo;    typedef CPluginMessageHistory::TEntries TEntries;    // copy constructor    CPluginMessageHistory_CI(const CPluginMessageHistory_CI&);    // assignment operator    CPluginMessageHistory_CI& operator=(const CPluginMessageHistory_CI&);    // increment & decrement operators    CPluginMessageHistory_CI& operator++(void);    CPluginMessageHistory_CI& operator--(void);    // dereferencing    const TInfo& operator*(void) const;    const TInfo* operator->(void) const;    // comparison    bool operator==(const CPluginMessageHistory_CI& other);    bool operator!=(const CPluginMessageHistory_CI& other);private:    friend CPluginMessageHistory_CI CPluginMessageHistory::begin(void) const;    friend CPluginMessageHistory_CI CPluginMessageHistory::end(void) const;    // constructors    CPluginMessageHistory_CI(void);        CPluginMessageHistory_CI(CPluginMessageHistory::TEntries::const_iterator);    const CPluginMessageHistory_CI operator++(int);    const CPluginMessageHistory_CI operator--(int);    // data    CPluginMessageHistory::TEntries::const_iterator   m_Iterator;};//////////////////////////////////////////////////////////////////////////////// inline methods ///////////////////////////////////////////////////////////////////////////////////===============  CPluginMessageHistory  =================inlineSIZE_TYPE CPluginMessageHistory::Size(void) const{    return m_Entries.size();}inlineconst objects::CMessageHistoryInfo&CPluginMessageHistory::operator[](size_t index) const{    return m_Entries[index].GetInfo();}//=============  CPluginMessageHistory_CI  ================inlineCPluginMessageHistory_CI::CPluginMessageHistory_CI(void){}inlineCPluginMessageHistory_CI::CPluginMessageHistory_CI(const CPluginMessageHistory_CI& other){    *this = other;}inlineCPluginMessageHistory_CI& CPluginMessageHistory_CI::operator=(const CPluginMessageHistory_CI& other){    if ( this != &other ) {        m_Iterator = other.m_Iterator;    }    return *this;}inlineCPluginMessageHistory_CI::CPluginMessageHistory_CI(CPluginMessageHistory::TEntries::const_iterator iter){    m_Iterator = iter;}inlineCPluginMessageHistory_CI& CPluginMessageHistory_CI::operator++(void){    ++m_Iterator;    return *this;}inlineCPluginMessageHistory_CI& CPluginMessageHistory_CI::operator--(void){    --m_Iterator;    return *this;}inlineconst CPluginMessageHistory_CI::TInfo& CPluginMessageHistory_CI::operator*(void) const{    return m_Iterator->GetInfo();}inlineconst CPluginMessageHistory_CI::TInfo* CPluginMessageHistory_CI::operator->(void) const{    return &(m_Iterator->GetInfo());}inlinebool CPluginMessageHistory_CI::operator==(const CPluginMessageHistory_CI& other){    return m_Iterator == other.m_Iterator;}inlinebool CPluginMessageHistory_CI::operator!=(const CPluginMessageHistory_CI& other){    return !(*this == other);}///////////////////////////////////////////////////////////////////////////// end of inline methods /////////////////////////////////////////////////////////////////////////////END_NCBI_SCOPE/** ===========================================================================** $Log: message_history.hpp,v $* Revision 1000.1  2004/04/12 18:12:30  gouriano* PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.4** Revision 1.4  2003/12/31 20:31:14  dicuccio* Added Clear()** Revision 1.3  2003/08/22 15:54:48  dicuccio* General clean-up:  Removed unneeded export specifiers from templates; removed* 'USING_SCOPE(objects)'** Revision 1.2  2003/07/15 13:51:57  shomrat* Completion of history interface** Revision 1.1  2003/07/14 10:52:10  shomrat* Initial Revision*** ===========================================================================*/#endif // GUI_PLUGIN_MESSAGEHISTORY_HPP

⌨️ 快捷键说明

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