|
Packit Service |
50c9f2 |
#include "graphhandler.h"
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
class EdgeRelationMapper
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
public:
|
|
Packit Service |
50c9f2 |
EdgeRelationMapper()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
m_map.insert("public-inheritance", IChildNode::PublicInheritance);
|
|
Packit Service |
50c9f2 |
m_map.insert("protected-inheritance", IChildNode::ProtectedInheritance);
|
|
Packit Service |
50c9f2 |
m_map.insert("private-inheritance", IChildNode::PrivateInheritance);
|
|
Packit Service |
50c9f2 |
m_map.insert("usage", IChildNode::Usage);
|
|
Packit Service |
50c9f2 |
m_map.insert("template-instance", IChildNode::TemplateInstance);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
IChildNode::NodeRelation stringToNodeRelation(const QString &nrStr)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
return m_map[nrStr];
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
private:
|
|
Packit Service |
50c9f2 |
QMap<QString,IChildNode::NodeRelation> m_map;
|
|
Packit Service |
50c9f2 |
};
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
static EdgeRelationMapper *s_edgeRelationMapper;
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void graphhandler_init()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
s_edgeRelationMapper = new EdgeRelationMapper;
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void graphhandler_exit()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
delete s_edgeRelationMapper;
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
//------------------------------------------------------------------------
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
GraphHandler::GraphHandler(IBaseHandler *parent,const char *endTag)
|
|
Packit Service |
50c9f2 |
: m_parent(parent)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
addEndHandler(endTag,this,&GraphHandler::endGraph);
|
|
Packit Service |
50c9f2 |
addStartHandler("node",this,&GraphHandler::startNode);
|
|
Packit Service |
50c9f2 |
m_nodes.setAutoDelete(TRUE);
|
|
Packit Service |
50c9f2 |
m_nodeDict = new QDict<NodeHandler>(1009);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
GraphHandler::~GraphHandler()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
delete m_nodeDict;
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void GraphHandler::startGraph(const QXmlAttributes &)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
debug(2,"startGraph\n");
|
|
Packit Service |
50c9f2 |
m_parent->setDelegate(this);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void GraphHandler::endGraph()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
debug(2,"endGraph\n");
|
|
Packit Service |
50c9f2 |
m_parent->setDelegate(0);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void GraphHandler::startNode(const QXmlAttributes &attrib)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
NodeHandler *n = new NodeHandler(this);
|
|
Packit Service |
50c9f2 |
n->startNode(attrib);
|
|
Packit Service |
50c9f2 |
m_nodes.append(n);
|
|
Packit Service |
50c9f2 |
m_nodeDict->insert(attrib.value("id").utf8(),n);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
INodeIterator *GraphHandler::nodes() const
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
return new NodeIterator(*this);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
NodeHandler *GraphHandler::getNodeById(const QString &id) const
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
return m_nodeDict->find(id.utf8());
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
//------------------------------------------------------------------------
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
NodeHandler::NodeHandler(GraphHandler *gh)
|
|
Packit Service |
50c9f2 |
: m_parent(gh), m_graph(gh)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
addEndHandler("node",this,&NodeHandler::endNode);
|
|
Packit Service |
50c9f2 |
addStartHandler("link",this,&NodeHandler::startLink);
|
|
Packit Service |
50c9f2 |
addEndHandler("link",this,&NodeHandler::endLink);
|
|
Packit Service |
50c9f2 |
addStartHandler("label",this,&NodeHandler::startLabel);
|
|
Packit Service |
50c9f2 |
addEndHandler("label",this,&NodeHandler::endLabel);
|
|
Packit Service |
50c9f2 |
addStartHandler("childnode",this,&NodeHandler::startChildNode);
|
|
Packit Service |
50c9f2 |
m_children.setAutoDelete(TRUE);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
NodeHandler::~NodeHandler()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void NodeHandler::startNode(const QXmlAttributes &attrib)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
debug(2,"startNode\n");
|
|
Packit Service |
50c9f2 |
m_parent->setDelegate(this);
|
|
Packit Service |
50c9f2 |
m_id = attrib.value("id");
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void NodeHandler::endNode()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
debug(2,"endNode\n");
|
|
Packit Service |
50c9f2 |
m_parent->setDelegate(0);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void NodeHandler::startLink(const QXmlAttributes &attrib)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
m_link = attrib.value("refid");
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void NodeHandler::endLink()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void NodeHandler::startLabel(const QXmlAttributes &/*attrib*/)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
m_curString="";
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void NodeHandler::endLabel()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
m_label = m_curString;
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void NodeHandler::startChildNode(const QXmlAttributes &attrib)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
ChildNodeHandler *cnh = new ChildNodeHandler(this,m_graph);
|
|
Packit Service |
50c9f2 |
cnh->startChildNode(attrib);
|
|
Packit Service |
50c9f2 |
m_children.append(cnh);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
IChildNodeIterator *NodeHandler::children() const
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
return new ChildNodeIterator(*this);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
//------------------------------------------------------------------------
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
ChildNodeHandler::ChildNodeHandler(IBaseHandler *parent,GraphHandler *gh)
|
|
Packit Service |
50c9f2 |
: m_parent(parent), m_graph(gh)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
addEndHandler("childnode",this,&ChildNodeHandler::endChildNode);
|
|
Packit Service |
50c9f2 |
addStartHandler("edgelabel",this,&ChildNodeHandler::startEdgeLabel);
|
|
Packit Service |
50c9f2 |
m_edgeLabels.setAutoDelete(TRUE);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
ChildNodeHandler::~ChildNodeHandler()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void ChildNodeHandler::startChildNode(const QXmlAttributes &attrib)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
debug(2,"startChildNode\n");
|
|
Packit Service |
50c9f2 |
m_id = attrib.value("refid");
|
|
Packit Service |
50c9f2 |
m_relationString = attrib.value("relation");
|
|
Packit Service |
50c9f2 |
m_relation = s_edgeRelationMapper->stringToNodeRelation(m_relationString);
|
|
Packit Service |
50c9f2 |
m_parent->setDelegate(this);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void ChildNodeHandler::endChildNode()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
debug(2,"endChildNode\n");
|
|
Packit Service |
50c9f2 |
m_parent->setDelegate(0);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void ChildNodeHandler::startEdgeLabel(const QXmlAttributes &attrib)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
EdgeLabelHandler *elh = new EdgeLabelHandler(this);
|
|
Packit Service |
50c9f2 |
elh->startEdgeLabel(attrib);
|
|
Packit Service |
50c9f2 |
m_edgeLabels.append(elh);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
IEdgeLabelIterator *ChildNodeHandler::edgeLabels() const
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
return new EdgeLabelIterator(*this);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
INode *ChildNodeHandler::node() const
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
return m_graph->getNodeById(m_id);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
//-----------------------------------------------------------------------
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
EdgeLabelHandler::EdgeLabelHandler(IBaseHandler *parent)
|
|
Packit Service |
50c9f2 |
: m_parent(parent)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
addEndHandler("edgelabel",this,&EdgeLabelHandler::endEdgeLabel);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
EdgeLabelHandler::~EdgeLabelHandler()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void EdgeLabelHandler::startEdgeLabel(const QXmlAttributes &)
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
m_parent->setDelegate(this);
|
|
Packit Service |
50c9f2 |
m_curString="";
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
void EdgeLabelHandler::endEdgeLabel()
|
|
Packit Service |
50c9f2 |
{
|
|
Packit Service |
50c9f2 |
m_label=m_curString;
|
|
Packit Service |
50c9f2 |
m_parent->setDelegate(0);
|
|
Packit Service |
50c9f2 |
}
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|