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

📄 graphhandler.h

📁 Doxygen的词根来源于Document(文档)和Oxygen(氧气)
💻 H
字号:
/****************************************************************************** * * $Id:$ * * * Copyright (C) 1997-2006 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby  * granted. No representations are made about the suitability of this software  * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * */#ifndef _GRAPHHANDLER_H#define _GRAPHHANDLER_H#include "stringimpl.h"#include "doxmlintf.h"#include "basehandler.h"#include "baseiterator.h"class NodeHandler;class ChildNodeHandler;class EdgeLabelHandler;class GraphHandler : public IGraph, public BaseHandler<GraphHandler>{    friend class NodeIterator;  public:    GraphHandler(IBaseHandler *parent,const char *endTag);    virtual ~GraphHandler();    void startGraph(const QXmlAttributes &attrib);    void endGraph();    void startNode(const QXmlAttributes &attrib);    NodeHandler *getNodeById(const QString &id) const;    // IGraph    virtual INodeIterator *nodes() const;  private:    IBaseHandler *m_parent;    QList<NodeHandler> m_nodes;    QDict<NodeHandler> *m_nodeDict;};//----------------------------------------------------------------------class NodeHandler : public INode, public BaseHandler<NodeHandler>{    friend class ChildNodeIterator;  public:    NodeHandler(GraphHandler *gh);    virtual ~NodeHandler();    void startNode(const QXmlAttributes &attrib);    void endNode();    void startLabel(const QXmlAttributes &attrib);    void endLabel();    void startLink(const QXmlAttributes &attrib);    void endLink();    void startChildNode(const QXmlAttributes &attrib);    // INode    virtual const IString *id() const { return &m_id; }    virtual const IString *label() const { return &m_label; }    virtual const IString *linkId() const { return &m_link; }    virtual IChildNodeIterator *children() const;  private:    IBaseHandler *m_parent;    StringImpl m_id;    StringImpl m_label;    StringImpl m_link;    QList<ChildNodeHandler> m_children;    GraphHandler *m_graph;};class NodeIterator : public BaseIterator<INodeIterator,INode,NodeHandler>{  public:    NodeIterator(const GraphHandler &handler) :      BaseIterator<INodeIterator,INode,NodeHandler>(handler.m_nodes) {}};//----------------------------------------------------------------------class ChildNodeHandler : public IChildNode, public BaseHandler<ChildNodeHandler>{    friend class EdgeLabelIterator;  public:    ChildNodeHandler(IBaseHandler *parent,GraphHandler *gh);    virtual ~ChildNodeHandler();    void startChildNode(const QXmlAttributes &attrib);    void endChildNode();    void startEdgeLabel(const QXmlAttributes &attrib);    // IChildNode    virtual INode *node() const;    virtual NodeRelation relation() const { return m_relation; }    virtual const IString * relationString() const { return &m_relationString; }    virtual IEdgeLabelIterator *edgeLabels() const;  private:    IBaseHandler           *m_parent;    QString                 m_id;    NodeRelation            m_relation;    StringImpl              m_relationString;    QList<EdgeLabelHandler> m_edgeLabels;    GraphHandler           *m_graph;};class ChildNodeIterator : public BaseIterator<IChildNodeIterator,IChildNode,ChildNodeHandler>{  public:    ChildNodeIterator(const NodeHandler &handler) :      BaseIterator<IChildNodeIterator,IChildNode,ChildNodeHandler>(handler.m_children) {}};//----------------------------------------------------------------------class EdgeLabelHandler : public IEdgeLabel, public BaseHandler<EdgeLabelHandler>{    friend class EdgeLabelIterator;  public:    EdgeLabelHandler(IBaseHandler *parent);    virtual ~EdgeLabelHandler();    void startEdgeLabel(const QXmlAttributes &attrib);    void endEdgeLabel();    // IEdgeLabel    virtual const IString *label() const { return &m_label; }  private:    IBaseHandler *m_parent;    StringImpl    m_label;};class EdgeLabelIterator : public BaseIterator<IEdgeLabelIterator,IEdgeLabel,EdgeLabelHandler>{  public:    EdgeLabelIterator(const ChildNodeHandler &handler) :      BaseIterator<IEdgeLabelIterator,IEdgeLabel,EdgeLabelHandler>(handler.m_edgeLabels) {}};void graphhandler_init();void graphhandler_exit();#endif

⌨️ 快捷键说明

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