summaryrefslogtreecommitdiffstats
path: root/src/indexlog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/indexlog.cpp')
-rw-r--r--src/indexlog.cpp152
1 files changed, 152 insertions, 0 deletions
diff --git a/src/indexlog.cpp b/src/indexlog.cpp
new file mode 100644
index 0000000..5fb67f5
--- /dev/null
+++ b/src/indexlog.cpp
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2008 by Sebastian Pipping.
+ * Copyright (C) 2008 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.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ * Sebastian Pipping <sebastian@pipping.org>
+ */
+
+#include "indexlog.h"
+#include "message.h"
+#include "config.h"
+
+#include <qstring.h>
+#include <qfile.h>
+
+
+IndexLog::IndexLog()
+{
+}
+
+IndexLog::~IndexLog()
+{
+}
+
+void IndexLog::initialize()
+{
+ char const * const attributes[] =
+ { "xmlns",
+ "http://doxygen.org/xmlns/indexlog/1/0/",
+ NULL
+ };
+ m_out.open("log", attributes);
+
+ openMethodCall("initialize");
+ closeMethodCall();
+}
+
+void IndexLog::finalize()
+{
+ openMethodCall("finalize");
+ closeMethodCall();
+ m_out.close("log");
+ QCString fileName = Config_getString("HTML_OUTPUT")+"/index.log.xml";
+ QFile file(fileName);
+ if (!file.open(IO_WriteOnly))
+ {
+ err("Could not open file %s for writing\n", fileName.data());
+ exit(1);
+ }
+ m_out.dumpTo(file);
+ file.flush();
+ file.close();
+}
+
+void IndexLog::incContentsDepth()
+{
+ openMethodCall("incContentsDepth");
+ closeMethodCall();
+}
+
+void IndexLog::decContentsDepth()
+{
+ openMethodCall("decContentsDepth");
+ closeMethodCall();
+}
+
+void IndexLog::addContentsItem(bool isDir, char const * name,
+ char const * ref, char const * file,
+ char const * anchor)
+{
+ openMethodCall("addContentsItem");
+ addBoolParameter("isDir", isDir);
+ addStringParameter("name", name);
+ addStringParameter("ref", ref);
+ addStringParameter("file", file);
+ addStringParameter("anchor", anchor);
+ closeMethodCall();
+}
+
+void IndexLog::addIndexItem(char const * level1, char const * level2,
+ char const * contRef, char const * memRef,
+ char const * anchor, const MemberDef * md)
+{
+ openMethodCall("addIndexItem");
+ addStringParameter("level1", level1);
+ addStringParameter("level2", level2);
+ addStringParameter("contRef", contRef);
+ addStringParameter("memRef", memRef);
+ addStringParameter("anchor", anchor);
+ addMemberDefParameter("md", md);
+ closeMethodCall();
+}
+
+void IndexLog::addIndexFile(char const * name)
+{
+ openMethodCall("addIndexFile");
+ addStringParameter("name", name);
+ closeMethodCall();
+}
+
+void IndexLog::openMethodCall(char const * methodName)
+{
+ m_out.setCompressionEnabled(true);
+ m_out.open("call");
+ m_out.openCloseContent("method", methodName);
+}
+
+void IndexLog::addPrimitiveParameter(char const * parameterName,
+ char const * value)
+{
+ m_out.open("param");
+ m_out.openCloseContent("name", parameterName);
+ if (value != NULL)
+ {
+ m_out.openCloseContent("value", value);
+ }
+ m_out.close("param");
+}
+
+void IndexLog::addBoolParameter(char const * parameterName, bool value)
+{
+ addPrimitiveParameter(parameterName, value ? "true" : "false");
+}
+
+void IndexLog::addStringParameter(char const * parameterName,
+ char const * value)
+{
+ addPrimitiveParameter(parameterName, value);
+}
+
+void IndexLog::addMemberDefParameter(char const * parameterName,
+ const MemberDef * /*value*/)
+{
+ m_out.open("param");
+ m_out.openCloseContent("name", parameterName);
+ m_out.close("param");
+}
+
+void IndexLog::closeMethodCall()
+{
+ m_out.setCompressionEnabled(false);
+ m_out.close("call");
+}
+