summaryrefslogtreecommitdiffstats
path: root/addon
diff options
context:
space:
mode:
Diffstat (limited to 'addon')
-rw-r--r--addon/xmlparse/doxmlintf.h10
-rw-r--r--addon/xmlparse/mainhandler.cpp14
-rw-r--r--addon/xmlparse/memberhandler.cpp21
-rw-r--r--addon/xmlparse/memberhandler.h18
4 files changed, 59 insertions, 4 deletions
diff --git a/addon/xmlparse/doxmlintf.h b/addon/xmlparse/doxmlintf.h
index cfff948..1af6a60 100644
--- a/addon/xmlparse/doxmlintf.h
+++ b/addon/xmlparse/doxmlintf.h
@@ -4,6 +4,8 @@
#include <qlist.h>
#include <qstring.h>
+class IMember;
+
class IParam
{
public:
@@ -15,6 +17,14 @@ class IParam
virtual QString defaultValue() const = 0;
};
+class IMemberReference
+{
+ public:
+ virtual IMember *getMember() const = 0;
+ virtual QString getMemberName() const = 0;
+ virtual int getLineNumber() const = 0;
+};
+
class IMember
{
public:
diff --git a/addon/xmlparse/mainhandler.cpp b/addon/xmlparse/mainhandler.cpp
index cb92df2..c32426f 100644
--- a/addon/xmlparse/mainhandler.cpp
+++ b/addon/xmlparse/mainhandler.cpp
@@ -67,6 +67,20 @@ void MainHandler::initialize()
m_compoundNameDict.insert(compHandler->name(),compHandler);
m_compoundDict.insert(compHandler->id(),compHandler);
}
+
+ // for each member
+ QDictIterator< QList<IMember> > mndi(m_memberNameDict);
+ QList<IMember> *ml;
+ for (;(ml=mndi.current());++mndi)
+ {
+ QListIterator<IMember> mli(*ml);
+ IMember *mem;
+ for (;(mem=mli.current());++mli)
+ {
+ ((MemberHandler*)mem)->initialize(this);
+ }
+ }
+
}
class ErrorHandler : public QXmlErrorHandler
diff --git a/addon/xmlparse/memberhandler.cpp b/addon/xmlparse/memberhandler.cpp
index 54dd0f0..0fbf5c1 100644
--- a/addon/xmlparse/memberhandler.cpp
+++ b/addon/xmlparse/memberhandler.cpp
@@ -16,6 +16,7 @@
#include "memberhandler.h"
#include "sectionhandler.h"
#include "dochandler.h"
+#include "mainhandler.h"
MemberHandler::MemberHandler(IBaseHandler *parent)
: m_parent(parent), m_brief(0), m_detailed(0)
@@ -90,6 +91,7 @@ void MemberHandler::startReferences(const QXmlAttributes& attrib)
{
MemberReference *mr = new MemberReference;
mr->m_memId = attrib.value("id");
+ mr->m_line = attrib.value("line").toInt();
m_references.append(mr);
m_curString="";
}
@@ -103,6 +105,7 @@ void MemberHandler::startReferencedBy(const QXmlAttributes& attrib)
{
MemberReference *mr = new MemberReference;
mr->m_memId = attrib.value("id");
+ mr->m_line = attrib.value("line").toInt();
m_referencedBy.append(mr);
m_curString="";
}
@@ -136,4 +139,22 @@ void MemberHandler::startParam(const QXmlAttributes& attrib)
m_params.append(paramHandler);
}
+void MemberHandler::initialize(MainHandler *mh)
+{
+ QListIterator<MemberReference> mli(m_references);
+ MemberReference *mr;
+ for (;(mr=mli.current());++mli)
+ {
+ mr->initialize(mh);
+ }
+}
+void MemberHandler::MemberReference::initialize(MainHandler *mh)
+{
+ m_mainHandler = mh;
+}
+
+IMember *MemberHandler::MemberReference::getMember() const
+{
+ return m_mainHandler->getMemberById(m_memId);
+}
diff --git a/addon/xmlparse/memberhandler.h b/addon/xmlparse/memberhandler.h
index e79835f..ccb4a57 100644
--- a/addon/xmlparse/memberhandler.h
+++ b/addon/xmlparse/memberhandler.h
@@ -25,6 +25,7 @@
#include "doxmlintf.h"
class DocHandler;
+class MainHandler;
class MemberHandler : public IMember, public BaseHandler<MemberHandler>
{
@@ -54,12 +55,21 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
virtual QString name() const { return m_name; }
virtual QListIterator<IParam> getParamIterator() const { return m_params; }
+ void initialize(MainHandler *m);
+
private:
- struct MemberReference
+ struct MemberReference : public IMemberReference
{
- QString m_memId;
- QString m_name;
- int line;
+ virtual ~MemberReference() {}
+ virtual IMember *getMember() const;
+ virtual QString getMemberName() const { return m_name; }
+ virtual int getLineNumber() const { return m_line; }
+ void initialize(MainHandler *m);
+
+ QString m_memId;
+ QString m_name;
+ int m_line;
+ MainHandler *m_mainHandler;
};
IBaseHandler *m_parent;