Blame addon/doxmlparser/src/graphhandler.cpp

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