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

📄 dtdaux.hpp

📁 ncbi源码
💻 HPP
字号:
/* * =========================================================================== * PRODUCTION $Log: dtdaux.hpp,v $ * PRODUCTION Revision 1000.0  2003/10/29 17:35:10  gouriano * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.1 * PRODUCTION * =========================================================================== */#ifndef DTDAUX_HPP#define DTDAUX_HPP/*  $Id: dtdaux.hpp,v 1000.0 2003/10/29 17:35:10 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: Andrei Gourianov** File Description:*   DTD parser's auxiliary stuff:*       DTDEntity*       DTDAttribute*       DTDElement*       DTDEntityLexer** ===========================================================================*/#include <corelib/ncbistd.hpp>#include <corelib/ncbistre.hpp>#include <serial/datatool/dtdlexer.hpp>#include <list>#include <map>BEGIN_NCBI_SCOPEclass CFileModules;class CDataModule;class CDataType;class CDataMemberContainerType;class CDataValue;class CDataMember;class CEnumDataType;class CEnumDataTypeValue;/////////////////////////////////////////////////////////////////////////////// DTDEntityclass DTDEntity{public:    DTDEntity(void);    DTDEntity(const DTDEntity& other);    virtual ~DTDEntity(void);    void SetName(const string& name);    const string& GetName(void) const;    void SetData(const string& data);    const string& GetData(void) const;    void SetExternal(void);    bool IsExternal(void) const;private:    string m_Name;    string m_Data;    bool   m_External;};/////////////////////////////////////////////////////////////////////////////// DTDAttributeclass DTDAttribute{public:    DTDAttribute(void);    DTDAttribute(const DTDAttribute& other);    virtual ~DTDAttribute(void);    enum EType {        eUnknown,        eString,        eEnum,        eId,        eIdRef,        eIdRefs,        eNmtoken,        eNmtokens,        eEntity,        eEntities,        eNotation    };    enum EValueType {        eDefault,        eRequired,        eImplied,        eFixed    };    void SetName(const string& name);    const string& GetName(void) const;    void SetType(EType type);    EType GetType(void) const;    void SetValueType(EValueType valueType);    EValueType GetValueType(void) const;    void SetValue(const string& value);    const string& GetValue(void) const;    void AddEnumValue(const string& value);    const list<string>& GetEnumValues(void) const;private:    string m_Name;    EType m_Type;    EValueType m_ValueType;    string m_Value;    list<string> m_ListEnum;};/////////////////////////////////////////////////////////////////////////////// DTDElementclass DTDElement{public:    DTDElement(void);    DTDElement(const DTDElement& other);    virtual ~DTDElement(void);    enum EType {        eUnknown,        eString,   // #PCDATA        eAny,      // ANY        eEmpty,    // EMPTY        eSequence, // (a,b,c)        eChoice    // (a|b|c)                   // mixed content is not implemented    };    enum EOccurrence {        eOne,        eOneOrMore,        eZeroOrMore,        eZeroOrOne    };    void SetName(const string& name);    const string& GetName(void) const;    void SetType( EType type);    void SetTypeIfUnknown( EType type);    EType GetType(void) const;    void SetOccurrence( const string& ref_name, EOccurrence occ);    EOccurrence GetOccurrence(const string& ref_name) const;    void SetOccurrence( EOccurrence occ);    EOccurrence GetOccurrence(void) const;    // i.e. element contains other elements    void AddContent( const string& ref_name);    const list<string>& GetContent(void) const;    // element is contained somewhere    void SetReferenced(void);    bool IsReferenced(void) const;    // element does not have any specific name    void SetEmbedded(void);    bool IsEmbedded(void) const;    string CreateEmbeddedName(int depth) const;    void AddAttribute(DTDAttribute& attrib);    bool HasAttributes(void) const;    const list<DTDAttribute>& GetAttributes(void) const;private:    string m_Name;    EType m_Type;    EOccurrence m_Occ;    list<string> m_Refs;    list<DTDAttribute> m_Attrib;    map<string,EOccurrence> m_RefOcc;    bool m_Refd;    bool m_Embd;};/////////////////////////////////////////////////////////////////////////////// DTDEntityLexerclass DTDEntityLexer : public DTDLexer{public:    DTDEntityLexer(CNcbiIstream& in, bool autoDelete=true);    virtual ~DTDEntityLexer(void);protected:    bool m_AutoDelete;    CNcbiIstream* m_Str;};END_NCBI_SCOPE#endif // DTDAUX_HPP/* * ========================================================================== * $Log: dtdaux.hpp,v $ * Revision 1000.0  2003/10/29 17:35:10  gouriano * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.1 * * Revision 1.1  2002/11/14 21:06:08  gouriano * auxiliary classes to use by DTD parser * * * * ========================================================================== */

⌨️ 快捷键说明

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