|
Packit |
1c1d7e |
/******************************************************************************
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Copyright (C) 1997-2015 by Dimitri van Heesch.
|
|
Packit |
1c1d7e |
* Authors: Dimitri van Heesch, Miguel Lobo.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Permission to use, copy, modify, and distribute this software and its
|
|
Packit |
1c1d7e |
* documentation under the terms of the GNU General Public License is hereby
|
|
Packit |
1c1d7e |
* granted. No representations are made about the suitability of this software
|
|
Packit |
1c1d7e |
* for any purpose. It is provided "as is" without express or implied warranty.
|
|
Packit |
1c1d7e |
* See the GNU General Public License for more details.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Documents produced by Doxygen are derivative works derived from the
|
|
Packit |
1c1d7e |
* input used in their production; they are not affected by this license.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <stdlib.h>
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <qdir.h>
|
|
Packit |
1c1d7e |
#include <qstack.h>
|
|
Packit |
1c1d7e |
#include <qdict.h>
|
|
Packit |
1c1d7e |
#include <qfile.h>
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include "perlmodgen.h"
|
|
Packit |
1c1d7e |
#include "docparser.h"
|
|
Packit |
1c1d7e |
#include "message.h"
|
|
Packit |
1c1d7e |
#include "doxygen.h"
|
|
Packit |
1c1d7e |
#include "pagedef.h"
|
|
Packit |
1c1d7e |
#include "memberlist.h"
|
|
Packit |
1c1d7e |
#include "ftextstream.h"
|
|
Packit |
1c1d7e |
#include "arguments.h"
|
|
Packit |
1c1d7e |
#include "config.h"
|
|
Packit |
1c1d7e |
#include "groupdef.h"
|
|
Packit |
1c1d7e |
#include "classdef.h"
|
|
Packit |
1c1d7e |
#include "classlist.h"
|
|
Packit |
1c1d7e |
#include "filename.h"
|
|
Packit |
1c1d7e |
#include "membername.h"
|
|
Packit |
1c1d7e |
#include "namespacedef.h"
|
|
Packit |
1c1d7e |
#include "membergroup.h"
|
|
Packit |
1c1d7e |
#include "section.h"
|
|
Packit |
1c1d7e |
#include "util.h"
|
|
Packit |
1c1d7e |
#include "htmlentity.h"
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#define PERLOUTPUT_MAX_INDENTATION 40
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
class PerlModOutputStream
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
public:
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString m_s;
|
|
Packit |
1c1d7e |
FTextStream *m_t;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
PerlModOutputStream(FTextStream *t = 0) : m_t(t) { }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void add(char c);
|
|
Packit |
1c1d7e |
void add(const char *s);
|
|
Packit |
1c1d7e |
void add(QCString &s);
|
|
Packit |
1c1d7e |
void add(int n);
|
|
Packit |
1c1d7e |
void add(unsigned int n);
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutputStream::add(char c)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_t != 0)
|
|
Packit |
1c1d7e |
(*m_t) << c;
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
m_s += c;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutputStream::add(const char *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_t != 0)
|
|
Packit |
1c1d7e |
(*m_t) << s;
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
m_s += s;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutputStream::add(QCString &s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_t != 0)
|
|
Packit |
1c1d7e |
(*m_t) << s;
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
m_s += s;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutputStream::add(int n)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_t != 0)
|
|
Packit |
1c1d7e |
(*m_t) << n;
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
m_s += n;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutputStream::add(unsigned int n)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_t != 0)
|
|
Packit |
1c1d7e |
(*m_t) << n;
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
m_s += n;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
class PerlModOutput
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
public:
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool m_pretty;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
inline PerlModOutput(bool pretty)
|
|
Packit |
1c1d7e |
: m_pretty(pretty), m_stream(0), m_indentation(false), m_blockstart(true)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_spaces[0] = 0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
virtual ~PerlModOutput() { }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
inline void setPerlModOutputStream(PerlModOutputStream *os) { m_stream = os; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
inline PerlModOutput &openSave() { iopenSave(); return *this; }
|
|
Packit |
1c1d7e |
inline PerlModOutput &closeSave(QCString &s) { icloseSave(s); return *this; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
inline PerlModOutput &continueBlock()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_blockstart)
|
|
Packit |
1c1d7e |
m_blockstart = false;
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
m_stream->add(',');
|
|
Packit |
1c1d7e |
indent();
|
|
Packit |
1c1d7e |
return *this;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
inline PerlModOutput &add(char c) { m_stream->add(c); return *this; }
|
|
Packit |
1c1d7e |
inline PerlModOutput &add(const char *s) { m_stream->add(s); return *this; }
|
|
Packit |
1c1d7e |
inline PerlModOutput &add(QCString &s) { m_stream->add(s); return *this; }
|
|
Packit |
1c1d7e |
inline PerlModOutput &add(int n) { m_stream->add(n); return *this; }
|
|
Packit |
1c1d7e |
inline PerlModOutput &add(unsigned int n) { m_stream->add(n); return *this; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
PerlModOutput &addQuoted(const char *s) { iaddQuoted(s); return *this; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
inline PerlModOutput &indent()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_pretty) {
|
|
Packit |
1c1d7e |
m_stream->add('\n');
|
|
Packit |
1c1d7e |
m_stream->add(m_spaces);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return *this;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
inline PerlModOutput &open(char c, const char *s = 0) { iopen(c, s); return *this; }
|
|
Packit |
1c1d7e |
inline PerlModOutput &close(char c = 0) { iclose(c); return *this; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
inline PerlModOutput &addField(const char *s) { iaddField(s); return *this; }
|
|
Packit |
1c1d7e |
inline PerlModOutput &addFieldQuotedChar(const char *field, char content)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
iaddFieldQuotedChar(field, content); return *this;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
inline PerlModOutput &addFieldQuotedString(const char *field, const char *content)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
iaddFieldQuotedString(field, content); return *this;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
inline PerlModOutput &addFieldBoolean(const char *field, bool content)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return addFieldQuotedString(field, content ? "yes" : "no");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
inline PerlModOutput &openList(const char *s = 0) { open('[', s); return *this; }
|
|
Packit |
1c1d7e |
inline PerlModOutput &closeList() { close(']'); return *this; }
|
|
Packit |
1c1d7e |
inline PerlModOutput &openHash(const char *s = 0 ) { open('{', s); return *this; }
|
|
Packit |
1c1d7e |
inline PerlModOutput &closeHash() { close('}'); return *this; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
protected:
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void iopenSave();
|
|
Packit |
1c1d7e |
void icloseSave(QCString &);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void incIndent();
|
|
Packit |
1c1d7e |
void decIndent();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void iaddQuoted(const char *);
|
|
Packit |
1c1d7e |
void iaddFieldQuotedChar(const char *, char);
|
|
Packit |
1c1d7e |
void iaddFieldQuotedString(const char *, const char *);
|
|
Packit |
1c1d7e |
void iaddField(const char *);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void iopen(char, const char *);
|
|
Packit |
1c1d7e |
void iclose(char);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
private:
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
PerlModOutputStream *m_stream;
|
|
Packit |
1c1d7e |
int m_indentation;
|
|
Packit |
1c1d7e |
bool m_blockstart;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QStack<PerlModOutputStream> m_saved;
|
|
Packit |
1c1d7e |
char m_spaces[PERLOUTPUT_MAX_INDENTATION * 2 + 2];
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutput::iopenSave()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_saved.push(m_stream);
|
|
Packit |
1c1d7e |
m_stream = new PerlModOutputStream();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutput::icloseSave(QCString &s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
s = m_stream->m_s;
|
|
Packit |
1c1d7e |
delete m_stream;
|
|
Packit |
1c1d7e |
m_stream = m_saved.pop();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutput::incIndent()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_indentation < PERLOUTPUT_MAX_INDENTATION)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
char *s = &m_spaces[m_indentation * 2];
|
|
Packit |
1c1d7e |
*s++ = ' '; *s++ = ' '; *s = 0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_indentation++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutput::decIndent()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_indentation--;
|
|
Packit |
1c1d7e |
if (m_indentation < PERLOUTPUT_MAX_INDENTATION)
|
|
Packit |
1c1d7e |
m_spaces[m_indentation * 2] = 0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutput::iaddQuoted(const char *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
char c;
|
|
Packit |
1c1d7e |
while ((c = *s++) != 0) {
|
|
Packit |
1c1d7e |
if ((c == '\'') || (c == '\\'))
|
|
Packit |
1c1d7e |
m_stream->add('\\');
|
|
Packit |
1c1d7e |
m_stream->add(c);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutput::iaddField(const char *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
continueBlock();
|
|
Packit |
1c1d7e |
m_stream->add(s);
|
|
Packit |
1c1d7e |
m_stream->add(m_pretty ? " => " : "=>");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutput::iaddFieldQuotedChar(const char *field, char content)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
iaddField(field);
|
|
Packit |
1c1d7e |
m_stream->add('\'');
|
|
Packit |
1c1d7e |
if ((content == '\'') || (content == '\\'))
|
|
Packit |
1c1d7e |
m_stream->add('\\');
|
|
Packit |
1c1d7e |
m_stream->add(content);
|
|
Packit |
1c1d7e |
m_stream->add('\'');
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutput::iaddFieldQuotedString(const char *field, const char *content)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (content == 0)
|
|
Packit |
1c1d7e |
return;
|
|
Packit |
1c1d7e |
iaddField(field);
|
|
Packit |
1c1d7e |
m_stream->add('\'');
|
|
Packit |
1c1d7e |
iaddQuoted(content);
|
|
Packit |
1c1d7e |
m_stream->add('\'');
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutput::iopen(char c, const char *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (s != 0)
|
|
Packit |
1c1d7e |
iaddField(s);
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
continueBlock();
|
|
Packit |
1c1d7e |
m_stream->add(c);
|
|
Packit |
1c1d7e |
incIndent();
|
|
Packit |
1c1d7e |
m_blockstart = true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModOutput::iclose(char c)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
decIndent();
|
|
Packit |
1c1d7e |
indent();
|
|
Packit |
1c1d7e |
if (c != 0)
|
|
Packit |
1c1d7e |
m_stream->add(c);
|
|
Packit |
1c1d7e |
m_blockstart = false;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/*! @brief Concrete visitor implementation for PerlMod output. */
|
|
Packit |
1c1d7e |
class PerlModDocVisitor : public DocVisitor
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
public:
|
|
Packit |
1c1d7e |
PerlModDocVisitor(PerlModOutput &);
|
|
Packit |
1c1d7e |
virtual ~PerlModDocVisitor() { }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void finish();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//--------------------------------------
|
|
Packit |
1c1d7e |
// visitor functions for leaf nodes
|
|
Packit |
1c1d7e |
//--------------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void visit(DocWord *);
|
|
Packit |
1c1d7e |
void visit(DocLinkedWord *);
|
|
Packit |
1c1d7e |
void visit(DocWhiteSpace *);
|
|
Packit |
1c1d7e |
void visit(DocSymbol *);
|
|
Packit |
1c1d7e |
void visit(DocURL *);
|
|
Packit |
1c1d7e |
void visit(DocLineBreak *);
|
|
Packit |
1c1d7e |
void visit(DocHorRuler *);
|
|
Packit |
1c1d7e |
void visit(DocStyleChange *);
|
|
Packit |
1c1d7e |
void visit(DocVerbatim *);
|
|
Packit |
1c1d7e |
void visit(DocAnchor *);
|
|
Packit |
1c1d7e |
void visit(DocInclude *);
|
|
Packit |
1c1d7e |
void visit(DocIncOperator *);
|
|
Packit |
1c1d7e |
void visit(DocFormula *);
|
|
Packit |
1c1d7e |
void visit(DocIndexEntry *);
|
|
Packit |
1c1d7e |
void visit(DocSimpleSectSep *);
|
|
Packit |
1c1d7e |
void visit(DocCite *);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//--------------------------------------
|
|
Packit |
1c1d7e |
// visitor functions for compound nodes
|
|
Packit |
1c1d7e |
//--------------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void visitPre(DocAutoList *);
|
|
Packit |
1c1d7e |
void visitPost(DocAutoList *);
|
|
Packit |
1c1d7e |
void visitPre(DocAutoListItem *);
|
|
Packit |
1c1d7e |
void visitPost(DocAutoListItem *);
|
|
Packit |
1c1d7e |
void visitPre(DocPara *) ;
|
|
Packit |
1c1d7e |
void visitPost(DocPara *);
|
|
Packit |
1c1d7e |
void visitPre(DocRoot *);
|
|
Packit |
1c1d7e |
void visitPost(DocRoot *);
|
|
Packit |
1c1d7e |
void visitPre(DocSimpleSect *);
|
|
Packit |
1c1d7e |
void visitPost(DocSimpleSect *);
|
|
Packit |
1c1d7e |
void visitPre(DocTitle *);
|
|
Packit |
1c1d7e |
void visitPost(DocTitle *);
|
|
Packit |
1c1d7e |
void visitPre(DocSimpleList *);
|
|
Packit |
1c1d7e |
void visitPost(DocSimpleList *);
|
|
Packit |
1c1d7e |
void visitPre(DocSimpleListItem *);
|
|
Packit |
1c1d7e |
void visitPost(DocSimpleListItem *);
|
|
Packit |
1c1d7e |
void visitPre(DocSection *);
|
|
Packit |
1c1d7e |
void visitPost(DocSection *);
|
|
Packit |
1c1d7e |
void visitPre(DocHtmlList *);
|
|
Packit |
1c1d7e |
void visitPost(DocHtmlList *) ;
|
|
Packit |
1c1d7e |
void visitPre(DocHtmlListItem *);
|
|
Packit |
1c1d7e |
void visitPost(DocHtmlListItem *);
|
|
Packit |
1c1d7e |
//void visitPre(DocHtmlPre *);
|
|
Packit |
1c1d7e |
//void visitPost(DocHtmlPre *);
|
|
Packit |
1c1d7e |
void visitPre(DocHtmlDescList *);
|
|
Packit |
1c1d7e |
void visitPost(DocHtmlDescList *);
|
|
Packit |
1c1d7e |
void visitPre(DocHtmlDescTitle *);
|
|
Packit |
1c1d7e |
void visitPost(DocHtmlDescTitle *);
|
|
Packit |
1c1d7e |
void visitPre(DocHtmlDescData *);
|
|
Packit |
1c1d7e |
void visitPost(DocHtmlDescData *);
|
|
Packit |
1c1d7e |
void visitPre(DocHtmlTable *);
|
|
Packit |
1c1d7e |
void visitPost(DocHtmlTable *);
|
|
Packit |
1c1d7e |
void visitPre(DocHtmlRow *);
|
|
Packit |
1c1d7e |
void visitPost(DocHtmlRow *) ;
|
|
Packit |
1c1d7e |
void visitPre(DocHtmlCell *);
|
|
Packit |
1c1d7e |
void visitPost(DocHtmlCell *);
|
|
Packit |
1c1d7e |
void visitPre(DocHtmlCaption *);
|
|
Packit |
1c1d7e |
void visitPost(DocHtmlCaption *);
|
|
Packit |
1c1d7e |
void visitPre(DocInternal *);
|
|
Packit |
1c1d7e |
void visitPost(DocInternal *);
|
|
Packit |
1c1d7e |
void visitPre(DocHRef *);
|
|
Packit |
1c1d7e |
void visitPost(DocHRef *);
|
|
Packit |
1c1d7e |
void visitPre(DocHtmlHeader *);
|
|
Packit |
1c1d7e |
void visitPost(DocHtmlHeader *);
|
|
Packit |
1c1d7e |
void visitPre(DocImage *);
|
|
Packit |
1c1d7e |
void visitPost(DocImage *);
|
|
Packit |
1c1d7e |
void visitPre(DocDotFile *);
|
|
Packit |
1c1d7e |
void visitPost(DocDotFile *);
|
|
Packit |
1c1d7e |
void visitPre(DocMscFile *);
|
|
Packit |
1c1d7e |
void visitPost(DocMscFile *);
|
|
Packit |
1c1d7e |
void visitPre(DocDiaFile *);
|
|
Packit |
1c1d7e |
void visitPost(DocDiaFile *);
|
|
Packit |
1c1d7e |
void visitPre(DocLink *);
|
|
Packit |
1c1d7e |
void visitPost(DocLink *);
|
|
Packit |
1c1d7e |
void visitPre(DocRef *);
|
|
Packit |
1c1d7e |
void visitPost(DocRef *);
|
|
Packit |
1c1d7e |
void visitPre(DocSecRefItem *);
|
|
Packit |
1c1d7e |
void visitPost(DocSecRefItem *);
|
|
Packit |
1c1d7e |
void visitPre(DocSecRefList *);
|
|
Packit |
1c1d7e |
void visitPost(DocSecRefList *);
|
|
Packit |
1c1d7e |
//void visitPre(DocLanguage *);
|
|
Packit |
1c1d7e |
//void visitPost(DocLanguage *);
|
|
Packit |
1c1d7e |
void visitPre(DocParamSect *);
|
|
Packit |
1c1d7e |
void visitPost(DocParamSect *);
|
|
Packit |
1c1d7e |
void visitPre(DocParamList *);
|
|
Packit |
1c1d7e |
void visitPost(DocParamList *);
|
|
Packit |
1c1d7e |
void visitPre(DocXRefItem *);
|
|
Packit |
1c1d7e |
void visitPost(DocXRefItem *);
|
|
Packit |
1c1d7e |
void visitPre(DocInternalRef *);
|
|
Packit |
1c1d7e |
void visitPost(DocInternalRef *);
|
|
Packit |
1c1d7e |
void visitPre(DocCopy *);
|
|
Packit |
1c1d7e |
void visitPost(DocCopy *);
|
|
Packit |
1c1d7e |
void visitPre(DocText *);
|
|
Packit |
1c1d7e |
void visitPost(DocText *);
|
|
Packit |
1c1d7e |
void visitPre(DocHtmlBlockQuote *);
|
|
Packit |
1c1d7e |
void visitPost(DocHtmlBlockQuote *);
|
|
Packit |
1c1d7e |
void visitPre(DocVhdlFlow *);
|
|
Packit |
1c1d7e |
void visitPost(DocVhdlFlow *);
|
|
Packit |
1c1d7e |
void visitPre(DocParBlock *);
|
|
Packit |
1c1d7e |
void visitPost(DocParBlock *);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
private:
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//--------------------------------------
|
|
Packit |
1c1d7e |
// helper functions
|
|
Packit |
1c1d7e |
//--------------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void addLink(const QCString &ref, const QCString &file,
|
|
Packit |
1c1d7e |
const QCString &anchor);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void enterText();
|
|
Packit |
1c1d7e |
void leaveText();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void openItem(const char *);
|
|
Packit |
1c1d7e |
void closeItem();
|
|
Packit |
1c1d7e |
void singleItem(const char *);
|
|
Packit |
1c1d7e |
void openSubBlock(const char * = 0);
|
|
Packit |
1c1d7e |
void closeSubBlock();
|
|
Packit |
1c1d7e |
void openOther();
|
|
Packit |
1c1d7e |
void closeOther();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//--------------------------------------
|
|
Packit |
1c1d7e |
// state variables
|
|
Packit |
1c1d7e |
//--------------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
PerlModOutput &m_output;
|
|
Packit |
1c1d7e |
bool m_textmode;
|
|
Packit |
1c1d7e |
bool m_textblockstart;
|
|
Packit |
1c1d7e |
QCString m_other;
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
PerlModDocVisitor::PerlModDocVisitor(PerlModOutput &output)
|
|
Packit |
1c1d7e |
: DocVisitor(DocVisitor_Other), m_output(output), m_textmode(false)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("doc");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::finish()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
m_output.closeList()
|
|
Packit |
1c1d7e |
.add(m_other);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::addLink(const QCString &,const QCString &file,const QCString &anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString link = file;
|
|
Packit |
1c1d7e |
if (!anchor.isEmpty())
|
|
Packit |
1c1d7e |
(link += "_1") += anchor;
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("link", link);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::openItem(const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
m_output.openHash().addFieldQuotedString("type", name);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::closeItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
m_output.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::enterText()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_textmode)
|
|
Packit |
1c1d7e |
return;
|
|
Packit |
1c1d7e |
openItem("text");
|
|
Packit |
1c1d7e |
m_output.addField("content").add('\'');
|
|
Packit |
1c1d7e |
m_textmode = true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::leaveText()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!m_textmode)
|
|
Packit |
1c1d7e |
return;
|
|
Packit |
1c1d7e |
m_textmode = false;
|
|
Packit |
1c1d7e |
m_output
|
|
Packit |
1c1d7e |
.add('\'')
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::singleItem(const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem(name);
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::openSubBlock(const char *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
m_output.openList(s);
|
|
Packit |
1c1d7e |
m_textblockstart = true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::closeSubBlock()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::openOther()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// Using a secondary text stream will corrupt the perl file. Instead of
|
|
Packit |
1c1d7e |
// printing doc => [ data => [] ], it will print doc => [] data => [].
|
|
Packit |
1c1d7e |
/*
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
m_output.openSave();
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::closeOther()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// Using a secondary text stream will corrupt the perl file. Instead of
|
|
Packit |
1c1d7e |
// printing doc => [ data => [] ], it will print doc => [] data => [].
|
|
Packit |
1c1d7e |
/*
|
|
Packit |
1c1d7e |
QCString other;
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
m_output.closeSave(other);
|
|
Packit |
1c1d7e |
m_other += other;
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocWord *w)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
enterText();
|
|
Packit |
1c1d7e |
m_output.addQuoted(w->word());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocLinkedWord *w)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("url");
|
|
Packit |
1c1d7e |
addLink(w->ref(), w->file(), w->anchor());
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("content", w->word());
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocWhiteSpace *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
enterText();
|
|
Packit |
1c1d7e |
m_output.add(' ');
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocSymbol *sy)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const DocSymbol::PerlSymb *res = HtmlEntityMapper::instance()->perl(sy->symbol());
|
|
Packit |
1c1d7e |
const char *accent=0;
|
|
Packit |
1c1d7e |
if (res-> symb)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
switch (res->type)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case DocSymbol::Perl_string:
|
|
Packit |
1c1d7e |
enterText();
|
|
Packit |
1c1d7e |
m_output.add(res->symb);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case DocSymbol::Perl_char:
|
|
Packit |
1c1d7e |
enterText();
|
|
Packit |
1c1d7e |
m_output.add(res->symb[0]);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case DocSymbol::Perl_symbol:
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
openItem("symbol");
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("symbol", res->symb);
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
default:
|
|
Packit |
1c1d7e |
switch(res->type)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case DocSymbol::Perl_umlaut:
|
|
Packit |
1c1d7e |
accent = "umlaut";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case DocSymbol::Perl_acute:
|
|
Packit |
1c1d7e |
accent = "acute";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case DocSymbol::Perl_grave:
|
|
Packit |
1c1d7e |
accent = "grave";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case DocSymbol::Perl_circ:
|
|
Packit |
1c1d7e |
accent = "circ";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case DocSymbol::Perl_slash:
|
|
Packit |
1c1d7e |
accent = "slash";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case DocSymbol::Perl_tilde:
|
|
Packit |
1c1d7e |
accent = "tilde";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case DocSymbol::Perl_cedilla:
|
|
Packit |
1c1d7e |
accent = "cedilla";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case DocSymbol::Perl_ring:
|
|
Packit |
1c1d7e |
accent = "ring";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
default:
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
if (accent)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("accent");
|
|
Packit |
1c1d7e |
m_output
|
|
Packit |
1c1d7e |
.addFieldQuotedString("accent", accent)
|
|
Packit |
1c1d7e |
.addFieldQuotedChar("letter", res->symb[0]);
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("perl: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(sy->symbol(),TRUE));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocURL *u)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("url");
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("content", u->url());
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocLineBreak *) { singleItem("linebreak"); }
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocHorRuler *) { singleItem("hruler"); }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocStyleChange *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const char *style = 0;
|
|
Packit |
1c1d7e |
switch (s->style())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case DocStyleChange::Bold: style = "bold"; break;
|
|
Packit |
1c1d7e |
case DocStyleChange::Italic: style = "italic"; break;
|
|
Packit |
1c1d7e |
case DocStyleChange::Code: style = "code"; break;
|
|
Packit |
1c1d7e |
case DocStyleChange::Subscript: style = "subscript"; break;
|
|
Packit |
1c1d7e |
case DocStyleChange::Superscript: style = "superscript"; break;
|
|
Packit |
1c1d7e |
case DocStyleChange::Center: style = "center"; break;
|
|
Packit |
1c1d7e |
case DocStyleChange::Small: style = "small"; break;
|
|
Packit |
1c1d7e |
case DocStyleChange::Preformatted: style = "preformatted"; break;
|
|
Packit |
1c1d7e |
case DocStyleChange::Div: style = "div"; break;
|
|
Packit |
1c1d7e |
case DocStyleChange::Span: style = "span"; break;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
openItem("style");
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("style", style)
|
|
Packit |
1c1d7e |
.addFieldBoolean("enable", s->enable());
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocVerbatim *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const char *type = 0;
|
|
Packit |
1c1d7e |
switch (s->type())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case DocVerbatim::Code:
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<programlisting>");
|
|
Packit |
1c1d7e |
parseCode(m_ci,s->context(),s->text(),FALSE,0);
|
|
Packit |
1c1d7e |
m_output.add("</programlisting>");
|
|
Packit |
1c1d7e |
return;
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
case DocVerbatim::Verbatim: type = "preformatted"; break;
|
|
Packit |
1c1d7e |
case DocVerbatim::HtmlOnly: type = "htmlonly"; break;
|
|
Packit |
1c1d7e |
case DocVerbatim::RtfOnly: type = "rtfonly"; break;
|
|
Packit |
1c1d7e |
case DocVerbatim::ManOnly: type = "manonly"; break;
|
|
Packit |
1c1d7e |
case DocVerbatim::LatexOnly: type = "latexonly"; break;
|
|
Packit |
1c1d7e |
case DocVerbatim::XmlOnly: type = "xmlonly"; break;
|
|
Packit |
1c1d7e |
case DocVerbatim::DocbookOnly: type = "docbookonly"; break;
|
|
Packit |
1c1d7e |
case DocVerbatim::Dot: type = "dot"; break;
|
|
Packit |
1c1d7e |
case DocVerbatim::Msc: type = "msc"; break;
|
|
Packit |
1c1d7e |
case DocVerbatim::PlantUML: type = "plantuml"; break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
openItem(type);
|
|
Packit |
1c1d7e |
if (s->hasCaption())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openSubBlock("caption");
|
|
Packit |
1c1d7e |
QListIterator<DocNode> cli(s->children());
|
|
Packit |
1c1d7e |
DocNode *n;
|
|
Packit |
1c1d7e |
for (cli.toFirst();(n=cli.current());++cli) n->accept(this);
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("content", s->text());
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocAnchor *anc)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString anchor = anc->file() + "_1" + anc->anchor();
|
|
Packit |
1c1d7e |
openItem("anchor");
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("id", anchor);
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocInclude *inc)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const char *type = 0;
|
|
Packit |
1c1d7e |
switch(inc->type())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case DocInclude::IncWithLines:
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "
|
|
Packit |
1c1d7e |
QFileInfo cfi( inc->file() );
|
|
Packit |
1c1d7e |
FileDef fd( cfi.dirPath(), cfi.fileName() );
|
|
Packit |
1c1d7e |
parseCode(m_ci,inc->context(),inc->text().latin1(),inc->isExample(),inc->exampleFile(), &fd;;
|
|
Packit |
1c1d7e |
m_t << "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
return;
|
|
Packit |
1c1d7e |
case DocInclude::Include:
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<programlisting>");
|
|
Packit |
1c1d7e |
parseCode(m_ci,inc->context(),inc->text(),FALSE,0);
|
|
Packit |
1c1d7e |
m_output.add("</programlisting>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
return;
|
|
Packit |
1c1d7e |
case DocInclude::DontInclude: return;
|
|
Packit |
1c1d7e |
case DocInclude::HtmlInclude: type = "htmlonly"; break;
|
|
Packit |
1c1d7e |
case DocInclude::LatexInclude: type = "latexonly"; break;
|
|
Packit |
1c1d7e |
case DocInclude::VerbInclude: type = "preformatted"; break;
|
|
Packit |
1c1d7e |
case DocInclude::Snippet: return;
|
|
Packit |
1c1d7e |
case DocInclude::SnipWithLines: return;
|
|
Packit |
1c1d7e |
case DocInclude::SnippetDoc:
|
|
Packit |
1c1d7e |
case DocInclude::IncludeDoc:
|
|
Packit |
1c1d7e |
err("Internal inconsistency: found switch SnippetDoc / IncludeDoc in file: %s"
|
|
Packit |
1c1d7e |
"Please create a bug report\n",__FILE__);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
openItem(type);
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("content", inc->text());
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocIncOperator *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
//printf("DocIncOperator: type=%d first=%d, last=%d text=`%s'\n",
|
|
Packit |
1c1d7e |
// op->type(),op->isFirst(),op->isLast(),op->text().data());
|
|
Packit |
1c1d7e |
if (op->isFirst())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.add("<programlisting>");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (op->type()!=DocIncOperator::Skip)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
parseCode(m_ci,op->context(),op->text(),FALSE,0);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (op->isLast())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.add("</programlisting>");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.add('\n');
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocFormula *f)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("formula");
|
|
Packit |
1c1d7e |
QCString id;
|
|
Packit |
1c1d7e |
id += f->id();
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("id", id).addFieldQuotedString("content", f->text());
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocIndexEntry *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<indexentry>"
|
|
Packit |
1c1d7e |
"<primaryie>");
|
|
Packit |
1c1d7e |
m_output.addQuoted(ie->entry());
|
|
Packit |
1c1d7e |
m_output.add("</primaryie>"
|
|
Packit |
1c1d7e |
"<secondaryie></secondaryie>"
|
|
Packit |
1c1d7e |
"</indexentry>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocSimpleSectSep *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visit(DocCite *cite)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("cite");
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("text", cite->text());
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//--------------------------------------
|
|
Packit |
1c1d7e |
// visitor functions for compound nodes
|
|
Packit |
1c1d7e |
//--------------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocAutoList *l)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("list");
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("style", l->isEnumList() ? "ordered" : "itemized");
|
|
Packit |
1c1d7e |
openSubBlock("content");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocAutoList *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocAutoListItem *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openSubBlock();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocAutoListItem *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocPara *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (m_textblockstart)
|
|
Packit |
1c1d7e |
m_textblockstart = false;
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
singleItem("parbreak");
|
|
Packit |
1c1d7e |
/*
|
|
Packit |
1c1d7e |
openItem("para");
|
|
Packit |
1c1d7e |
openSubBlock("content");
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocPara *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
/*
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocRoot *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocRoot *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocSimpleSect *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const char *type = 0;
|
|
Packit |
1c1d7e |
switch (s->type())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case DocSimpleSect::See: type = "see"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Return: type = "return"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Author: type = "author"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Authors: type = "authors"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Version: type = "version"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Since: type = "since"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Date: type = "date"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Note: type = "note"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Warning: type = "warning"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Pre: type = "pre"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Post: type = "post"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Copyright: type = "copyright"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Invar: type = "invariant"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Remark: type = "remark"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Attention: type = "attention"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::User: type = "par"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Rcs: type = "rcs"; break;
|
|
Packit |
1c1d7e |
case DocSimpleSect::Unknown:
|
|
Packit |
1c1d7e |
err("unknown simple section found\n");
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
m_output.openHash();
|
|
Packit |
1c1d7e |
openOther();
|
|
Packit |
1c1d7e |
openSubBlock(type);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocSimpleSect *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
closeOther();
|
|
Packit |
1c1d7e |
m_output.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocTitle *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("title");
|
|
Packit |
1c1d7e |
openSubBlock("content");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocTitle *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocSimpleList *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("list");
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("style", "itemized");
|
|
Packit |
1c1d7e |
openSubBlock("content");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocSimpleList *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocSimpleListItem *) { openSubBlock(); }
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocSimpleListItem *) { closeSubBlock(); }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocSection *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString sect = QCString().sprintf("sect%d",s->level());
|
|
Packit |
1c1d7e |
openItem(sect);
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("title", s->title());
|
|
Packit |
1c1d7e |
openSubBlock("content");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocSection *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocHtmlList *l)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("list");
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("style", (l->type() == DocHtmlList::Ordered) ? "ordered" : "itemized");
|
|
Packit |
1c1d7e |
openSubBlock("content");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocHtmlList *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocHtmlListItem *) { openSubBlock(); }
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocHtmlListItem *) { closeSubBlock(); }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void PerlModDocVisitor::visitPre(DocHtmlPre *)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// openItem("preformatted");
|
|
Packit |
1c1d7e |
// openSubBlock("content");
|
|
Packit |
1c1d7e |
// //m_insidePre=TRUE;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void PerlModDocVisitor::visitPost(DocHtmlPre *)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// //m_insidePre=FALSE;
|
|
Packit |
1c1d7e |
// closeSubBlock();
|
|
Packit |
1c1d7e |
// closeItem();
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocHtmlDescList *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<variablelist>\n");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocHtmlDescList *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</variablelist>\n");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocHtmlDescTitle *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<varlistentry><term>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocHtmlDescTitle *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</term></varlistentry>\n");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocHtmlDescData *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<listitem>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocHtmlDescData *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</listitem>\n");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocHtmlTable *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("numRows());
|
|
Packit |
1c1d7e |
m_output.add("\" cols=\""); m_output.add(t->numCols()); m_output.add("\">");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocHtmlTable *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("\n");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocHtmlRow *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<row>\n");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocHtmlRow *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</row>\n");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocHtmlCell *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
if (c->isHeading()) m_output.add("<entry thead=\"yes\">"); else m_output.add("<entry thead=\"no\">");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocHtmlCell *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</entry>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocHtmlCaption *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<caption>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocHtmlCaption *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</caption>\n");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocInternal *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<internal>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocInternal *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</internal>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocHRef *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<ulink url=\""); m_output.add(href->url()); m_output.add("\">");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocHRef *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</ulink>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocHtmlHeader *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<sect"); m_output.add(header->level()); m_output.add(">");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocHtmlHeader *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</sect"); m_output.add(header->level()); m_output.add(">\n");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocImage *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("
|
|
Packit |
1c1d7e |
switch(img->type())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case DocImage::Html: m_output.add("html"); break;
|
|
Packit |
1c1d7e |
case DocImage::Latex: m_output.add("latex"); break;
|
|
Packit |
1c1d7e |
case DocImage::Rtf: m_output.add("rtf"); break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.add("\"");
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString baseName=img->name();
|
|
Packit |
1c1d7e |
int i;
|
|
Packit |
1c1d7e |
if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
baseName=baseName.right(baseName.length()-i-1);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.add(" name=\""); m_output.add(baseName); m_output.add("\"");
|
|
Packit |
1c1d7e |
if (!img->width().isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.add(" width=\"");
|
|
Packit |
1c1d7e |
m_output.addQuoted(img->width());
|
|
Packit |
1c1d7e |
m_output.add("\"");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (!img->height().isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.add(" height=\"");
|
|
Packit |
1c1d7e |
m_output.addQuoted(img->height());
|
|
Packit |
1c1d7e |
m_output.add("\"");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.add(">");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocImage *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</image>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocDotFile *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<dotfile name=\""); m_output.add(df->file()); m_output.add("\">");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocDotFile *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</dotfile>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocMscFile *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<mscfile name=\""); m_output.add(df->file()); m_output.add("\">");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocMscFile *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<mscfile>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocDiaFile *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<diafile name=\""); m_output.add(df->file()); m_output.add("\">");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocDiaFile *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</diafile>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocLink *lnk)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("link");
|
|
Packit |
1c1d7e |
addLink(lnk->ref(), lnk->file(), lnk->anchor());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocLink *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocRef *ref)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("ref");
|
|
Packit |
1c1d7e |
if (!ref->hasLinkText())
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("text", ref->targetTitle());
|
|
Packit |
1c1d7e |
openSubBlock("content");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocRef *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocSecRefItem *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<tocitem id=\""); m_output.add(ref->file()); m_output.add("_1"); m_output.add(ref->anchor()); m_output.add("\">");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocSecRefItem *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</tocitem>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocSecRefList *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("<toclist>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocSecRefList *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</toclist>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void PerlModDocVisitor::visitPre(DocLanguage *l)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// openItem("language");
|
|
Packit |
1c1d7e |
// m_output.addFieldQuotedString("id", l->id());
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//
|
|
Packit |
1c1d7e |
//void PerlModDocVisitor::visitPost(DocLanguage *)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// closeItem();
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocParamSect *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
const char *type = 0;
|
|
Packit |
1c1d7e |
switch(s->type())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case DocParamSect::Param: type = "params"; break;
|
|
Packit |
1c1d7e |
case DocParamSect::RetVal: type = "retvals"; break;
|
|
Packit |
1c1d7e |
case DocParamSect::Exception: type = "exceptions"; break;
|
|
Packit |
1c1d7e |
case DocParamSect::TemplateParam: type = "templateparam"; break;
|
|
Packit |
1c1d7e |
case DocParamSect::Unknown:
|
|
Packit |
1c1d7e |
err("unknown parameter section found\n");
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
openOther();
|
|
Packit |
1c1d7e |
openSubBlock(type);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocParamSect *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
closeOther();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocParamList *pl)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.openList("parameters");
|
|
Packit |
1c1d7e |
//QStrListIterator li(pl->parameters());
|
|
Packit |
1c1d7e |
//const char *s;
|
|
Packit |
1c1d7e |
QListIterator<DocNode> li(pl->parameters());
|
|
Packit |
1c1d7e |
DocNode *param;
|
|
Packit |
1c1d7e |
for (li.toFirst();(param=li.current());++li)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString name;
|
|
Packit |
1c1d7e |
if (param->kind()==DocNode::Kind_Word)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
name = ((DocWord*)param)->word();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (param->kind()==DocNode::Kind_LinkedWord)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
name = ((DocLinkedWord*)param)->word();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString dir = "";
|
|
Packit |
1c1d7e |
DocParamSect *sect = 0;
|
|
Packit |
1c1d7e |
if (pl->parent()->kind()==DocNode::Kind_ParamSect)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
sect=(DocParamSect*)pl->parent();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (sect && sect->hasInOutSpecifier())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (pl->direction()!=DocParamSect::Unspecified)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (pl->direction()==DocParamSect::In)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
dir = "in";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (pl->direction()==DocParamSect::Out)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
dir = "out";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (pl->direction()==DocParamSect::InOut)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
dir = "in,out";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", name).addFieldQuotedString("dir", dir)
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeList()
|
|
Packit |
1c1d7e |
.openList("doc");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocParamList *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
leaveText();
|
|
Packit |
1c1d7e |
m_output.closeList()
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocXRefItem *x)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("
|
|
Packit |
1c1d7e |
m_output.add(x->file()); m_output.add("_1"); m_output.add(x->anchor());
|
|
Packit |
1c1d7e |
m_output.add("\">");
|
|
Packit |
1c1d7e |
m_output.add("<xreftitle>");
|
|
Packit |
1c1d7e |
m_output.addQuoted(x->title());
|
|
Packit |
1c1d7e |
m_output.add("</xreftitle>");
|
|
Packit |
1c1d7e |
m_output.add("<xrefdescription>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
if (x->title().isEmpty()) return;
|
|
Packit |
1c1d7e |
openItem("xrefitem");
|
|
Packit |
1c1d7e |
openSubBlock("content");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocXRefItem *x)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (x->title().isEmpty()) return;
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
m_output.add("</xrefdescription>");
|
|
Packit |
1c1d7e |
m_output.add("</xrefsect>");
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocInternalRef *ref)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("ref");
|
|
Packit |
1c1d7e |
addLink(0,ref->file(),ref->anchor());
|
|
Packit |
1c1d7e |
openSubBlock("content");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocInternalRef *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocCopy *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocCopy *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocText *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocText *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocHtmlBlockQuote *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
openItem("blockquote");
|
|
Packit |
1c1d7e |
openSubBlock("content");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocHtmlBlockQuote *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
closeSubBlock();
|
|
Packit |
1c1d7e |
closeItem();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocVhdlFlow *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocVhdlFlow *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPre(DocParBlock *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModDocVisitor::visitPost(DocParBlock *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void addTemplateArgumentList(ArgumentList *al,PerlModOutput &output,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!al)
|
|
Packit |
1c1d7e |
return;
|
|
Packit |
1c1d7e |
output.openList("template_parameters");
|
|
Packit |
1c1d7e |
ArgumentListIterator ali(*al);
|
|
Packit |
1c1d7e |
Argument *a;
|
|
Packit |
1c1d7e |
for (ali.toFirst();(a=ali.current());++ali)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
output.openHash();
|
|
Packit |
1c1d7e |
if (!a->type.isEmpty())
|
|
Packit |
1c1d7e |
output.addFieldQuotedString("type", a->type);
|
|
Packit |
1c1d7e |
if (!a->name.isEmpty())
|
|
Packit |
1c1d7e |
output.addFieldQuotedString("declaration_name", a->name)
|
|
Packit |
1c1d7e |
.addFieldQuotedString("definition_name", a->name);
|
|
Packit |
1c1d7e |
if (!a->defval.isEmpty())
|
|
Packit |
1c1d7e |
output.addFieldQuotedString("default", a->defval);
|
|
Packit |
1c1d7e |
output.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
static void addMemberTemplateLists(MemberDef *md,PerlModOutput &output)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ClassDef *cd = md->getClassDef();
|
|
Packit |
1c1d7e |
const char *cname = cd ? cd->name().data() : 0;
|
|
Packit |
1c1d7e |
if (md->templateArguments()) // function template prefix
|
|
Packit |
1c1d7e |
addTemplateArgumentList(md->templateArguments(),output,cname);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void addTemplateList(ClassDef *cd,PerlModOutput &output)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
addTemplateArgumentList(cd->templateArguments(),output,cd->name());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void addPerlModDocBlock(PerlModOutput &output,
|
|
Packit |
1c1d7e |
const char *name,
|
|
Packit |
1c1d7e |
const QCString &fileName,
|
|
Packit |
1c1d7e |
int lineNr,
|
|
Packit |
1c1d7e |
Definition *scope,
|
|
Packit |
1c1d7e |
MemberDef *md,
|
|
Packit |
1c1d7e |
const QCString &text)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString stext = text.stripWhiteSpace();
|
|
Packit |
1c1d7e |
if (stext.isEmpty())
|
|
Packit |
1c1d7e |
output.addField(name).add("{}");
|
|
Packit |
1c1d7e |
else {
|
|
Packit |
1c1d7e |
DocNode *root = validatingParseDoc(fileName,lineNr,scope,md,stext,FALSE,0);
|
|
Packit |
1c1d7e |
output.openHash(name);
|
|
Packit |
1c1d7e |
PerlModDocVisitor *visitor = new PerlModDocVisitor(output);
|
|
Packit |
1c1d7e |
root->accept(visitor);
|
|
Packit |
1c1d7e |
visitor->finish();
|
|
Packit |
1c1d7e |
output.closeHash();
|
|
Packit |
1c1d7e |
delete visitor;
|
|
Packit |
1c1d7e |
delete root;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static const char *getProtectionName(Protection prot)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
switch (prot)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case Public: return "public";
|
|
Packit |
1c1d7e |
case Protected: return "protected";
|
|
Packit |
1c1d7e |
case Private: return "private";
|
|
Packit |
1c1d7e |
case Package: return "package";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return 0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static const char *getVirtualnessName(Specifier virt)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
switch(virt)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case Normal: return "non_virtual";
|
|
Packit |
1c1d7e |
case Virtual: return "virtual";
|
|
Packit |
1c1d7e |
case Pure: return "pure_virtual";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return 0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static QCString pathDoxyfile;
|
|
Packit |
1c1d7e |
static QCString pathDoxyExec;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void setPerlModDoxyfile(const QCString &qs)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
pathDoxyfile = qs;
|
|
Packit |
1c1d7e |
pathDoxyExec = QDir::currentDirPath().utf8();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
class PerlModGenerator
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
public:
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
PerlModOutput m_output;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString pathDoxyStructurePM;
|
|
Packit |
1c1d7e |
QCString pathDoxyDocsTex;
|
|
Packit |
1c1d7e |
QCString pathDoxyFormatTex;
|
|
Packit |
1c1d7e |
QCString pathDoxyLatexTex;
|
|
Packit |
1c1d7e |
QCString pathDoxyLatexDVI;
|
|
Packit |
1c1d7e |
QCString pathDoxyLatexPDF;
|
|
Packit |
1c1d7e |
QCString pathDoxyStructureTex;
|
|
Packit |
1c1d7e |
QCString pathDoxyDocsPM;
|
|
Packit |
1c1d7e |
QCString pathDoxyLatexPL;
|
|
Packit |
1c1d7e |
QCString pathDoxyLatexStructurePL;
|
|
Packit |
1c1d7e |
QCString pathDoxyRules;
|
|
Packit |
1c1d7e |
QCString pathMakefile;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
inline PerlModGenerator(bool pretty) : m_output(pretty) { }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void generatePerlModForMember(MemberDef *md, Definition *);
|
|
Packit |
1c1d7e |
void generatePerlModSection(Definition *d, MemberList *ml,
|
|
Packit |
1c1d7e |
const char *name, const char *header=0);
|
|
Packit |
1c1d7e |
void addListOfAllMembers(ClassDef *cd);
|
|
Packit |
1c1d7e |
void generatePerlModForClass(ClassDef *cd);
|
|
Packit |
1c1d7e |
void generatePerlModForNamespace(NamespaceDef *nd);
|
|
Packit |
1c1d7e |
void generatePerlModForFile(FileDef *fd);
|
|
Packit |
1c1d7e |
void generatePerlModForGroup(GroupDef *gd);
|
|
Packit |
1c1d7e |
void generatePerlModForPage(PageDef *pi);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool createOutputFile(QFile &f, const char *s);
|
|
Packit |
1c1d7e |
bool createOutputDir(QDir &perlModDir);
|
|
Packit |
1c1d7e |
bool generateDoxyLatexTex();
|
|
Packit |
1c1d7e |
bool generateDoxyFormatTex();
|
|
Packit |
1c1d7e |
bool generateDoxyStructurePM();
|
|
Packit |
1c1d7e |
bool generateDoxyLatexPL();
|
|
Packit |
1c1d7e |
bool generateDoxyLatexStructurePL();
|
|
Packit |
1c1d7e |
bool generateDoxyRules();
|
|
Packit |
1c1d7e |
bool generateMakefile();
|
|
Packit |
1c1d7e |
bool generatePerlModOutput();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void generate();
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModGenerator::generatePerlModForMember(MemberDef *md,Definition *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// + declaration/definition arg lists
|
|
Packit |
1c1d7e |
// + reimplements
|
|
Packit |
1c1d7e |
// + reimplementedBy
|
|
Packit |
1c1d7e |
// + exceptions
|
|
Packit |
1c1d7e |
// + const/volatile specifiers
|
|
Packit |
1c1d7e |
// - examples
|
|
Packit |
1c1d7e |
// - source definition
|
|
Packit |
1c1d7e |
// - source references
|
|
Packit |
1c1d7e |
// - source referenced by
|
|
Packit |
1c1d7e |
// - body code
|
|
Packit |
1c1d7e |
// - template arguments
|
|
Packit |
1c1d7e |
// (templateArguments(), definitionTemplateParameterLists())
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString memType;
|
|
Packit |
1c1d7e |
bool isFunc=FALSE;
|
|
Packit |
1c1d7e |
switch (md->memberType())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case MemberType_Define: memType="define"; break;
|
|
Packit |
1c1d7e |
case MemberType_EnumValue: memType="enumvalue"; break;
|
|
Packit |
1c1d7e |
case MemberType_Property: memType="property"; break;
|
|
Packit |
1c1d7e |
case MemberType_Variable: memType="variable"; break;
|
|
Packit |
1c1d7e |
case MemberType_Typedef: memType="typedef"; break;
|
|
Packit |
1c1d7e |
case MemberType_Enumeration: memType="enum"; break;
|
|
Packit |
1c1d7e |
case MemberType_Function: memType="function"; isFunc=TRUE; break;
|
|
Packit |
1c1d7e |
case MemberType_Signal: memType="signal"; isFunc=TRUE; break;
|
|
Packit |
1c1d7e |
//case MemberType_Prototype: memType="prototype"; isFunc=TRUE; break;
|
|
Packit |
1c1d7e |
case MemberType_Friend: memType="friend"; isFunc=TRUE; break;
|
|
Packit |
1c1d7e |
case MemberType_DCOP: memType="dcop"; isFunc=TRUE; break;
|
|
Packit |
1c1d7e |
case MemberType_Slot: memType="slot"; isFunc=TRUE; break;
|
|
Packit |
1c1d7e |
case MemberType_Event: memType="event"; break;
|
|
Packit |
1c1d7e |
case MemberType_Interface: memType="interface"; break;
|
|
Packit |
1c1d7e |
case MemberType_Service: memType="service"; break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("kind", memType)
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", md->name())
|
|
Packit |
1c1d7e |
.addFieldQuotedString("virtualness", getVirtualnessName(md->virtualness()))
|
|
Packit |
1c1d7e |
.addFieldQuotedString("protection", getProtectionName(md->protection()))
|
|
Packit |
1c1d7e |
.addFieldBoolean("static", md->isStatic());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"brief",md->getDefFileName(),md->getDefLine(),md->getOuterScope(),md,md->briefDescription());
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"detailed",md->getDefFileName(),md->getDefLine(),md->getOuterScope(),md,md->documentation());
|
|
Packit |
1c1d7e |
if (md->memberType()!=MemberType_Define &&
|
|
Packit |
1c1d7e |
md->memberType()!=MemberType_Enumeration)
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("type", md->typeString());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
ArgumentList *al = md->argumentList();
|
|
Packit |
1c1d7e |
if (isFunc) //function
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.addFieldBoolean("const", al!=0 && al->constSpecifier)
|
|
Packit |
1c1d7e |
.addFieldBoolean("volatile", al!=0 && al->volatileSpecifier);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openList("parameters");
|
|
Packit |
1c1d7e |
ArgumentList *declAl = md->declArgumentList();
|
|
Packit |
1c1d7e |
ArgumentList *defAl = md->argumentList();
|
|
Packit |
1c1d7e |
if (declAl && declAl->count()>0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ArgumentListIterator declAli(*declAl);
|
|
Packit |
1c1d7e |
ArgumentListIterator defAli(*defAl);
|
|
Packit |
1c1d7e |
Argument *a;
|
|
Packit |
1c1d7e |
for (declAli.toFirst();(a=declAli.current());++declAli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
Argument *defArg = defAli.current();
|
|
Packit |
1c1d7e |
m_output.openHash();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!a->name.isEmpty())
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("declaration_name", a->name);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (defArg && !defArg->name.isEmpty() && defArg->name!=a->name)
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("definition_name", defArg->name);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!a->type.isEmpty())
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("type", a->type);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!a->array.isEmpty())
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("array", a->array);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!a->defval.isEmpty())
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("default_value", a->defval);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!a->attrib.isEmpty())
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("attributes", a->attrib);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.closeHash();
|
|
Packit |
1c1d7e |
if (defArg) ++defAli;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (md->memberType()==MemberType_Define &&
|
|
Packit |
1c1d7e |
md->argsString()!=0) // define
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("parameters");
|
|
Packit |
1c1d7e |
ArgumentListIterator ali(*al);
|
|
Packit |
1c1d7e |
Argument *a;
|
|
Packit |
1c1d7e |
for (ali.toFirst();(a=ali.current());++ali)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", a->type)
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (md->argsString()!=0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("arguments", md->argsString());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!md->initializer().isEmpty())
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("initializer", md->initializer());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (md->excpString())
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("exceptions", md->excpString());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (md->memberType()==MemberType_Enumeration) // enum
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberList *enumFields = md->enumFieldList();
|
|
Packit |
1c1d7e |
if (enumFields)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("values");
|
|
Packit |
1c1d7e |
MemberListIterator emli(*enumFields);
|
|
Packit |
1c1d7e |
MemberDef *emd;
|
|
Packit |
1c1d7e |
for (emli.toFirst();(emd=emli.current());++emli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", emd->name());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!emd->initializer().isEmpty())
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("initializer", emd->initializer());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"brief",emd->getDefFileName(),emd->getDefLine(),emd->getOuterScope(),emd,emd->briefDescription());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"detailed",emd->getDefFileName(),emd->getDefLine(),emd->getOuterScope(),emd,emd->documentation());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
MemberDef *rmd = md->reimplements();
|
|
Packit |
1c1d7e |
if (rmd)
|
|
Packit |
1c1d7e |
m_output.openHash("reimplements")
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", rmd->name())
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
MemberList *rbml = md->reimplementedBy();
|
|
Packit |
1c1d7e |
if (rbml)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberListIterator mli(*rbml);
|
|
Packit |
1c1d7e |
m_output.openList("reimplemented_by");
|
|
Packit |
1c1d7e |
for (mli.toFirst();(rmd=mli.current());++mli)
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", rmd->name())
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModGenerator::generatePerlModSection(Definition *d,
|
|
Packit |
1c1d7e |
MemberList *ml,const char *name,const char *header)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (ml==0) return; // empty list
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openHash(name);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (header)
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("header", header);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openList("members");
|
|
Packit |
1c1d7e |
MemberListIterator mli(*ml);
|
|
Packit |
1c1d7e |
MemberDef *md;
|
|
Packit |
1c1d7e |
for (mli.toFirst();(md=mli.current());++mli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
generatePerlModForMember(md,d);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeList()
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModGenerator::addListOfAllMembers(ClassDef *cd)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("all_members");
|
|
Packit |
1c1d7e |
if (cd->memberNameInfoSDict())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberNameInfoSDict::Iterator mnii(*cd->memberNameInfoSDict());
|
|
Packit |
1c1d7e |
MemberNameInfo *mni;
|
|
Packit |
1c1d7e |
for (mnii.toFirst();(mni=mnii.current());++mnii)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberNameInfoIterator mii(*mni);
|
|
Packit |
1c1d7e |
MemberInfo *mi;
|
|
Packit |
1c1d7e |
for (mii.toFirst();(mi=mii.current());++mii)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberDef *md=mi->memberDef;
|
|
Packit |
1c1d7e |
ClassDef *cd=md->getClassDef();
|
|
Packit |
1c1d7e |
Definition *d=md->getGroupDef();
|
|
Packit |
1c1d7e |
if (d==0) d = cd;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", md->name())
|
|
Packit |
1c1d7e |
.addFieldQuotedString("virtualness", getVirtualnessName(md->virtualness()))
|
|
Packit |
1c1d7e |
.addFieldQuotedString("protection", getProtectionName(mi->prot));
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!mi->ambiguityResolutionScope.isEmpty())
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("ambiguity_scope", mi->ambiguityResolutionScope);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("scope", cd->name())
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModGenerator::generatePerlModForClass(ClassDef *cd)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// + brief description
|
|
Packit |
1c1d7e |
// + detailed description
|
|
Packit |
1c1d7e |
// + template argument list(s)
|
|
Packit |
1c1d7e |
// - include file
|
|
Packit |
1c1d7e |
// + member groups
|
|
Packit |
1c1d7e |
// + inheritance diagram
|
|
Packit |
1c1d7e |
// + list of direct super classes
|
|
Packit |
1c1d7e |
// + list of direct sub classes
|
|
Packit |
1c1d7e |
// + list of inner classes
|
|
Packit |
1c1d7e |
// + collaboration diagram
|
|
Packit |
1c1d7e |
// + list of all members
|
|
Packit |
1c1d7e |
// + user defined member sections
|
|
Packit |
1c1d7e |
// + standard member sections
|
|
Packit |
1c1d7e |
// + detailed member documentation
|
|
Packit |
1c1d7e |
// - examples using the class
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (cd->isReference()) return; // skip external references.
|
|
Packit |
1c1d7e |
if (cd->name().find('@')!=-1) return; // skip anonymous compounds.
|
|
Packit |
1c1d7e |
if (cd->templateMaster()!=0) return; // skip generated template instances.
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", cd->name());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (cd->baseClasses())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("base");
|
|
Packit |
1c1d7e |
BaseClassListIterator bcli(*cd->baseClasses());
|
|
Packit |
1c1d7e |
BaseClassDef *bcd;
|
|
Packit |
1c1d7e |
for (bcli.toFirst();(bcd=bcli.current());++bcli)
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", bcd->classDef->displayName())
|
|
Packit |
1c1d7e |
.addFieldQuotedString("virtualness", getVirtualnessName(bcd->virt))
|
|
Packit |
1c1d7e |
.addFieldQuotedString("protection", getProtectionName(bcd->prot))
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (cd->subClasses())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("derived");
|
|
Packit |
1c1d7e |
BaseClassListIterator bcli(*cd->subClasses());
|
|
Packit |
1c1d7e |
BaseClassDef *bcd;
|
|
Packit |
1c1d7e |
for (bcli.toFirst();(bcd=bcli.current());++bcli)
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", bcd->classDef->displayName())
|
|
Packit |
1c1d7e |
.addFieldQuotedString("virtualness", getVirtualnessName(bcd->virt))
|
|
Packit |
1c1d7e |
.addFieldQuotedString("protection", getProtectionName(bcd->prot))
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
ClassSDict *cl = cd->getClassSDict();
|
|
Packit |
1c1d7e |
if (cl)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("inner");
|
|
Packit |
1c1d7e |
ClassSDict::Iterator cli(*cl);
|
|
Packit |
1c1d7e |
ClassDef *cd;
|
|
Packit |
1c1d7e |
for (cli.toFirst();(cd=cli.current());++cli)
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", cd->name())
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
IncludeInfo *ii=cd->includeInfo();
|
|
Packit |
1c1d7e |
if (ii)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString nm = ii->includeName;
|
|
Packit |
1c1d7e |
if (nm.isEmpty() && ii->fileDef) nm = ii->fileDef->docName();
|
|
Packit |
1c1d7e |
if (!nm.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openHash("includes");
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
if (ii->fileDef && !ii->fileDef->isReference()) // TODO: support external references
|
|
Packit |
1c1d7e |
t << " id=\"" << ii->fileDef->getOutputFileBase() << "\"";
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
m_output.addFieldBoolean("local", ii->local)
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", nm)
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
addTemplateList(cd,m_output);
|
|
Packit |
1c1d7e |
addListOfAllMembers(cd);
|
|
Packit |
1c1d7e |
if (cd->getMemberGroupSDict())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberGroupSDict::Iterator mgli(*cd->getMemberGroupSDict());
|
|
Packit |
1c1d7e |
MemberGroup *mg;
|
|
Packit |
1c1d7e |
for (;(mg=mgli.current());++mgli)
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,mg->members(),"user_defined",mg->header());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_pubTypes),"public_typedefs");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_pubMethods),"public_methods");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_pubAttribs),"public_members");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_pubSlots),"public_slots");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_signals),"signals");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_dcopMethods),"dcop_methods");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_properties),"properties");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_pubStaticMethods),"public_static_methods");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_pubStaticAttribs),"public_static_members");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_proTypes),"protected_typedefs");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_proMethods),"protected_methods");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_proAttribs),"protected_members");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_proSlots),"protected_slots");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_proStaticMethods),"protected_static_methods");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_proStaticAttribs),"protected_static_members");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_priTypes),"private_typedefs");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_priMethods),"private_methods");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_priAttribs),"private_members");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_priSlots),"private_slots");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_priStaticMethods),"private_static_methods");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_priStaticAttribs),"private_static_members");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_friends),"friend_methods");
|
|
Packit |
1c1d7e |
generatePerlModSection(cd,cd->getMemberList(MemberListType_related),"related_methods");
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"brief",cd->getDefFileName(),cd->getDefLine(),cd,0,cd->briefDescription());
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"detailed",cd->getDefFileName(),cd->getDefLine(),cd,0,cd->documentation());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
DotClassGraph inheritanceGraph(cd,DotClassGraph::Inheritance);
|
|
Packit |
1c1d7e |
if (!inheritanceGraph.isTrivial())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " <inheritancegraph>" << endl;
|
|
Packit |
1c1d7e |
inheritanceGraph.writePerlMod(t);
|
|
Packit |
1c1d7e |
t << " </inheritancegraph>" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
DotClassGraph collaborationGraph(cd,DotClassGraph::Implementation);
|
|
Packit |
1c1d7e |
if (!collaborationGraph.isTrivial())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " <collaborationgraph>" << endl;
|
|
Packit |
1c1d7e |
collaborationGraph.writePerlMod(t);
|
|
Packit |
1c1d7e |
t << " </collaborationgraph>" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "
|
|
Packit |
1c1d7e |
<< cd->getDefFileName() << "\" line=\""
|
|
Packit |
1c1d7e |
<< cd->getDefLine() << "\"";
|
|
Packit |
1c1d7e |
if (cd->getStartBodyLine()!=-1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " bodystart=\"" << cd->getStartBodyLine() << "\" bodyend=\""
|
|
Packit |
1c1d7e |
<< cd->getEndBodyLine() << "\"";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "/>" << endl;
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModGenerator::generatePerlModForNamespace(NamespaceDef *nd)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// + contained class definitions
|
|
Packit |
1c1d7e |
// + contained namespace definitions
|
|
Packit |
1c1d7e |
// + member groups
|
|
Packit |
1c1d7e |
// + normal members
|
|
Packit |
1c1d7e |
// + brief desc
|
|
Packit |
1c1d7e |
// + detailed desc
|
|
Packit |
1c1d7e |
// + location
|
|
Packit |
1c1d7e |
// - files containing (parts of) the namespace definition
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (nd->isReference()) return; // skip external references
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", nd->name());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
ClassSDict *cl = nd->getClassSDict();
|
|
Packit |
1c1d7e |
if (cl)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("classes");
|
|
Packit |
1c1d7e |
ClassSDict::Iterator cli(*cl);
|
|
Packit |
1c1d7e |
ClassDef *cd;
|
|
Packit |
1c1d7e |
for (cli.toFirst();(cd=cli.current());++cli)
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", cd->name())
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
NamespaceSDict *nl = nd->getNamespaceSDict();
|
|
Packit |
1c1d7e |
if (nl)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("namespaces");
|
|
Packit |
1c1d7e |
NamespaceSDict::Iterator nli(*nl);
|
|
Packit |
1c1d7e |
NamespaceDef *nd;
|
|
Packit |
1c1d7e |
for (nli.toFirst();(nd=nli.current());++nli)
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", nd->name())
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (nd->getMemberGroupSDict())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberGroupSDict::Iterator mgli(*nd->getMemberGroupSDict());
|
|
Packit |
1c1d7e |
MemberGroup *mg;
|
|
Packit |
1c1d7e |
for (;(mg=mgli.current());++mgli)
|
|
Packit |
1c1d7e |
generatePerlModSection(nd,mg->members(),"user-defined",mg->header());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
generatePerlModSection(nd,nd->getMemberList(MemberListType_decDefineMembers),"defines");
|
|
Packit |
1c1d7e |
generatePerlModSection(nd,nd->getMemberList(MemberListType_decProtoMembers),"prototypes");
|
|
Packit |
1c1d7e |
generatePerlModSection(nd,nd->getMemberList(MemberListType_decTypedefMembers),"typedefs");
|
|
Packit |
1c1d7e |
generatePerlModSection(nd,nd->getMemberList(MemberListType_decEnumMembers),"enums");
|
|
Packit |
1c1d7e |
generatePerlModSection(nd,nd->getMemberList(MemberListType_decFuncMembers),"functions");
|
|
Packit |
1c1d7e |
generatePerlModSection(nd,nd->getMemberList(MemberListType_decVarMembers),"variables");
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"brief",nd->getDefFileName(),nd->getDefLine(),0,0,nd->briefDescription());
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"detailed",nd->getDefFileName(),nd->getDefLine(),0,0,nd->documentation());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModGenerator::generatePerlModForFile(FileDef *fd)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// + includes files
|
|
Packit |
1c1d7e |
// + includedby files
|
|
Packit |
1c1d7e |
// - include graph
|
|
Packit |
1c1d7e |
// - included by graph
|
|
Packit |
1c1d7e |
// - contained class definitions
|
|
Packit |
1c1d7e |
// - contained namespace definitions
|
|
Packit |
1c1d7e |
// - member groups
|
|
Packit |
1c1d7e |
// + normal members
|
|
Packit |
1c1d7e |
// + brief desc
|
|
Packit |
1c1d7e |
// + detailed desc
|
|
Packit |
1c1d7e |
// - source code
|
|
Packit |
1c1d7e |
// - location
|
|
Packit |
1c1d7e |
// - number of lines
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (fd->isReference()) return;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", fd->name());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
IncludeInfo *inc;
|
|
Packit |
1c1d7e |
m_output.openList("includes");
|
|
Packit |
1c1d7e |
if (fd->includeFileList())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<IncludeInfo> ili1(*fd->includeFileList());
|
|
Packit |
1c1d7e |
for (ili1.toFirst();(inc=ili1.current());++ili1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", inc->includeName);
|
|
Packit |
1c1d7e |
if (inc->fileDef && !inc->fileDef->isReference())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("ref", inc->fileDef->getOutputFileBase());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openList("included_by");
|
|
Packit |
1c1d7e |
if (fd->includedByFileList())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<IncludeInfo> ili2(*fd->includedByFileList());
|
|
Packit |
1c1d7e |
for (ili2.toFirst();(inc=ili2.current());++ili2)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", inc->includeName);
|
|
Packit |
1c1d7e |
if (inc->fileDef && !inc->fileDef->isReference())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("ref", inc->fileDef->getOutputFileBase());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
generatePerlModSection(fd,fd->getMemberList(MemberListType_decDefineMembers),"defines");
|
|
Packit |
1c1d7e |
generatePerlModSection(fd,fd->getMemberList(MemberListType_decProtoMembers),"prototypes");
|
|
Packit |
1c1d7e |
generatePerlModSection(fd,fd->getMemberList(MemberListType_decTypedefMembers),"typedefs");
|
|
Packit |
1c1d7e |
generatePerlModSection(fd,fd->getMemberList(MemberListType_decEnumMembers),"enums");
|
|
Packit |
1c1d7e |
generatePerlModSection(fd,fd->getMemberList(MemberListType_decFuncMembers),"functions");
|
|
Packit |
1c1d7e |
generatePerlModSection(fd,fd->getMemberList(MemberListType_decVarMembers),"variables");
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"brief",fd->getDefFileName(),fd->getDefLine(),0,0,fd->briefDescription());
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"detailed",fd->getDefFileName(),fd->getDefLine(),0,0,fd->documentation());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModGenerator::generatePerlModForGroup(GroupDef *gd)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// + members
|
|
Packit |
1c1d7e |
// + member groups
|
|
Packit |
1c1d7e |
// + files
|
|
Packit |
1c1d7e |
// + classes
|
|
Packit |
1c1d7e |
// + namespaces
|
|
Packit |
1c1d7e |
// - packages
|
|
Packit |
1c1d7e |
// + pages
|
|
Packit |
1c1d7e |
// + child groups
|
|
Packit |
1c1d7e |
// - examples
|
|
Packit |
1c1d7e |
// + brief description
|
|
Packit |
1c1d7e |
// + detailed description
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (gd->isReference()) return; // skip external references
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", gd->name())
|
|
Packit |
1c1d7e |
.addFieldQuotedString("title", gd->groupTitle());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
FileList *fl = gd->getFiles();
|
|
Packit |
1c1d7e |
if (fl)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("files");
|
|
Packit |
1c1d7e |
QListIterator<FileDef> fli(*fl);
|
|
Packit |
1c1d7e |
FileDef *fd;
|
|
Packit |
1c1d7e |
for (fli.toFirst();(fd=fli.current());++fli)
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", fd->name())
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
ClassSDict *cl = gd->getClasses();
|
|
Packit |
1c1d7e |
if (cl)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("classes");
|
|
Packit |
1c1d7e |
ClassSDict::Iterator cli(*cl);
|
|
Packit |
1c1d7e |
ClassDef *cd;
|
|
Packit |
1c1d7e |
for (cli.toFirst();(cd=cli.current());++cli)
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", cd->name())
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
NamespaceSDict *nl = gd->getNamespaces();
|
|
Packit |
1c1d7e |
if (nl)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("namespaces");
|
|
Packit |
1c1d7e |
NamespaceSDict::Iterator nli(*nl);
|
|
Packit |
1c1d7e |
NamespaceDef *nd;
|
|
Packit |
1c1d7e |
for (nli.toFirst();(nd=nli.current());++nli)
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", nd->name())
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
PageSDict *pl = gd->getPages();
|
|
Packit |
1c1d7e |
if (pl)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("pages");
|
|
Packit |
1c1d7e |
PageSDict::Iterator pli(*pl);
|
|
Packit |
1c1d7e |
PageDef *pd;
|
|
Packit |
1c1d7e |
for (pli.toFirst();(pd=pli.current());++pli)
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("title", pd->title())
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
GroupList *gl = gd->getSubGroups();
|
|
Packit |
1c1d7e |
if (gl)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_output.openList("groups");
|
|
Packit |
1c1d7e |
GroupListIterator gli(*gl);
|
|
Packit |
1c1d7e |
GroupDef *sgd;
|
|
Packit |
1c1d7e |
for (gli.toFirst();(sgd=gli.current());++gli)
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("title", sgd->groupTitle())
|
|
Packit |
1c1d7e |
.closeHash();
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (gd->getMemberGroupSDict())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberGroupSDict::Iterator mgli(*gd->getMemberGroupSDict());
|
|
Packit |
1c1d7e |
MemberGroup *mg;
|
|
Packit |
1c1d7e |
for (;(mg=mgli.current());++mgli)
|
|
Packit |
1c1d7e |
generatePerlModSection(gd,mg->members(),"user-defined",mg->header());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
generatePerlModSection(gd,gd->getMemberList(MemberListType_decDefineMembers),"defines");
|
|
Packit |
1c1d7e |
generatePerlModSection(gd,gd->getMemberList(MemberListType_decProtoMembers),"prototypes");
|
|
Packit |
1c1d7e |
generatePerlModSection(gd,gd->getMemberList(MemberListType_decTypedefMembers),"typedefs");
|
|
Packit |
1c1d7e |
generatePerlModSection(gd,gd->getMemberList(MemberListType_decEnumMembers),"enums");
|
|
Packit |
1c1d7e |
generatePerlModSection(gd,gd->getMemberList(MemberListType_decFuncMembers),"functions");
|
|
Packit |
1c1d7e |
generatePerlModSection(gd,gd->getMemberList(MemberListType_decVarMembers),"variables");
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"brief",gd->getDefFileName(),gd->getDefLine(),0,0,gd->briefDescription());
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"detailed",gd->getDefFileName(),gd->getDefLine(),0,0,gd->documentation());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModGenerator::generatePerlModForPage(PageDef *pd)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// + name
|
|
Packit |
1c1d7e |
// + title
|
|
Packit |
1c1d7e |
// + documentation
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (pd->isReference()) return;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openHash()
|
|
Packit |
1c1d7e |
.addFieldQuotedString("name", pd->name());
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
SectionInfo *si = Doxygen::sectionDict->find(pd->name());
|
|
Packit |
1c1d7e |
if (si)
|
|
Packit |
1c1d7e |
m_output.addFieldQuotedString("title4", filterTitle(si->title));
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
addPerlModDocBlock(m_output,"detailed",pd->docFile(),pd->docLine(),0,0,pd->documentation());
|
|
Packit |
1c1d7e |
m_output.closeHash();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool PerlModGenerator::generatePerlModOutput()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFile outputFile;
|
|
Packit |
1c1d7e |
if (!createOutputFile(outputFile, pathDoxyDocsPM))
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
FTextStream outputTextStream(&outputFile);
|
|
Packit |
1c1d7e |
PerlModOutputStream outputStream(&outputTextStream);
|
|
Packit |
1c1d7e |
m_output.setPerlModOutputStream(&outputStream);
|
|
Packit |
1c1d7e |
m_output.add("$doxydocs=").openHash();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openList("classes");
|
|
Packit |
1c1d7e |
ClassSDict::Iterator cli(*Doxygen::classSDict);
|
|
Packit |
1c1d7e |
ClassDef *cd;
|
|
Packit |
1c1d7e |
for (cli.toFirst();(cd=cli.current());++cli)
|
|
Packit |
1c1d7e |
generatePerlModForClass(cd);
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openList("namespaces");
|
|
Packit |
1c1d7e |
NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict);
|
|
Packit |
1c1d7e |
NamespaceDef *nd;
|
|
Packit |
1c1d7e |
for (nli.toFirst();(nd=nli.current());++nli)
|
|
Packit |
1c1d7e |
generatePerlModForNamespace(nd);
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openList("files");
|
|
Packit |
1c1d7e |
FileNameListIterator fnli(*Doxygen::inputNameList);
|
|
Packit |
1c1d7e |
FileName *fn;
|
|
Packit |
1c1d7e |
for (;(fn=fnli.current());++fnli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FileNameIterator fni(*fn);
|
|
Packit |
1c1d7e |
FileDef *fd;
|
|
Packit |
1c1d7e |
for (;(fd=fni.current());++fni)
|
|
Packit |
1c1d7e |
generatePerlModForFile(fd);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openList("groups");
|
|
Packit |
1c1d7e |
GroupSDict::Iterator gli(*Doxygen::groupSDict);
|
|
Packit |
1c1d7e |
GroupDef *gd;
|
|
Packit |
1c1d7e |
for (;(gd=gli.current());++gli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
generatePerlModForGroup(gd);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.openList("pages");
|
|
Packit |
1c1d7e |
PageSDict::Iterator pdi(*Doxygen::pageSDict);
|
|
Packit |
1c1d7e |
PageDef *pd=0;
|
|
Packit |
1c1d7e |
for (pdi.toFirst();(pd=pdi.current());++pdi)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
generatePerlModForPage(pd);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (Doxygen::mainPage)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
generatePerlModForPage(Doxygen::mainPage);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_output.closeList();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
m_output.closeHash().add(";\n1;\n");
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool PerlModGenerator::createOutputFile(QFile &f, const char *s)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
f.setName(s);
|
|
Packit |
1c1d7e |
if (!f.open(IO_WriteOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Cannot open file %s for writing!\n", s);
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool PerlModGenerator::createOutputDir(QDir &perlModDir)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString outputDirectory = Config_getString(OUTPUT_DIRECTORY);
|
|
Packit |
1c1d7e |
if (outputDirectory.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
outputDirectory=QDir::currentDirPath().utf8();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QDir dir(outputDirectory);
|
|
Packit |
1c1d7e |
if (!dir.exists())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
dir.setPath(QDir::currentDirPath());
|
|
Packit |
1c1d7e |
if (!dir.mkdir(outputDirectory))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("tag OUTPUT_DIRECTORY: Output directory `%s' does not "
|
|
Packit |
1c1d7e |
"exist and cannot be created\n",outputDirectory.data());
|
|
Packit |
1c1d7e |
exit(1);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
msg("Notice: Output directory `%s' does not exist. "
|
|
Packit |
1c1d7e |
"I have created it for you.\n", outputDirectory.data());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
dir.cd(outputDirectory);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
outputDirectory=dir.absPath().utf8();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QDir dir(outputDirectory);
|
|
Packit |
1c1d7e |
if (!dir.exists())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
dir.setPath(QDir::currentDirPath());
|
|
Packit |
1c1d7e |
if (!dir.mkdir(outputDirectory))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Cannot create directory %s\n",outputDirectory.data());
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
perlModDir.setPath(outputDirectory+"/perlmod");
|
|
Packit |
1c1d7e |
if (!perlModDir.exists() && !perlModDir.mkdir(outputDirectory+"/perlmod"))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Could not create perlmod directory in %s\n",outputDirectory.data());
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool PerlModGenerator::generateDoxyStructurePM()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFile doxyModelPM;
|
|
Packit |
1c1d7e |
if (!createOutputFile(doxyModelPM, pathDoxyStructurePM))
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
FTextStream doxyModelPMStream(&doxyModelPM);
|
|
Packit |
1c1d7e |
doxyModelPMStream <<
|
|
Packit |
1c1d7e |
"sub memberlist($) {\n"
|
|
Packit |
1c1d7e |
" my $prefix = $_[0];\n"
|
|
Packit |
1c1d7e |
" return\n"
|
|
Packit |
1c1d7e |
"\t[ \"hash\", $prefix . \"s\",\n"
|
|
Packit |
1c1d7e |
"\t {\n"
|
|
Packit |
1c1d7e |
"\t members =>\n"
|
|
Packit |
1c1d7e |
"\t [ \"list\", $prefix . \"List\",\n"
|
|
Packit |
1c1d7e |
"\t\t[ \"hash\", $prefix,\n"
|
|
Packit |
1c1d7e |
"\t\t {\n"
|
|
Packit |
1c1d7e |
"\t\t kind => [ \"string\", $prefix . \"Kind\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t name => [ \"string\", $prefix . \"Name\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t static => [ \"string\", $prefix . \"Static\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t virtualness => [ \"string\", $prefix . \"Virtualness\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t protection => [ \"string\", $prefix . \"Protection\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t type => [ \"string\", $prefix . \"Type\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t parameters =>\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"list\", $prefix . \"Params\",\n"
|
|
Packit |
1c1d7e |
"\t\t\t[ \"hash\", $prefix . \"Param\",\n"
|
|
Packit |
1c1d7e |
"\t\t\t {\n"
|
|
Packit |
1c1d7e |
"\t\t\t declaration_name => [ \"string\", $prefix . \"ParamName\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t\t type => [ \"string\", $prefix . \"ParamType\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t\t },\n"
|
|
Packit |
1c1d7e |
"\t\t\t],\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\t detailed =>\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"hash\", $prefix . \"Detailed\",\n"
|
|
Packit |
1c1d7e |
"\t\t\t{\n"
|
|
Packit |
1c1d7e |
"\t\t\t doc => [ \"doc\", $prefix . \"DetailedDoc\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t\t return => [ \"doc\", $prefix . \"Return\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t\t see => [ \"doc\", $prefix . \"See\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t\t params =>\n"
|
|
Packit |
1c1d7e |
"\t\t\t [ \"list\", $prefix . \"PDBlocks\",\n"
|
|
Packit |
1c1d7e |
"\t\t\t [ \"hash\", $prefix . \"PDBlock\",\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t{\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t parameters =>\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t [ \"list\", $prefix . \"PDParams\",\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t [ \"hash\", $prefix . \"PDParam\",\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t\t{\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t\t name => [ \"string\", $prefix . \"PDParamName\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t\t},\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t doc => [ \"doc\", $prefix . \"PDDoc\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t},\n"
|
|
Packit |
1c1d7e |
"\t\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\t\t},\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\t },\n"
|
|
Packit |
1c1d7e |
"\t\t],\n"
|
|
Packit |
1c1d7e |
"\t ],\n"
|
|
Packit |
1c1d7e |
"\t },\n"
|
|
Packit |
1c1d7e |
"\t];\n"
|
|
Packit |
1c1d7e |
"}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"$doxystructure =\n"
|
|
Packit |
1c1d7e |
" [ \"hash\", \"Root\",\n"
|
|
Packit |
1c1d7e |
" {\n"
|
|
Packit |
1c1d7e |
"\tfiles =>\n"
|
|
Packit |
1c1d7e |
"\t [ \"list\", \"Files\",\n"
|
|
Packit |
1c1d7e |
"\t [ \"hash\", \"File\",\n"
|
|
Packit |
1c1d7e |
"\t {\n"
|
|
Packit |
1c1d7e |
"\t\tname => [ \"string\", \"FileName\" ],\n"
|
|
Packit |
1c1d7e |
"\t\ttypedefs => memberlist(\"FileTypedef\"),\n"
|
|
Packit |
1c1d7e |
"\t\tvariables => memberlist(\"FileVariable\"),\n"
|
|
Packit |
1c1d7e |
"\t\tfunctions => memberlist(\"FileFunction\"),\n"
|
|
Packit |
1c1d7e |
"\t\tdetailed =>\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"hash\", \"FileDetailed\",\n"
|
|
Packit |
1c1d7e |
"\t\t {\n"
|
|
Packit |
1c1d7e |
"\t\t doc => [ \"doc\", \"FileDetailedDoc\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t },\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t },\n"
|
|
Packit |
1c1d7e |
"\t ],\n"
|
|
Packit |
1c1d7e |
"\t ],\n"
|
|
Packit |
1c1d7e |
"\tpages =>\n"
|
|
Packit |
1c1d7e |
"\t [ \"list\", \"Pages\",\n"
|
|
Packit |
1c1d7e |
"\t [ \"hash\", \"Page\",\n"
|
|
Packit |
1c1d7e |
"\t {\n"
|
|
Packit |
1c1d7e |
"\t\tname => [ \"string\", \"PageName\" ],\n"
|
|
Packit |
1c1d7e |
"\t\tdetailed =>\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"hash\", \"PageDetailed\",\n"
|
|
Packit |
1c1d7e |
"\t\t {\n"
|
|
Packit |
1c1d7e |
"\t\t doc => [ \"doc\", \"PageDetailedDoc\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t },\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t },\n"
|
|
Packit |
1c1d7e |
"\t ],\n"
|
|
Packit |
1c1d7e |
"\t ],\n"
|
|
Packit |
1c1d7e |
"\tclasses =>\n"
|
|
Packit |
1c1d7e |
"\t [ \"list\", \"Classes\",\n"
|
|
Packit |
1c1d7e |
"\t [ \"hash\", \"Class\",\n"
|
|
Packit |
1c1d7e |
"\t {\n"
|
|
Packit |
1c1d7e |
"\t\tname => [ \"string\", \"ClassName\" ],\n"
|
|
Packit |
1c1d7e |
"\t\tpublic_typedefs => memberlist(\"ClassPublicTypedef\"),\n"
|
|
Packit |
1c1d7e |
"\t\tpublic_methods => memberlist(\"ClassPublicMethod\"),\n"
|
|
Packit |
1c1d7e |
"\t\tpublic_members => memberlist(\"ClassPublicMember\"),\n"
|
|
Packit |
1c1d7e |
"\t\tprotected_typedefs => memberlist(\"ClassProtectedTypedef\"),\n"
|
|
Packit |
1c1d7e |
"\t\tprotected_methods => memberlist(\"ClassProtectedMethod\"),\n"
|
|
Packit |
1c1d7e |
"\t\tprotected_members => memberlist(\"ClassProtectedMember\"),\n"
|
|
Packit |
1c1d7e |
"\t\tprivate_typedefs => memberlist(\"ClassPrivateTypedef\"),\n"
|
|
Packit |
1c1d7e |
"\t\tprivate_methods => memberlist(\"ClassPrivateMethod\"),\n"
|
|
Packit |
1c1d7e |
"\t\tprivate_members => memberlist(\"ClassPrivateMember\"),\n"
|
|
Packit |
1c1d7e |
"\t\tdetailed =>\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"hash\", \"ClassDetailed\",\n"
|
|
Packit |
1c1d7e |
"\t\t {\n"
|
|
Packit |
1c1d7e |
"\t\t doc => [ \"doc\", \"ClassDetailedDoc\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t },\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t },\n"
|
|
Packit |
1c1d7e |
"\t ],\n"
|
|
Packit |
1c1d7e |
"\t ],\n"
|
|
Packit |
1c1d7e |
"\tgroups =>\n"
|
|
Packit |
1c1d7e |
"\t [ \"list\", \"Groups\",\n"
|
|
Packit |
1c1d7e |
"\t [ \"hash\", \"Group\",\n"
|
|
Packit |
1c1d7e |
"\t {\n"
|
|
Packit |
1c1d7e |
"\t\tname => [ \"string\", \"GroupName\" ],\n"
|
|
Packit |
1c1d7e |
"\t\ttitle => [ \"string\", \"GroupTitle\" ],\n"
|
|
Packit |
1c1d7e |
"\t\tfiles =>\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"list\", \"Files\",\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"hash\", \"File\",\n"
|
|
Packit |
1c1d7e |
"\t\t {\n"
|
|
Packit |
1c1d7e |
"\t\t name => [ \"string\", \"Filename\" ]\n"
|
|
Packit |
1c1d7e |
"\t\t }\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\tclasses =>\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"list\", \"Classes\",\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"hash\", \"Class\",\n"
|
|
Packit |
1c1d7e |
"\t\t {\n"
|
|
Packit |
1c1d7e |
"\t\t name => [ \"string\", \"Classname\" ]\n"
|
|
Packit |
1c1d7e |
"\t\t }\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\tnamespaces =>\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"list\", \"Namespaces\",\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"hash\", \"Namespace\",\n"
|
|
Packit |
1c1d7e |
"\t\t {\n"
|
|
Packit |
1c1d7e |
"\t\t name => [ \"string\", \"NamespaceName\" ]\n"
|
|
Packit |
1c1d7e |
"\t\t }\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\tpages =>\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"list\", \"Pages\",\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"hash\", \"Page\","
|
|
Packit |
1c1d7e |
"\t\t {\n"
|
|
Packit |
1c1d7e |
"\t\t title => [ \"string\", \"PageName\" ]\n"
|
|
Packit |
1c1d7e |
"\t\t }\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\tgroups =>\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"list\", \"Groups\",\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"hash\", \"Group\",\n"
|
|
Packit |
1c1d7e |
"\t\t {\n"
|
|
Packit |
1c1d7e |
"\t\t title => [ \"string\", \"GroupName\" ]\n"
|
|
Packit |
1c1d7e |
"\t\t }\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t\tfunctions => memberlist(\"GroupFunction\"),\n"
|
|
Packit |
1c1d7e |
"\t\tdetailed =>\n"
|
|
Packit |
1c1d7e |
"\t\t [ \"hash\", \"GroupDetailed\",\n"
|
|
Packit |
1c1d7e |
"\t\t {\n"
|
|
Packit |
1c1d7e |
"\t\t doc => [ \"doc\", \"GroupDetailedDoc\" ],\n"
|
|
Packit |
1c1d7e |
"\t\t },\n"
|
|
Packit |
1c1d7e |
"\t\t ],\n"
|
|
Packit |
1c1d7e |
"\t }\n"
|
|
Packit |
1c1d7e |
"\t ],\n"
|
|
Packit |
1c1d7e |
"\t ],\n"
|
|
Packit |
1c1d7e |
" },\n"
|
|
Packit |
1c1d7e |
" ];\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"1;\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool PerlModGenerator::generateDoxyRules()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFile doxyRules;
|
|
Packit |
1c1d7e |
if (!createOutputFile(doxyRules, pathDoxyRules))
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool perlmodLatex = Config_getBool(PERLMOD_LATEX);
|
|
Packit |
1c1d7e |
QCString prefix = Config_getString(PERLMOD_MAKEVAR_PREFIX);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
FTextStream doxyRulesStream(&doxyRules);
|
|
Packit |
1c1d7e |
doxyRulesStream <<
|
|
Packit |
1c1d7e |
prefix << "DOXY_EXEC_PATH = " << pathDoxyExec << "\n" <<
|
|
Packit |
1c1d7e |
prefix << "DOXYFILE = " << pathDoxyfile << "\n" <<
|
|
Packit |
1c1d7e |
prefix << "DOXYDOCS_PM = " << pathDoxyDocsPM << "\n" <<
|
|
Packit |
1c1d7e |
prefix << "DOXYSTRUCTURE_PM = " << pathDoxyStructurePM << "\n" <<
|
|
Packit |
1c1d7e |
prefix << "DOXYRULES = " << pathDoxyRules << "\n";
|
|
Packit |
1c1d7e |
if (perlmodLatex)
|
|
Packit |
1c1d7e |
doxyRulesStream <<
|
|
Packit |
1c1d7e |
prefix << "DOXYLATEX_PL = " << pathDoxyLatexPL << "\n" <<
|
|
Packit |
1c1d7e |
prefix << "DOXYLATEXSTRUCTURE_PL = " << pathDoxyLatexStructurePL << "\n" <<
|
|
Packit |
1c1d7e |
prefix << "DOXYSTRUCTURE_TEX = " << pathDoxyStructureTex << "\n" <<
|
|
Packit |
1c1d7e |
prefix << "DOXYDOCS_TEX = " << pathDoxyDocsTex << "\n" <<
|
|
Packit |
1c1d7e |
prefix << "DOXYFORMAT_TEX = " << pathDoxyFormatTex << "\n" <<
|
|
Packit |
1c1d7e |
prefix << "DOXYLATEX_TEX = " << pathDoxyLatexTex << "\n" <<
|
|
Packit |
1c1d7e |
prefix << "DOXYLATEX_DVI = " << pathDoxyLatexDVI << "\n" <<
|
|
Packit |
1c1d7e |
prefix << "DOXYLATEX_PDF = " << pathDoxyLatexPDF << "\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
doxyRulesStream <<
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
".PHONY: clean-perlmod\n"
|
|
Packit |
1c1d7e |
"clean-perlmod::\n"
|
|
Packit |
1c1d7e |
"\trm -f $(" << prefix << "DOXYSTRUCTURE_PM) \\\n"
|
|
Packit |
1c1d7e |
"\t$(" << prefix << "DOXYDOCS_PM)";
|
|
Packit |
1c1d7e |
if (perlmodLatex)
|
|
Packit |
1c1d7e |
doxyRulesStream <<
|
|
Packit |
1c1d7e |
" \\\n"
|
|
Packit |
1c1d7e |
"\t$(" << prefix << "DOXYLATEX_PL) \\\n"
|
|
Packit |
1c1d7e |
"\t$(" << prefix << "DOXYLATEXSTRUCTURE_PL) \\\n"
|
|
Packit |
1c1d7e |
"\t$(" << prefix << "DOXYDOCS_TEX) \\\n"
|
|
Packit |
1c1d7e |
"\t$(" << prefix << "DOXYSTRUCTURE_TEX) \\\n"
|
|
Packit |
1c1d7e |
"\t$(" << prefix << "DOXYFORMAT_TEX) \\\n"
|
|
Packit |
1c1d7e |
"\t$(" << prefix << "DOXYLATEX_TEX) \\\n"
|
|
Packit |
1c1d7e |
"\t$(" << prefix << "DOXYLATEX_PDF) \\\n"
|
|
Packit |
1c1d7e |
"\t$(" << prefix << "DOXYLATEX_DVI) \\\n"
|
|
Packit |
1c1d7e |
"\t$(addprefix $(" << prefix << "DOXYLATEX_TEX:tex=),out aux log)";
|
|
Packit |
1c1d7e |
doxyRulesStream << "\n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
doxyRulesStream <<
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYRULES) \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYMAKEFILE) \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYSTRUCTURE_PM) \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYDOCS_PM)";
|
|
Packit |
1c1d7e |
if (perlmodLatex) {
|
|
Packit |
1c1d7e |
doxyRulesStream <<
|
|
Packit |
1c1d7e |
" \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYLATEX_PL) \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYLATEXSTRUCTURE_PL) \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYFORMAT_TEX) \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYLATEX_TEX)";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
doxyRulesStream <<
|
|
Packit |
1c1d7e |
": \\\n"
|
|
Packit |
1c1d7e |
"\t$(" << prefix << "DOXYFILE)\n"
|
|
Packit |
1c1d7e |
"\tcd $(" << prefix << "DOXY_EXEC_PATH) ; doxygen \"$<\"\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (perlmodLatex) {
|
|
Packit |
1c1d7e |
doxyRulesStream <<
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYDOCS_TEX): \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYLATEX_PL) \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYDOCS_PM)\n"
|
|
Packit |
1c1d7e |
"\tperl -I\"$(<D)\" \"$<\" >\"$@\"\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYSTRUCTURE_TEX): \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYLATEXSTRUCTURE_PL) \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYSTRUCTURE_PM)\n"
|
|
Packit |
1c1d7e |
"\tperl -I\"$(<D)\" \"$<\" >\"$@\"\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYLATEX_PDF) \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYLATEX_DVI): \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYLATEX_TEX) \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYFORMAT_TEX) \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYSTRUCTURE_TEX) \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYDOCS_TEX)\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYLATEX_PDF): \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYLATEX_TEX)\n"
|
|
Packit |
1c1d7e |
"\tpdflatex -interaction=nonstopmode \"$<\"\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYLATEX_DVI): \\\n"
|
|
Packit |
1c1d7e |
"$(" << prefix << "DOXYLATEX_TEX)\n"
|
|
Packit |
1c1d7e |
"\tlatex -interaction=nonstopmode \"$<\"\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool PerlModGenerator::generateMakefile()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFile makefile;
|
|
Packit |
1c1d7e |
if (!createOutputFile(makefile, pathMakefile))
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool perlmodLatex = Config_getBool(PERLMOD_LATEX);
|
|
Packit |
1c1d7e |
QCString prefix = Config_getString(PERLMOD_MAKEVAR_PREFIX);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
FTextStream makefileStream(&makefile);
|
|
Packit |
1c1d7e |
makefileStream <<
|
|
Packit |
1c1d7e |
".PHONY: default clean" << (perlmodLatex ? " pdf" : "") << "\n"
|
|
Packit |
1c1d7e |
"default: " << (perlmodLatex ? "pdf" : "clean") << "\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"include " << pathDoxyRules << "\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"clean: clean-perlmod\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (perlmodLatex) {
|
|
Packit |
1c1d7e |
makefileStream <<
|
|
Packit |
1c1d7e |
"pdf: $(" << prefix << "DOXYLATEX_PDF)\n"
|
|
Packit |
1c1d7e |
"dvi: $(" << prefix << "DOXYLATEX_DVI)\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool PerlModGenerator::generateDoxyLatexStructurePL()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFile doxyLatexStructurePL;
|
|
Packit |
1c1d7e |
if (!createOutputFile(doxyLatexStructurePL, pathDoxyLatexStructurePL))
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
FTextStream doxyLatexStructurePLStream(&doxyLatexStructurePL);
|
|
Packit |
1c1d7e |
doxyLatexStructurePLStream <<
|
|
Packit |
1c1d7e |
"use DoxyStructure;\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"sub process($) {\n"
|
|
Packit |
1c1d7e |
"\tmy $node = $_[0];\n"
|
|
Packit |
1c1d7e |
"\tmy ($type, $name) = @$node[0, 1];\n"
|
|
Packit |
1c1d7e |
"\tmy $command;\n"
|
|
Packit |
1c1d7e |
"\tif ($type eq \"string\") { $command = \"String\" }\n"
|
|
Packit |
1c1d7e |
"\telsif ($type eq \"doc\") { $command = \"Doc\" }\n"
|
|
Packit |
1c1d7e |
"\telsif ($type eq \"hash\") {\n"
|
|
Packit |
1c1d7e |
"\t\t$command = \"Hash\";\n"
|
|
Packit |
1c1d7e |
"\t\tfor my $subnode (values %{$$node[2]}) {\n"
|
|
Packit |
1c1d7e |
"\t\t\tprocess($subnode);\n"
|
|
Packit |
1c1d7e |
"\t\t}\n"
|
|
Packit |
1c1d7e |
"\t}\n"
|
|
Packit |
1c1d7e |
"\telsif ($type eq \"list\") {\n"
|
|
Packit |
1c1d7e |
"\t\t$command = \"List\";\n"
|
|
Packit |
1c1d7e |
"\t\tprocess($$node[2]);\n"
|
|
Packit |
1c1d7e |
"\t}\n"
|
|
Packit |
1c1d7e |
"\tprint \"\\\\\" . $command . \"Node{\" . $name . \"}%\\n\";\n"
|
|
Packit |
1c1d7e |
"}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"process($doxystructure);\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool PerlModGenerator::generateDoxyLatexPL()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFile doxyLatexPL;
|
|
Packit |
1c1d7e |
if (!createOutputFile(doxyLatexPL, pathDoxyLatexPL))
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
FTextStream doxyLatexPLStream(&doxyLatexPL);
|
|
Packit |
1c1d7e |
doxyLatexPLStream <<
|
|
Packit |
1c1d7e |
"use DoxyStructure;\n"
|
|
Packit |
1c1d7e |
"use DoxyDocs;\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"sub latex_quote($) {\n"
|
|
Packit |
1c1d7e |
"\tmy $text = $_[0];\n"
|
|
Packit |
1c1d7e |
"\t$text =~ s/\\\\/\\\\textbackslash /g;\n"
|
|
Packit |
1c1d7e |
"\t$text =~ s/\\|/\\\\textbar /g;\n"
|
|
Packit |
1c1d7e |
"\t$text =~ s/</\\\\textless /g;\n"
|
|
Packit |
1c1d7e |
"\t$text =~ s/>/\\\\textgreater /g;\n"
|
|
Packit |
1c1d7e |
"\t$text =~ s/~/\\\\textasciitilde /g;\n"
|
|
Packit |
1c1d7e |
"\t$text =~ s/\\^/\\\\textasciicircum /g;\n"
|
|
Packit |
1c1d7e |
"\t$text =~ s/[\\$&%#_{}]/\\\\$&/;;\n"
|
|
Packit |
1c1d7e |
"\tprint $text;\n"
|
|
Packit |
1c1d7e |
"}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"sub generate_doc($) {\n"
|
|
Packit |
1c1d7e |
"\tmy $doc = $_[0];\n"
|
|
Packit |
1c1d7e |
"\tfor my $item (@$doc) {\n"
|
|
Packit |
1c1d7e |
"\t\tmy $type = $$item{type};\n"
|
|
Packit |
1c1d7e |
"\t\tif ($type eq \"text\") {\n"
|
|
Packit |
1c1d7e |
"\t\t\tlatex_quote($$item{content});\n"
|
|
Packit |
1c1d7e |
"\t\t} elsif ($type eq \"parbreak\") {\n"
|
|
Packit |
1c1d7e |
"\t\t\tprint \"\\n\\n\";\n"
|
|
Packit |
1c1d7e |
"\t\t} elsif ($type eq \"style\") {\n"
|
|
Packit |
1c1d7e |
"\t\t\tmy $style = $$item{style};\n"
|
|
Packit |
1c1d7e |
"\t\t\tif ($$item{enable} eq \"yes\") {\n"
|
|
Packit |
1c1d7e |
"\t\t\t\tif ($style eq \"bold\") { print '\\bfseries'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\t\tif ($style eq \"italic\") { print '\\itshape'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\t\tif ($style eq \"code\") { print '\\ttfamily'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\t} else {\n"
|
|
Packit |
1c1d7e |
"\t\t\t\tif ($style eq \"bold\") { print '\\mdseries'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\t\tif ($style eq \"italic\") { print '\\upshape'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\t\tif ($style eq \"code\") { print '\\rmfamily'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\t}\n"
|
|
Packit |
1c1d7e |
"\t\t\tprint '{}';\n"
|
|
Packit |
1c1d7e |
"\t\t} elsif ($type eq \"symbol\") {\n"
|
|
Packit |
1c1d7e |
"\t\t\tmy $symbol = $$item{symbol};\n"
|
|
Packit |
1c1d7e |
"\t\t\tif ($symbol eq \"copyright\") { print '\\copyright'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\telsif ($symbol eq \"szlig\") { print '\\ss'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\tprint '{}';\n"
|
|
Packit |
1c1d7e |
"\t\t} elsif ($type eq \"accent\") {\n"
|
|
Packit |
1c1d7e |
"\t\t\tmy ($accent) = $$item{accent};\n"
|
|
Packit |
1c1d7e |
"\t\t\tif ($accent eq \"umlaut\") { print '\\\"'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\telsif ($accent eq \"acute\") { print '\\\\\\''; }\n"
|
|
Packit |
1c1d7e |
"\t\t\telsif ($accent eq \"grave\") { print '\\`'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\telsif ($accent eq \"circ\") { print '\\^'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\telsif ($accent eq \"tilde\") { print '\\~'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\telsif ($accent eq \"cedilla\") { print '\\c'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\telsif ($accent eq \"ring\") { print '\\r'; }\n"
|
|
Packit |
1c1d7e |
"\t\t\tprint \"{\" . $$item{letter} . \"}\"; \n"
|
|
Packit |
1c1d7e |
"\t\t} elsif ($type eq \"list\") {\n"
|
|
Packit |
1c1d7e |
"\t\t\tmy $env = ($$item{style} eq \"ordered\") ? \"enumerate\" : \"itemize\";\n"
|
|
Packit |
1c1d7e |
"\t\t\tprint \"\\n\\\\begin{\" . $env .\"}\";\n"
|
|
Packit |
1c1d7e |
"\t\t \tfor my $subitem (@{$$item{content}}) {\n"
|
|
Packit |
1c1d7e |
"\t\t\t\tprint \"\\n\\\\item \";\n"
|
|
Packit |
1c1d7e |
"\t\t\t\tgenerate_doc($subitem);\n"
|
|
Packit |
1c1d7e |
"\t\t \t}\n"
|
|
Packit |
1c1d7e |
"\t\t\tprint \"\\n\\\\end{\" . $env .\"}\";\n"
|
|
Packit |
1c1d7e |
"\t\t} elsif ($type eq \"url\") {\n"
|
|
Packit |
1c1d7e |
"\t\t\tlatex_quote($$item{content});\n"
|
|
Packit |
1c1d7e |
"\t\t}\n"
|
|
Packit |
1c1d7e |
"\t}\n"
|
|
Packit |
1c1d7e |
"}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"sub generate($$) {\n"
|
|
Packit |
1c1d7e |
"\tmy ($item, $node) = @_;\n"
|
|
Packit |
1c1d7e |
"\tmy ($type, $name) = @$node[0, 1];\n"
|
|
Packit |
1c1d7e |
"\tif ($type eq \"string\") {\n"
|
|
Packit |
1c1d7e |
"\t\tprint \"\\\\\" . $name . \"{\";\n"
|
|
Packit |
1c1d7e |
"\t\tlatex_quote($item);\n"
|
|
Packit |
1c1d7e |
"\t\tprint \"}\";\n"
|
|
Packit |
1c1d7e |
"\t} elsif ($type eq \"doc\") {\n"
|
|
Packit |
1c1d7e |
"\t\tif (@$item) {\n"
|
|
Packit |
1c1d7e |
"\t\t\tprint \"\\\\\" . $name . \"{\";\n"
|
|
Packit |
1c1d7e |
"\t\t\tgenerate_doc($item);\n"
|
|
Packit |
1c1d7e |
"\t\t\tprint \"}%\\n\";\n"
|
|
Packit |
1c1d7e |
"\t\t} else {\n"
|
|
Packit |
1c1d7e |
"#\t\t\tprint \"\\\\\" . $name . \"Empty%\\n\";\n"
|
|
Packit |
1c1d7e |
"\t\t}\n"
|
|
Packit |
1c1d7e |
"\t} elsif ($type eq \"hash\") {\n"
|
|
Packit |
1c1d7e |
"\t\tmy ($key, $value);\n"
|
|
Packit |
1c1d7e |
"\t\twhile (($key, $subnode) = each %{$$node[2]}) {\n"
|
|
Packit |
1c1d7e |
"\t\t\tmy $subname = $$subnode[1];\n"
|
|
Packit |
1c1d7e |
"\t\t\tprint \"\\\\Defcs{field\" . $subname . \"}{\";\n"
|
|
Packit |
1c1d7e |
"\t\t\tif ($$item{$key}) {\n"
|
|
Packit |
1c1d7e |
"\t\t\t\tgenerate($$item{$key}, $subnode);\n"
|
|
Packit |
1c1d7e |
"\t\t\t} else {\n"
|
|
Packit |
1c1d7e |
"#\t\t\t\t\tprint \"\\\\\" . $subname . \"Empty%\\n\";\n"
|
|
Packit |
1c1d7e |
"\t\t\t}\n"
|
|
Packit |
1c1d7e |
"\t\t\tprint \"}%\\n\";\n"
|
|
Packit |
1c1d7e |
"\t\t}\n"
|
|
Packit |
1c1d7e |
"\t\tprint \"\\\\\" . $name . \"%\\n\";\n"
|
|
Packit |
1c1d7e |
"\t} elsif ($type eq \"list\") {\n"
|
|
Packit |
1c1d7e |
"\t\tmy $index = 0;\n"
|
|
Packit |
1c1d7e |
"\t\tif (@$item) {\n"
|
|
Packit |
1c1d7e |
"\t\t\tprint \"\\\\\" . $name . \"{%\\n\";\n"
|
|
Packit |
1c1d7e |
"\t\t\tfor my $subitem (@$item) {\n"
|
|
Packit |
1c1d7e |
"\t\t\t\tif ($index) {\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t\tprint \"\\\\\" . $name . \"Sep%\\n\";\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t}\n"
|
|
Packit |
1c1d7e |
"\t\t\t\tgenerate($subitem, $$node[2]);\n"
|
|
Packit |
1c1d7e |
"\t\t\t\t$index++;\n"
|
|
Packit |
1c1d7e |
"\t\t\t}\n"
|
|
Packit |
1c1d7e |
"\t\t\tprint \"}%\\n\";\n"
|
|
Packit |
1c1d7e |
"\t\t} else {\n"
|
|
Packit |
1c1d7e |
"#\t\t\tprint \"\\\\\" . $name . \"Empty%\\n\";\n"
|
|
Packit |
1c1d7e |
"\t\t}\n"
|
|
Packit |
1c1d7e |
"\t}\n"
|
|
Packit |
1c1d7e |
"}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"generate($doxydocs, $doxystructure);\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool PerlModGenerator::generateDoxyFormatTex()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFile doxyFormatTex;
|
|
Packit |
1c1d7e |
if (!createOutputFile(doxyFormatTex, pathDoxyFormatTex))
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
FTextStream doxyFormatTexStream(&doxyFormatTex);
|
|
Packit |
1c1d7e |
doxyFormatTexStream <<
|
|
Packit |
1c1d7e |
"\\def\\Defcs#1{\\long\\expandafter\\def\\csname#1\\endcsname}\n"
|
|
Packit |
1c1d7e |
"\\Defcs{Empty}{}\n"
|
|
Packit |
1c1d7e |
"\\def\\IfEmpty#1{\\expandafter\\ifx\\csname#1\\endcsname\\Empty}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\def\\StringNode#1{\\Defcs{#1}##1{##1}}\n"
|
|
Packit |
1c1d7e |
"\\def\\DocNode#1{\\Defcs{#1}##1{##1}}\n"
|
|
Packit |
1c1d7e |
"\\def\\ListNode#1{\\Defcs{#1}##1{##1}\\Defcs{#1Sep}{}}\n"
|
|
Packit |
1c1d7e |
"\\def\\HashNode#1{\\Defcs{#1}{}}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\input{" << pathDoxyStructureTex << "}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\newbox\\BoxA\n"
|
|
Packit |
1c1d7e |
"\\dimendef\\DimenA=151\\relax\n"
|
|
Packit |
1c1d7e |
"\\dimendef\\DimenB=152\\relax\n"
|
|
Packit |
1c1d7e |
"\\countdef\\ZoneDepth=151\\relax\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\def\\Cs#1{\\csname#1\\endcsname}\n"
|
|
Packit |
1c1d7e |
"\\def\\Letcs#1{\\expandafter\\let\\csname#1\\endcsname}\n"
|
|
Packit |
1c1d7e |
"\\def\\Heading#1{\\vskip 4mm\\relax\\textbf{#1}}\n"
|
|
Packit |
1c1d7e |
"\\def\\See#1{\\begin{flushleft}\\Heading{See also: }#1\\end{flushleft}}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\def\\Frame#1{\\vskip 3mm\\relax\\fbox{ \\vbox{\\hsize0.95\\hsize\\vskip 1mm\\relax\n"
|
|
Packit |
1c1d7e |
"\\raggedright#1\\vskip 0.5mm\\relax} }}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\def\\Zone#1#2#3{%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{Test#1}{#2}%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{Emit#1}{#3}%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1}{%\n"
|
|
Packit |
1c1d7e |
"\\advance\\ZoneDepth1\\relax\n"
|
|
Packit |
1c1d7e |
"\\Letcs{Mode\\number\\ZoneDepth}0\\relax\n"
|
|
Packit |
1c1d7e |
"\\Letcs{Present\\number\\ZoneDepth}0\\relax\n"
|
|
Packit |
1c1d7e |
"\\Cs{Test#1}\n"
|
|
Packit |
1c1d7e |
"\\expandafter\\if\\Cs{Present\\number\\ZoneDepth}1%\n"
|
|
Packit |
1c1d7e |
"\\advance\\ZoneDepth-1\\relax\n"
|
|
Packit |
1c1d7e |
"\\Letcs{Present\\number\\ZoneDepth}1\\relax\n"
|
|
Packit |
1c1d7e |
"\\expandafter\\if\\Cs{Mode\\number\\ZoneDepth}1%\n"
|
|
Packit |
1c1d7e |
"\\advance\\ZoneDepth1\\relax\n"
|
|
Packit |
1c1d7e |
"\\Letcs{Mode\\number\\ZoneDepth}1\\relax\n"
|
|
Packit |
1c1d7e |
"\\Cs{Emit#1}\n"
|
|
Packit |
1c1d7e |
"\\advance\\ZoneDepth-1\\relax\\fi\n"
|
|
Packit |
1c1d7e |
"\\advance\\ZoneDepth1\\relax\\fi\n"
|
|
Packit |
1c1d7e |
"\\advance\\ZoneDepth-1\\relax}}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\def\\Member#1#2{%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{Test#1}{\\Cs{field#1Detailed}\n"
|
|
Packit |
1c1d7e |
"\\IfEmpty{field#1DetailedDoc}\\else\\Letcs{Present#1}1\\fi}\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1}{\\Letcs{Present#1}0\\relax\n"
|
|
Packit |
1c1d7e |
"\\Cs{Test#1}\\if1\\Cs{Present#1}\\Letcs{Present\\number\\ZoneDepth}1\\relax\n"
|
|
Packit |
1c1d7e |
"\\if1\\Cs{Mode\\number\\ZoneDepth}#2\\fi\\fi}}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\def\\TypedefMemberList#1#2{%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1DetailedDoc}##1{\\vskip 5.5mm\\relax##1}%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1Name}##1{\\textbf{##1}}%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1See}##1{\\See{##1}}%\n"
|
|
Packit |
1c1d7e |
"%\n"
|
|
Packit |
1c1d7e |
"\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
|
|
Packit |
1c1d7e |
"\\Member{#1}{\\Frame{typedef \\Cs{field#1Type} \\Cs{field#1Name}}%\n"
|
|
Packit |
1c1d7e |
"\\Cs{field#1DetailedDoc}\\Cs{field#1See}\\vskip 5mm\\relax}}%\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\def\\VariableMemberList#1#2{%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1DetailedDoc}##1{\\vskip 5.5mm\\relax##1}%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1Name}##1{\\textbf{##1}}%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1See}##1{\\See{##1}}%\n"
|
|
Packit |
1c1d7e |
"%\n"
|
|
Packit |
1c1d7e |
"\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
|
|
Packit |
1c1d7e |
"\\Member{#1}{\\Frame{\\Cs{field#1Type}{} \\Cs{field#1Name}}%\n"
|
|
Packit |
1c1d7e |
"\\Cs{field#1DetailedDoc}\\Cs{field#1See}\\vskip 5mm\\relax}}%\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\def\\FunctionMemberList#1#2{%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1PDParamName}##1{\\textit{##1}}%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1PDParam}{\\Cs{field#1PDParamName}}%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1PDParamsSep}{, }%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1PDBlocksSep}{\\vskip 2mm\\relax}%\n"
|
|
Packit |
1c1d7e |
"%\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1PDBlocks}##1{%\n"
|
|
Packit |
1c1d7e |
"\\Heading{Parameters:}\\vskip 1.5mm\\relax\n"
|
|
Packit |
1c1d7e |
"\\DimenA0pt\\relax\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1PDBlock}{\\setbox\\BoxA\\hbox{\\Cs{field#1PDParams}}%\n"
|
|
Packit |
1c1d7e |
"\\ifdim\\DimenA<\\wd\\BoxA\\DimenA\\wd\\BoxA\\fi}%\n"
|
|
Packit |
1c1d7e |
"##1%\n"
|
|
Packit |
1c1d7e |
"\\advance\\DimenA3mm\\relax\n"
|
|
Packit |
1c1d7e |
"\\DimenB\\hsize\\advance\\DimenB-\\DimenA\\relax\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1PDBlock}{\\hbox to\\hsize{\\vtop{\\hsize\\DimenA\\relax\n"
|
|
Packit |
1c1d7e |
"\\Cs{field#1PDParams}}\\hfill\n"
|
|
Packit |
1c1d7e |
"\\vtop{\\hsize\\DimenB\\relax\\Cs{field#1PDDoc}}}}%\n"
|
|
Packit |
1c1d7e |
"##1}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1ParamName}##1{\\textit{##1}}\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1Param}{\\Cs{field#1ParamType}{} \\Cs{field#1ParamName}}\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1ParamsSep}{, }\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1Name}##1{\\textbf{##1}}\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1See}##1{\\See{##1}}\n"
|
|
Packit |
1c1d7e |
"\\Defcs{#1Return}##1{\\Heading{Returns: }##1}\n"
|
|
Packit |
1c1d7e |
"\\Defcs{field#1Title}{\\Frame{\\Cs{field#1Type}{} \\Cs{field#1Name}(\\Cs{field#1Params})}}%\n"
|
|
Packit |
1c1d7e |
"%\n"
|
|
Packit |
1c1d7e |
"\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
|
|
Packit |
1c1d7e |
"\\Member{#1}{%\n"
|
|
Packit |
1c1d7e |
"\\Cs{field#1Title}\\vskip 6mm\\relax\\Cs{field#1DetailedDoc}\n"
|
|
Packit |
1c1d7e |
"\\Cs{field#1Return}\\Cs{field#1PDBlocks}\\Cs{field#1See}\\vskip 5mm\\relax}}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\def\\FileDetailed{\\fieldFileDetailedDoc\\par}\n"
|
|
Packit |
1c1d7e |
"\\def\\ClassDetailed{\\fieldClassDetailedDoc\\par}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\def\\FileSubzones{\\fieldFileTypedefs\\fieldFileVariables\\fieldFileFunctions}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\def\\ClassSubzones{%\n"
|
|
Packit |
1c1d7e |
"\\fieldClassPublicTypedefs\\fieldClassPublicMembers\\fieldClassPublicMethods\n"
|
|
Packit |
1c1d7e |
"\\fieldClassProtectedTypedefs\\fieldClassProtectedMembers\\fieldClassProtectedMethods\n"
|
|
Packit |
1c1d7e |
"\\fieldClassPrivateTypedefs\\fieldClassPrivateMembers\\fieldClassPrivateMethods}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\Member{Page}{\\subsection{\\fieldPageName}\\fieldPageDetailedDoc}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\TypedefMemberList{FileTypedef}{Typedefs}\n"
|
|
Packit |
1c1d7e |
"\\VariableMemberList{FileVariable}{Variables}\n"
|
|
Packit |
1c1d7e |
"\\FunctionMemberList{FileFunction}{Functions}\n"
|
|
Packit |
1c1d7e |
"\\Zone{File}{\\FileSubzones}{\\subsection{\\fieldFileName}\\fieldFileDetailed\\FileSubzones}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\TypedefMemberList{ClassPublicTypedef}{Public Typedefs}\n"
|
|
Packit |
1c1d7e |
"\\TypedefMemberList{ClassProtectedTypedef}{Protected Typedefs}\n"
|
|
Packit |
1c1d7e |
"\\TypedefMemberList{ClassPrivateTypedef}{Private Typedefs}\n"
|
|
Packit |
1c1d7e |
"\\VariableMemberList{ClassPublicMember}{Public Members}\n"
|
|
Packit |
1c1d7e |
"\\VariableMemberList{ClassProtectedMember}{Protected Members}\n"
|
|
Packit |
1c1d7e |
"\\VariableMemberList{ClassPrivateMember}{Private Members}\n"
|
|
Packit |
1c1d7e |
"\\FunctionMemberList{ClassPublicMethod}{Public Methods}\n"
|
|
Packit |
1c1d7e |
"\\FunctionMemberList{ClassProtectedMethod}{Protected Methods}\n"
|
|
Packit |
1c1d7e |
"\\FunctionMemberList{ClassPrivateMethod}{Private Methods}\n"
|
|
Packit |
1c1d7e |
"\\Zone{Class}{\\ClassSubzones}{\\subsection{\\fieldClassName}\\fieldClassDetailed\\ClassSubzones}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\Zone{AllPages}{\\fieldPages}{\\section{Pages}\\fieldPages}\n"
|
|
Packit |
1c1d7e |
"\\Zone{AllFiles}{\\fieldFiles}{\\section{Files}\\fieldFiles}\n"
|
|
Packit |
1c1d7e |
"\\Zone{AllClasses}{\\fieldClasses}{\\section{Classes}\\fieldClasses}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\newlength{\\oldparskip}\n"
|
|
Packit |
1c1d7e |
"\\newlength{\\oldparindent}\n"
|
|
Packit |
1c1d7e |
"\\newlength{\\oldfboxrule}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\ZoneDepth0\\relax\n"
|
|
Packit |
1c1d7e |
"\\Letcs{Mode0}1\\relax\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\def\\EmitDoxyDocs{%\n"
|
|
Packit |
1c1d7e |
"\\setlength{\\oldparskip}{\\parskip}\n"
|
|
Packit |
1c1d7e |
"\\setlength{\\oldparindent}{\\parindent}\n"
|
|
Packit |
1c1d7e |
"\\setlength{\\oldfboxrule}{\\fboxrule}\n"
|
|
Packit |
1c1d7e |
"\\setlength{\\parskip}{0cm}\n"
|
|
Packit |
1c1d7e |
"\\setlength{\\parindent}{0cm}\n"
|
|
Packit |
1c1d7e |
"\\setlength{\\fboxrule}{1pt}\n"
|
|
Packit |
1c1d7e |
"\\AllPages\\AllFiles\\AllClasses\n"
|
|
Packit |
1c1d7e |
"\\setlength{\\parskip}{\\oldparskip}\n"
|
|
Packit |
1c1d7e |
"\\setlength{\\parindent}{\\oldparindent}\n"
|
|
Packit |
1c1d7e |
"\\setlength{\\fboxrule}{\\oldfboxrule}}\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool PerlModGenerator::generateDoxyLatexTex()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFile doxyLatexTex;
|
|
Packit |
1c1d7e |
if (!createOutputFile(doxyLatexTex, pathDoxyLatexTex))
|
|
Packit |
1c1d7e |
return false;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
FTextStream doxyLatexTexStream(&doxyLatexTex);
|
|
Packit |
1c1d7e |
doxyLatexTexStream <<
|
|
Packit |
1c1d7e |
"\\documentclass[a4paper,12pt]{article}\n"
|
|
Packit |
1c1d7e |
"\\usepackage[latin1]{inputenc}\n"
|
|
Packit |
1c1d7e |
"\\usepackage[none]{hyphenat}\n"
|
|
Packit |
1c1d7e |
"\\usepackage[T1]{fontenc}\n"
|
|
Packit |
1c1d7e |
"\\usepackage{hyperref}\n"
|
|
Packit |
1c1d7e |
"\\usepackage{times}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\input{doxyformat}\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\begin{document}\n"
|
|
Packit |
1c1d7e |
"\\input{" << pathDoxyDocsTex << "}\n"
|
|
Packit |
1c1d7e |
"\\sloppy\n"
|
|
Packit |
1c1d7e |
"\\EmitDoxyDocs\n"
|
|
Packit |
1c1d7e |
"\\end{document}\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
return true;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void PerlModGenerator::generate()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// + classes
|
|
Packit |
1c1d7e |
// + namespaces
|
|
Packit |
1c1d7e |
// + files
|
|
Packit |
1c1d7e |
// - packages
|
|
Packit |
1c1d7e |
// + groups
|
|
Packit |
1c1d7e |
// + related pages
|
|
Packit |
1c1d7e |
// - examples
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QDir perlModDir;
|
|
Packit |
1c1d7e |
if (!createOutputDir(perlModDir))
|
|
Packit |
1c1d7e |
return;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool perlmodLatex = Config_getBool(PERLMOD_LATEX);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString perlModAbsPath = perlModDir.absPath().utf8();
|
|
Packit |
1c1d7e |
pathDoxyDocsPM = perlModAbsPath + "/DoxyDocs.pm";
|
|
Packit |
1c1d7e |
pathDoxyStructurePM = perlModAbsPath + "/DoxyStructure.pm";
|
|
Packit |
1c1d7e |
pathMakefile = perlModAbsPath + "/Makefile";
|
|
Packit |
1c1d7e |
pathDoxyRules = perlModAbsPath + "/doxyrules.make";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (perlmodLatex) {
|
|
Packit |
1c1d7e |
pathDoxyStructureTex = perlModAbsPath + "/doxystructure.tex";
|
|
Packit |
1c1d7e |
pathDoxyFormatTex = perlModAbsPath + "/doxyformat.tex";
|
|
Packit |
1c1d7e |
pathDoxyLatexTex = perlModAbsPath + "/doxylatex.tex";
|
|
Packit |
1c1d7e |
pathDoxyLatexDVI = perlModAbsPath + "/doxylatex.dvi";
|
|
Packit |
1c1d7e |
pathDoxyLatexPDF = perlModAbsPath + "/doxylatex.pdf";
|
|
Packit |
1c1d7e |
pathDoxyDocsTex = perlModAbsPath + "/doxydocs.tex";
|
|
Packit |
1c1d7e |
pathDoxyLatexPL = perlModAbsPath + "/doxylatex.pl";
|
|
Packit |
1c1d7e |
pathDoxyLatexStructurePL = perlModAbsPath + "/doxylatex-structure.pl";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!(generatePerlModOutput()
|
|
Packit |
1c1d7e |
&& generateDoxyStructurePM()
|
|
Packit |
1c1d7e |
&& generateMakefile()
|
|
Packit |
1c1d7e |
&& generateDoxyRules()))
|
|
Packit |
1c1d7e |
return;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (perlmodLatex) {
|
|
Packit |
1c1d7e |
if (!(generateDoxyLatexStructurePL()
|
|
Packit |
1c1d7e |
&& generateDoxyLatexPL()
|
|
Packit |
1c1d7e |
&& generateDoxyLatexTex()
|
|
Packit |
1c1d7e |
&& generateDoxyFormatTex()))
|
|
Packit |
1c1d7e |
return;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void generatePerlMod()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
PerlModGenerator pmg(Config_getBool(PERLMOD_PRETTY));
|
|
Packit |
1c1d7e |
pmg.generate();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Local Variables:
|
|
Packit |
1c1d7e |
// c-basic-offset: 2
|
|
Packit |
1c1d7e |
// End:
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/* This elisp function for XEmacs makes Control-Z transform
|
|
Packit |
1c1d7e |
the text in the region into a valid C string.
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
(global-set-key '(control z) (lambda () (interactive)
|
|
Packit |
1c1d7e |
(save-excursion
|
|
Packit |
1c1d7e |
(if (< (mark) (point)) (exchange-point-and-mark))
|
|
Packit |
1c1d7e |
(let ((start (point)) (replacers
|
|
Packit |
1c1d7e |
'(("\\\\" "\\\\\\\\")
|
|
Packit |
1c1d7e |
("\"" "\\\\\"")
|
|
Packit |
1c1d7e |
("\t" "\\\\t")
|
|
Packit |
1c1d7e |
("^.*$" "\"\\&\\\\n\""))))
|
|
Packit |
1c1d7e |
(while replacers
|
|
Packit |
1c1d7e |
(while (re-search-forward (caar replacers) (mark) t)
|
|
Packit |
1c1d7e |
(replace-match (cadar replacers) t))
|
|
Packit |
1c1d7e |
(goto-char start)
|
|
Packit |
1c1d7e |
(setq replacers (cdr replacers)))))))
|
|
Packit |
1c1d7e |
*/
|