Commit 85870835 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.18-20020927

parent 047ff890
DOXYGEN Version 1.2.18
DOXYGEN Version 1.2.18-20020927
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (18 September 2002)
Dimitri van Heesch (27 September 2002)
DOXYGEN Version 1.2.18
DOXYGEN Version 1.2.18_20020927
Please read INSTALL for compilation instructions.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (18 September 2002)
Dimitri van Heesch (dimitri@stack.nl) (27 September 2002)
1.2.18
1.2.18-20020927
......@@ -266,11 +266,18 @@ void Wizard::saveAsFile()
void Wizard::runDoxygen()
{
saveFile();
QString s = "doxygen " + configFileName;
QString orgDir = QDir::currentDirPath();
QFileInfo fi(configFileName);
// cd to the config dir
QDir::setCurrent(fi.dirPath());
// run doxygen on the config file
QString s = "doxygen \"" + fi.fileName() + "\"";
// actually run the exe
system((const char*)s);
statusBar()->message("doxygen completed: "+ configFileName, messageTimeout );
hasChanged = FALSE;
refreshCaption();
QDir::setCurrent(orgDir);
}
......
......@@ -103,6 +103,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_full_path_names FULL_PATH_NAMES
\refitem cfg_generate_buglist GENERATE_BUGLIST
\refitem cfg_generate_chi GENERATE_CHI
\refitem cfg_generate_todolist GENERATE_DEPRECIATELIST
\refitem cfg_generate_html GENERATE_HTML
\refitem cfg_generate_htmlhelp GENERATE_HTMLHELP
\refitem cfg_generate_latex GENERATE_LATEX
......@@ -459,6 +460,14 @@ followed by the descriptions of the tags grouped by category.
documentation sections, marked by \ref cmdif "\\if" \<section-label\> ...
\ref cmdendif "\\endif" blocks.
\anchor cfg_generate_deprecatedlist
<dt>\c GENERATE_DEPRECATEDLIST <dd>
\addindex GENERATE_DEPRECATEDLIST
The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
disable (NO) the deprecated list. This list is created by
putting \ref cmddeprecated "\\deprecated"
commands in the documentation.
\anchor cfg_generate_todolist
<dt>\c GENERATE_TODOLIST <dd>
\addindex GENERATE_TODOLIST
......
......@@ -180,7 +180,8 @@ Thanks go to:
All language maintainers for providing translations into many languages.
<li>Erik Jan Lingen of <a href="http://www.habanera.nl/">Habanera</a>, Mark
Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton,
Dwight Browne, Andreas Fredriksson, and Karel Lindveld for donating money.
Dwight Browne, Andreas Fredriksson, Karel Lindveld, and Ivan Lee
for donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a>
organizer!
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.2.18
Version: 1.2.18_20020927
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
# Doxyfile 1.2.5-20010304
# Doxyfile 1.2.18
#---------------------------------------------------------------------------
# General configuration options
......@@ -10,35 +10,40 @@ OUTPUT_LANGUAGE = English
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH = $(PWD)/
INTERNAL_DOCS = NO
CLASS_DIAGRAMS = YES
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = NO
SHORT_NAMES = NO
HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = YES
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8
ENABLED_SECTIONS =
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ALIASES =
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
SHOW_USED_FILES = YES
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
......@@ -56,13 +61,23 @@ FILE_PATTERNS = *.h \
*.cpp \
*.doc
RECURSIVE = NO
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
......@@ -73,11 +88,14 @@ IGNORE_PREFIX = Q
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT =
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
......@@ -90,6 +108,8 @@ TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT =
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
......@@ -105,12 +125,24 @@ RTF_OUTPUT =
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT =
MAN_EXTENSION = .3
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = YES
XML_SCHEMA =
XML_DTD =
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
......@@ -122,23 +154,30 @@ INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE = ../qtools_docs/qtools.tag
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 2048
MAX_DOT_GRAPH_HEIGHT = 2048
GENERATE_LEGEND = YES
......
......@@ -790,9 +790,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
}
ol.endTextLink();
ol.popGeneratorState();
ol.disable(OutputGenerator::Man);
ol.newParagraph();
ol.enable(OutputGenerator::Man);
}
}
ol.writeSynopsis();
......
......@@ -175,6 +175,7 @@ CommandMap htmlTagMap[] =
{ "h1", HTML_H1 },
{ "h2", HTML_H2 },
{ "h3", HTML_H3 },
{ 0, 0 }
};
//----------------------------------------------------------------------------
......
......@@ -1458,13 +1458,6 @@ void Config::create()
"Set it to YES to include the internal documentation. \n",
FALSE
);
cb = addBool(
"STRIP_CODE_COMMENTS",
"Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct \n"
"doxygen to hide any special comment blocks from generated source code \n"
"fragments. Normal C and C++ comments will always remain visible. \n",
TRUE
);
cb = addBool(
"CASE_SENSE_NAMES",
"If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate \n"
......@@ -1784,6 +1777,13 @@ void Config::create()
"of functions and classes directly in the documentation. \n",
FALSE
);
cb = addBool(
"STRIP_CODE_COMMENTS",
"Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct \n"
"doxygen to hide any special comment blocks from generated source code \n"
"fragments. Normal C and C++ comments will always remain visible. \n",
TRUE
);
cb = addBool( "REFERENCED_BY_RELATION",
"If the REFERENCED_BY_RELATION tag is set to YES (the default) \n"
"then for each documented function all documented \n"
......
This diff is collapsed.
This diff is collapsed.
......@@ -19,8 +19,9 @@
#ifndef _DOCTOKENIZER_H
#define _DOCTOKENIZER_H
#include <qcstring.h>
#include <qstring.h>
#include <qlist.h>
#include "htmlattrib.h"
enum Tokens
{
......@@ -53,24 +54,16 @@ enum Tokens
RetVal_SwitchLang = 0x1000E
};
struct Option
{
QCString name;
QCString value;
};
struct TokenInfo
{
TokenInfo() { options.setAutoDelete(TRUE); }
// unknown token
char unknownChar;
// command token
QCString name;
QString name;
// command text (RCS tag)
QCString text;
QString text;
// comment blocks
......@@ -79,23 +72,23 @@ struct TokenInfo
int indent;
// sections
QCString sectionId;
QString sectionId;
// simple section
QCString simpleSectName;
QString simpleSectName;
// verbatim fragment
QCString verb;
QString verb;
// xrefitem
int id;
// html tag
QList<Option> options;
HtmlAttribList attribs;
bool endTag;
// whitespace
QCString chars;
QString chars;
};
// globals
......
......@@ -19,7 +19,7 @@
%{
#include <qfile.h>
#include <qcstring.h>
#include <qstring.h>
#include <qstack.h>
#include <qdict.h>
......@@ -36,7 +36,7 @@ static int g_commentState;
TokenInfo *g_token = 0;
static int g_inputPos = 0;
static const char *g_inputString;
static QCString g_fileName;
static QString g_fileName;
struct DocLexerContext
{
......@@ -122,69 +122,68 @@ static int computeIndent(const char *str,int length)
return indent;
}
/*! converts input string \a opt into a list of Options. Each
* option is a name, value pair. The result is stored in g_token->options
/*! converts input string \a opt into a list of Html Attributes. Each
* attribute is a name, value pair. The result is stored in g_token->attribs
*/
static void parseOptions(const QCString &opt)
static void parseHtmlAttribs(const char *att)
{
//printf("parseOptions(%s)\n",opt.data());
QCString options=opt;
g_token->options.clear();
int len = options.length();
//printf("parseHtmlAttribs(%s)\n",opt.data());
QCString attribs=att;
int len = attribs.length();
char c;
int i=0,startName,endName,startOption,endOption;
int i=0,startName,endName,startAttrib,endAttrib;
while (i<len)
{
c=options.at(i);
c=attribs.at(i);
// skip spaces
while (i<len && c==' ') { c=options.at(++i); }
while (i<len && c==' ') { c=attribs.at(++i); }
startName=i;
// search for end of name
while (i<len && c!=' ' && c!='=') { c=options.at(++i); }
while (i<len && c!=' ' && c!='=') { c=attribs.at(++i); }
endName=i;
Option *opt = new Option;
opt->name = options.mid(startName,endName-startName).lower();
HtmlAttrib opt;
opt.name = attribs.mid(startName,endName-startName).lower();
// skip spaces
while (i<len && c==' ') { c=options.at(++i); }
if (options.at(i)=='=') // option has value
while (i<len && c==' ') { c=attribs.at(++i); }
if (attribs.at(i)=='=') // option has value
{
i++;
// skip spaces
while (i<len && c==' ') { c=options.at(++i); }
if (options.at(i)=='\'') // option '...'
while (i<len && c==' ') { c=attribs.at(++i); }
if (attribs.at(i)=='\'') // option '...'
{
i++;
startOption=i;
startAttrib=i;
// search for matching quote
while (i<len && c!='\'') { c=options.at(++i); }
endOption=i;
while (i<len && c!='\'') { c=attribs.at(++i); }
endAttrib=i;
i++;
}
else if (options.at(i)=='"') // option "..."
else if (attribs.at(i)=='"') // option "..."
{
i++;
startOption=i;
startAttrib=i;
// search for matching quote
while (i<len && c!='"') { c=options.at(++i); }
endOption=i;
while (i<len && c!='"') { c=attribs.at(++i); }
endAttrib=i;
i++;
}
else // value without any quotes
{
startOption=i;
startAttrib=i;
// search for separator
while (i<len && c!=' ') { c=options.at(++i); }
endOption=i;
while (i<len && c!=' ') { c=attribs.at(++i); }
endAttrib=i;
i++;
}
opt->value = options.mid(startOption,endOption-startOption);
opt.value = attribs.mid(startAttrib,endAttrib-startAttrib);
}
else // start next option
{
}
//printf("=====> Adding option name=<%s> value=<%s>\n",
// opt->name.data(),opt->value.data());
g_token->options.append(opt);
g_token->attribs.append(&opt);
}
}
......@@ -241,7 +240,7 @@ WORD1 [^ \t\n\r\\@<>&$#,.]+
WORD2 "."|","
WORD1NQ [^ \t\n\r\\@<>&$#,."]+
WORD2NQ "."|","
HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
HTMLTAG "<"(("/")?){ID}({WS}+{ATTRIB})*">"
%option noyywrap
%option yylineno
......@@ -269,14 +268,14 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
%%
<St_Para>\r /* skip carriage return */
<St_Para>^{LISTITEM} { /* list item */
QCString text=yytext;
QString text=yytext;
int dashPos = text.findRev('-');
g_token->isEnumList = text.at(dashPos+1)=='#';
g_token->indent = computeIndent(yytext,dashPos);
return TK_LISTITEM;
}
<St_Para>{BLANK}*\n{LISTITEM} { /* list item on next line */
QCString text=yytext;
QString text=yytext;
text=text.right(text.length()-text.find('\n')-1);
int dashPos = text.findRev('-');
g_token->isEnumList = text.at(dashPos+1)=='#';
......@@ -284,12 +283,12 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
return TK_LISTITEM;
}
<St_Para>^{ENDLIST} { /* end list */
int dotPos = QCString(yytext).findRev('.');
int dotPos = QString(yytext).findRev('.');
g_token->indent = computeIndent(yytext,dotPos);
return TK_ENDLIST;
}
<St_Para>{BLANK}*\n{ENDLIST} { /* end list on next line */
QCString text=yytext;
QString text=yytext;
text=text.right(text.length()-text.find('\n')-1);
int dotPos = text.findRev('.');
g_token->indent = computeIndent(text,dotPos);
......@@ -302,7 +301,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
<St_Para>{SPCMD3} {
g_token->name = "form";
bool ok;
g_token->id = QCString(yytext).right(yyleng-6).toInt(&ok);
g_token->id = QString(yytext).right(yyleng-6).toInt(&ok);
ASSERT(ok);
return TK_COMMAND;
}
......@@ -320,7 +319,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
return TK_URL;
}
<St_Para>"$"{ID}":"[^\n$]+"$" { /* RCS tag */
QCString tagName(yytext+1);
QString tagName(yytext+1);
int i=tagName.find(':');
g_token->name = tagName.left(i);
g_token->text = tagName.mid(i+1,tagName.length()-i-2);
......@@ -334,13 +333,14 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
}
<St_Para>{HTMLTAG} { /* html tag */
g_token->name = yytext;
g_token->attribs.clear();
int startNamePos=1;
if (g_token->name.at(1)=='/') startNamePos++;
int optSep = g_token->name.find(' ');
if (optSep!=-1) // tag has one or more options
int attSep = g_token->name.find(' ');
if (attSep!=-1) // tag has one or more options
{
parseOptions(g_token->name.mid(optSep+1,g_token->name.length()-optSep-2));
g_token->name=g_token->name.mid(startNamePos,optSep-1).lower();
parseHtmlAttribs(g_token->name.mid(attSep+1,g_token->name.length()-attSep-2));
g_token->name=g_token->name.mid(startNamePos,attSep-1).lower();
}
else // tag without options, strip brackets
{
......@@ -539,7 +539,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
return 0;
}
<St_XRefItem>[0-9]+\n {
QCString numStr=yytext;
QString numStr=yytext;
numStr=numStr.left(yyleng-1);
g_token->id=numStr.toInt();
return RetVal_OK;
......@@ -567,7 +567,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
return TK_WORD;
}
<St_File>"\""[^\n\"]+"\"" {
QCString text=yytext;
QString text=yytext;
g_token->name = text.mid(1,text.length()-2);
return TK_WORD;
}
......@@ -615,25 +615,25 @@ void doctokenizerYYsetStateTitle()
void doctokenizerYYsetStateCode()
{
g_token->verb.resize(0);
g_token->verb="";
BEGIN(St_Code);
}
void doctokenizerYYsetStateHtmlOnly()
{
g_token->verb.resize(0);
g_token->verb="";
BEGIN(St_HtmlOnly);
}
void doctokenizerYYsetStateLatexOnly()
{
g_token->verb.resize(0);
g_token->verb="";
BEGIN(St_LatexOnly);
}
void doctokenizerYYsetStateVerbatim()
{
g_token->verb.resize(0);
g_token->verb="";
BEGIN(St_Verbatim);
}
......
......@@ -19,6 +19,7 @@
#ifndef _DOCVISITOR_H
#define _DOCVISITOR_H
// forward declarations
class DocWord;
class DocWhiteSpace;
class DocAutoList;
......@@ -73,7 +74,9 @@ class DocCopy;
class DocVisitor
{
public:
/*! @name Visitor functions for leaf nodes */
/*! @name Visitor functions for leaf nodes
* @{
*/
virtual void visit(DocWord *) = 0;
virtual void visit(DocWhiteSpace *) = 0;
virtual void visit(DocSymbol *) = 0;
......@@ -88,8 +91,11 @@ class DocVisitor
virtual void visit(DocFormula *) = 0;
virtual void visit(DocLinkedWord *) = 0;
virtual void visit(DocIndexEntry *) = 0;
/*! @} */
/*! @name Visitor functions for internal nodes */
/*! @name Visitor functions for internal nodes
* @{
*/
virtual void visitPre(DocAutoList *) = 0;
virtual void visitPost(DocAutoList *) = 0;
virtual void visitPre(DocAutoListItem *) = 0;
......@@ -158,6 +164,7 @@ class DocVisitor
virtual void visitPost(DocInternalRef *) = 0;
virtual void visitPre(DocCopy *) = 0;
virtual void visitPost(DocCopy *) = 0;
/*! @} */
};
#endif
......@@ -1899,7 +1899,7 @@ static void buildFunctionList(Entry *root)
{
Debug::print(Debug::Functions,0,
"FUNCTION_SEC:\n"
" `%s' `%s'::`%s' `%s' relates=`%s' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d memSpec=%d proto=%d\n",
" `%s' `%s'::`%s' `%s' relates=`%s' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d memSpec=%d proto=%d docFile=%s\n",
root->type.data(),
root->parent->name.data(),
root->name.data(),
......@@ -1913,7 +1913,8 @@ static void buildFunctionList(Entry *root)
//root->mtArgList ? (int)root->mtArgList->count() : -1,
root->mGrpId,
root->memSpec,
root->proto
root->proto,
root->docFile.data()
);
bool isFriend=root->type.find("friend ")!=-1;
......
......@@ -186,6 +186,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if (Config_getBool("DETAILS_AT_TOP"))
{
writeDetailedDocumentation(ol);
ol.newParagraph();
}
else if (briefDescription())
{
......
......@@ -392,6 +392,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
if (Config_getBool("DETAILS_AT_TOP"))
{
writeDetailedDocumentation(ol);
ol.newParagraph();
}
else if (!briefDescription().isEmpty())
{
......
/******************************************************************************
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
*/
#ifndef _HTMLATTRIB_H
#define _HTMLATTRIB_H
/*! A Html option. A name, value pair */
struct HtmlAttrib
{
QString name;
QString value;
};
/*! @brief A list of Html attributes.
*
* The Html attributes are deeply copied into the list.
*/
class HtmlAttribList : public QList<HtmlAttrib>
{
public:
HtmlAttribList() : QList<HtmlAttrib>() { setAutoDelete(TRUE); }
~HtmlAttribList() { clear(); }
HtmlAttribList(const HtmlAttribList &l) : QList<HtmlAttrib>()
{ operator=(l); }
HtmlAttribList &operator=(const HtmlAttribList &l)
{ clear(); QList<HtmlAttrib>::operator=(l); return *this; }
private:
QCollection::Item newItem( QCollection::Item d )
{ return (QCollection::Item)new HtmlAttrib(*(HtmlAttrib *)d); }
void deleteItem(QCollection::Item d)
{ delete (HtmlAttrib *)d; }
};
/*! @brief Html attribute list iterator */
class HtmlAttribListIterator : public QListIterator<HtmlAttrib>
{
public:
HtmlAttribListIterator(const HtmlAttribList &l) : QListIterator<HtmlAttrib>(l) {}
};
#endif
......@@ -25,6 +25,24 @@
#include "dot.h"
#include "message.h"
static QString htmlAttribsToString(const HtmlAttribList &attribs)
{
QString result;
HtmlAttribListIterator li(attribs);
HtmlAttrib *att;
for (li.toFirst();(att=li.current());++li)
{
printf("Found attion name=`%s' value=`%s'\n",
att->name.data(),att->value.data());
result+=" ";
result+=att->name;
if (!att->value.isEmpty()) result+="=\""+att->value+"\"";
}
return result;
}
//-------------------------------------------------------------------------
HtmlDocVisitor::HtmlDocVisitor(QTextStream &t,BaseCodeDocInterface &ci)
: m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE)
{
......@@ -147,7 +165,7 @@ void HtmlDocVisitor::visit(DocVerbatim *s)
{
case DocVerbatim::Code: // fall though
m_t << "<div class=\"fragment\"><pre>";
parseCode(m_ci,s->context(),s->text(),FALSE,0);
parseCode(m_ci,s->context(),s->text().latin1(),FALSE,0);
m_t << "</pre></div>";
break;
case DocVerbatim::Verbatim:
......@@ -177,7 +195,7 @@ void HtmlDocVisitor::visit(DocInclude *inc)
{
case DocInclude::Include:
m_t << "<div class=\"fragment\"><pre>";
parseCode(m_ci,inc->context(),inc->text(),FALSE,0);
parseCode(m_ci,inc->context(),inc->text().latin1(),FALSE,0);
m_t << "</pre></div>";
break;
case DocInclude::DontInclude:
......@@ -204,7 +222,7 @@ void HtmlDocVisitor::visit(DocIncOperator *op)
}
if (op->type()!=DocIncOperator::Skip)
{
parseCode(m_ci,op->context(),op->text(),FALSE,0);
parseCode(m_ci,op->context(),op->text().latin1(),FALSE,0);
}
if (op->isLast())
{
......@@ -395,9 +413,9 @@ void HtmlDocVisitor::visitPost(DocSection *)
void HtmlDocVisitor::visitPre(DocHtmlList *s)
{
if (s->type()==DocHtmlList::Ordered)
m_t << "<ol>\n";
m_t << "<ol" << htmlAttribsToString(s->attribs()) << ">\n";
else
m_t << "<ul>\n";
m_t << "<ul" << htmlAttribsToString(s->attribs()) << ">\n";
}
void HtmlDocVisitor::visitPost(DocHtmlList *s)
......@@ -408,9 +426,9 @@ void HtmlDocVisitor::visitPost(DocHtmlList *s)
m_t << "</ul>\n";
}
void HtmlDocVisitor::visitPre(DocHtmlListItem *)
void HtmlDocVisitor::visitPre(DocHtmlListItem *i)
{
m_t << "<li>\n";
m_t << "<li" << htmlAttribsToString(i->attribs()) << ">\n";
}
void HtmlDocVisitor::visitPost(DocHtmlListItem *)
......@@ -418,9 +436,9 @@ void HtmlDocVisitor::visitPost(DocHtmlListItem *)
m_t << "</li>\n";
}
void HtmlDocVisitor::visitPre(DocHtmlPre *)
void HtmlDocVisitor::visitPre(DocHtmlPre *p)
{
m_t << "<pre>\n";
m_t << "<pre" << htmlAttribsToString(p->attribs()) << ">\n";
m_insidePre=TRUE;
}
......@@ -430,9 +448,9 @@ void HtmlDocVisitor::visitPost(DocHtmlPre *)
m_t << "</pre>\n";
}
void HtmlDocVisitor::visitPre(DocHtmlDescList *)
void HtmlDocVisitor::visitPre(DocHtmlDescList *dl)
{
m_t << "<dl>\n";
m_t << "<dl" << htmlAttribsToString(dl->attribs()) << ">\n";
}
void HtmlDocVisitor::visitPost(DocHtmlDescList *)
......@@ -440,9 +458,9 @@ void HtmlDocVisitor::visitPost(DocHtmlDescList *)
m_t << "</dl>\n";
}
void HtmlDocVisitor::visitPre(DocHtmlDescTitle *)
void HtmlDocVisitor::visitPre(DocHtmlDescTitle *dt)
{
m_t << "<dt>";
m_t << "<dt" << htmlAttribsToString(dt->attribs()) << ">";
}
void HtmlDocVisitor::visitPost(DocHtmlDescTitle *)
......@@ -450,9 +468,9 @@ void HtmlDocVisitor::visitPost(DocHtmlDescTitle *)
m_t << "</dt>\n";
}
void HtmlDocVisitor::visitPre(DocHtmlDescData *)
void HtmlDocVisitor::visitPre(DocHtmlDescData *dd)
{
m_t << "<dd>";
m_t << "<dd" << htmlAttribsToString(dd->attribs()) << ">";
}
void HtmlDocVisitor::visitPost(DocHtmlDescData *)
......@@ -460,9 +478,25 @@ void HtmlDocVisitor::visitPost(DocHtmlDescData *)
m_t << "</dd>\n";
}
void HtmlDocVisitor::visitPre(DocHtmlTable *)
void HtmlDocVisitor::visitPre(DocHtmlTable *t)
{
m_t << "<table border=\"1\" cellspacing=\"3\" cellpadding=\"3\">\n";
bool hasBorder = FALSE;
bool hasCellSpacing = FALSE;
bool hasCellPadding = FALSE;
HtmlAttribListIterator li(t->attribs());
HtmlAttrib *att;
for (li.toFirst();(att=li.current());++li)
{
if (att->name=="border") hasBorder=TRUE;
else if (att->name=="cellspacing") hasCellSpacing=TRUE;
else if (att->name=="cellpadding") hasCellPadding=TRUE;
}
m_t << "<table" << htmlAttribsToString(t->attribs());
if (!hasBorder) m_t << " border=\"1\"";
if (!hasCellSpacing) m_t << " cellspacing=\"3\"";
if (!hasCellPadding) m_t << " cellpadding=\"3\"";
m_t << ">\n";
}
void HtmlDocVisitor::visitPost(DocHtmlTable *)
......@@ -470,9 +504,9 @@ void HtmlDocVisitor::visitPost(DocHtmlTable *)
m_t << "</table>\n";
}
void HtmlDocVisitor::visitPre(DocHtmlRow *)
void HtmlDocVisitor::visitPre(DocHtmlRow *tr)
{
m_t << "<tr>\n";
m_t << "<tr" << htmlAttribsToString(tr->attribs()) << ">\n";
}
void HtmlDocVisitor::visitPost(DocHtmlRow *)
......@@ -482,7 +516,14 @@ void HtmlDocVisitor::visitPost(DocHtmlRow *)
void HtmlDocVisitor::visitPre(DocHtmlCell *c)
{
if (c->isHeading()) m_t << "<th>"; else m_t << "<td>";
if (c->isHeading())
{
m_t << "<th" << htmlAttribsToString(c->attribs()) << ">";
}
else
{
m_t << "<td" << htmlAttribsToString(c->attribs()) << ">";
}
}
void HtmlDocVisitor::visitPost(DocHtmlCell *c)
......@@ -490,9 +531,18 @@ void HtmlDocVisitor::visitPost(DocHtmlCell *c)
if (c->isHeading()) m_t << "</th>"; else m_t << "</td>";
}
void HtmlDocVisitor::visitPre(DocHtmlCaption *)
void HtmlDocVisitor::visitPre(DocHtmlCaption *c)
{
m_t << "<caption align=\"bottom\">";
bool hasAlign = FALSE;
HtmlAttribListIterator li(c->attribs());
HtmlAttrib *att;
for (li.toFirst();(att=li.current());++li)
{
if (att->name=="align") hasAlign=TRUE;
}
m_t << "<caption" << htmlAttribsToString(c->attribs());
if (!hasAlign) m_t << " align=\"bottom\"";
m_t << ">";
}
void HtmlDocVisitor::visitPost(DocHtmlCaption *)
......@@ -523,7 +573,8 @@ void HtmlDocVisitor::visitPost(DocHRef *)
void HtmlDocVisitor::visitPre(DocHtmlHeader *header)
{
m_t << "<h" << header->level() << ">";
m_t << "<h" << header->level()
<< htmlAttribsToString(header->attribs()) << ">";
}
void HtmlDocVisitor::visitPost(DocHtmlHeader *header)
......@@ -535,7 +586,7 @@ void HtmlDocVisitor::visitPre(DocImage *img)
{
if (img->type()==DocImage::Html)
{
QCString baseName=img->name();
QString baseName=img->name();
int i;
if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1)
{
......@@ -573,13 +624,13 @@ void HtmlDocVisitor::visitPost(DocImage *img)
void HtmlDocVisitor::visitPre(DocDotFile *df)
{
QCString baseName=df->file();
QString baseName=df->file();
int i;
if ((i=baseName.findRev('/'))!=-1)
{
baseName=baseName.right(baseName.length()-i-1);
}
QCString outDir = Config_getString("HTML_OUTPUT");
QString outDir = Config_getString("HTML_OUTPUT");
writeDotGraphFromFile(df->file(),outDir,baseName,BITMAP);
m_t << "<div align=\"center\">" << endl;
m_t << "<img src=\"" << baseName << "."
......@@ -624,8 +675,9 @@ void HtmlDocVisitor::visitPost(DocRef *)
void HtmlDocVisitor::visitPre(DocSecRefItem *ref)
{
QCString refName=ref->file();
if (refName.right(Doxygen::htmlFileExtension.length())!=Doxygen::htmlFileExtension)
QString refName=ref->file();
if (refName.right(Doxygen::htmlFileExtension.length())!=
QString(Doxygen::htmlFileExtension))
{
refName+=Doxygen::htmlFileExtension;
}
......@@ -752,7 +804,7 @@ void HtmlDocVisitor::filter(const char *str)
}
}
void HtmlDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor)
void HtmlDocVisitor::startLink(const QString &ref,const QString &file,const QString &anchor)
{
QCString *dest;
if (!ref.isEmpty()) // link to entity imported via tag file
......
......@@ -23,7 +23,7 @@
class QTextStream;
class BaseCodeDocInterface;
class QCString;
class QString;
/*! @brief Concrete visitor implementation for HTML output. */
class HtmlDocVisitor : public DocVisitor
......@@ -130,8 +130,8 @@ class HtmlDocVisitor : public DocVisitor
//--------------------------------------
void filter(const char *str);
void startLink(const QCString &ref,const QCString &file,
const QCString &anchor);
void startLink(const QString &ref,const QString &file,
const QString &anchor);
void endLink();
//--------------------------------------
......
......@@ -336,8 +336,11 @@ void HtmlGenerator::writeStyleInfo(int part)
}
else
{
// convert style sheet to string
QCString fileStr = fileToString(cssname);
// write the string into the output dir
startPlainFile(cssfi.fileName());
t << fileToString(cssname);
t << fileStr;
endPlainFile();
}
}
......
......@@ -26,9 +26,9 @@
#include "util.h"
#include "message.h"
static QCString escapeLabelName(const char *s)
static QString escapeLabelName(const char *s)
{
QCString result;
QString result;
const char *p=s;
char c;
while ((c=*p++))
......@@ -44,9 +44,9 @@ static QCString escapeLabelName(const char *s)
return result;
}
QCString LatexDocVisitor::escapeMakeIndexChars(const char *s)
QString LatexDocVisitor::escapeMakeIndexChars(const char *s)
{
QCString result;
QString result;
const char *p=s;
char str[2]; str[1]=0;
char c;
......@@ -211,7 +211,7 @@ void LatexDocVisitor::visit(DocVerbatim *s)
{
case DocVerbatim::Code: // fall though
m_t << "\n\n\\footnotesize\\begin{verbatim}";
parseCode(m_ci,s->context(),s->text(),FALSE,0);
parseCode(m_ci,s->context(),s->text().latin1(),FALSE,0);
m_t << "\\end{verbatim}\\normalsize" << endl;
break;
case DocVerbatim::Verbatim:
......@@ -246,7 +246,7 @@ void LatexDocVisitor::visit(DocInclude *inc)
{
case DocInclude::Include:
m_t << "\n\n\\footnotesize\\begin{verbatim}";
parseCode(m_ci,inc->context(),inc->text(),FALSE,0);
parseCode(m_ci,inc->context(),inc->text().latin1(),FALSE,0);
m_t << "\\end{verbatim}\\normalsize" << endl;
break;
case DocInclude::DontInclude:
......@@ -272,7 +272,7 @@ void LatexDocVisitor::visit(DocIncOperator *op)
}
if (op->type()!=DocIncOperator::Skip)
{
parseCode(m_ci,op->context(),op->text(),FALSE,0);
parseCode(m_ci,op->context(),op->text().latin1(),FALSE,0);
}
if (op->isLast())
{
......@@ -648,7 +648,7 @@ void LatexDocVisitor::visitPre(DocImage *img)
{
m_t << "\\mbox{";
}
QCString gfxName = img->name();
QString gfxName = img->name();
if (gfxName.right(4)==".eps" || gfxName.right(4)==".pdf")
{
gfxName=gfxName.left(gfxName.length()-4);
......@@ -693,7 +693,7 @@ void LatexDocVisitor::visitPost(DocImage *img)
void LatexDocVisitor::visitPre(DocDotFile *df)
{
QCString baseName=df->file();
QString baseName=df->file();
int i;
if ((i=baseName.findRev('/'))!=-1)
{
......@@ -703,7 +703,7 @@ void LatexDocVisitor::visitPre(DocDotFile *df)
{
baseName=baseName.left(baseName.length()-4);
}
QCString outDir = Config_getString("LATEX_OUTPUT");
QString outDir = Config_getString("LATEX_OUTPUT");
writeDotGraphFromFile(df->file(),outDir,baseName,EPS);
if (df->hasCaption())
{
......@@ -883,7 +883,7 @@ void LatexDocVisitor::filter(const char *str)
filterLatexString(m_t,str,FALSE,m_insidePre);
}
void LatexDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor)
void LatexDocVisitor::startLink(const QString &ref,const QString &file,const QString &anchor)
{
if (ref.isEmpty() && Config_getBool("PDF_HYPERLINKS"))
{
......
......@@ -23,7 +23,7 @@
class QTextStream;
class BaseCodeDocInterface;
class QCString;
class QString;
/*! @brief Concrete visitor implementation for LaTeX output. */
class LatexDocVisitor : public DocVisitor
......@@ -130,10 +130,10 @@ class LatexDocVisitor : public DocVisitor
//--------------------------------------
void filter(const char *str);
void startLink(const QCString &ref,const QCString &file,
const QCString &anchor);
void startLink(const QString &ref,const QString &file,
const QString &anchor);
void endLink();
QCString escapeMakeIndexChars(const char *s);
QString escapeMakeIndexChars(const char *s);
//--------------------------------------
// state variables
......
......@@ -45,6 +45,7 @@ HEADERS = bufstr.h \
formula.h \
ftvhelp.h \
groupdef.h \
htmlattrib.h \
htmldocvisitor.h \
htmlgen.h \
htmlhelp.h \
......@@ -55,6 +56,7 @@ HEADERS = bufstr.h \
latexdocvisitor.h \
latexgen.h \
logos.h \
mandocvisitor.h \
mangen.h \
memberdef.h \
membergroup.h \
......@@ -152,6 +154,7 @@ SOURCES = ce_lex.cpp \
latexdocvisitor.cpp \
latexgen.cpp \
logos.cpp \
mandocvisitor.cpp \
mangen.cpp \
memberdef.cpp \
membergroup.cpp \
......
This diff is collapsed.
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef _MANDOCVISITOR_H
#define _MANDOCVISITOR_H
#include "docvisitor.h"
class QTextStream;
class BaseCodeDocInterface;
class QString;
/*! @brief Concrete visitor implementation for LaTeX output. */
class ManDocVisitor : public DocVisitor
{
public:
ManDocVisitor(QTextStream &t,BaseCodeDocInterface &ci);
//--------------------------------------
// visitor functions for leaf nodes
//--------------------------------------
void visit(DocWord *);
void visit(DocLinkedWord *);
void visit(DocWhiteSpace *);
void visit(DocSymbol *);
void visit(DocURL *);
void visit(DocLineBreak *);
void visit(DocHorRuler *);
void visit(DocStyleChange *);
void visit(DocVerbatim *);
void visit(DocAnchor *);
void visit(DocInclude *);
void visit(DocIncOperator *);
void visit(DocFormula *);
void visit(DocIndexEntry *);
//--------------------------------------
// visitor functions for compound nodes
//--------------------------------------
void visitPre(DocAutoList *);
void visitPost(DocAutoList *);
void visitPre(DocAutoListItem *);
void visitPost(DocAutoListItem *);
void visitPre(DocPara *);
void visitPost(DocPara *);
void visitPre(DocRoot *);
void visitPost(DocRoot *);
void visitPre(DocSimpleSect *);
void visitPost(DocSimpleSect *);
void visitPre(DocTitle *);
void visitPost(DocTitle *);
void visitPre(DocSimpleList *);
void visitPost(DocSimpleList *);
void visitPre(DocSimpleListItem *);
void visitPost(DocSimpleListItem *);
void visitPre(DocSection *s);
void visitPost(DocSection *);
void visitPre(DocHtmlList *s);
void visitPost(DocHtmlList *s);
void visitPre(DocHtmlListItem *);
void visitPost(DocHtmlListItem *);
void visitPre(DocHtmlPre *);
void visitPost(DocHtmlPre *);
void visitPre(DocHtmlDescList *);
void visitPost(DocHtmlDescList *);
void visitPre(DocHtmlDescTitle *);
void visitPost(DocHtmlDescTitle *);
void visitPre(DocHtmlDescData *);
void visitPost(DocHtmlDescData *);
void visitPre(DocHtmlTable *t);
void visitPost(DocHtmlTable *t);
void visitPre(DocHtmlCaption *);
void visitPost(DocHtmlCaption *);
void visitPre(DocHtmlRow *);
void visitPost(DocHtmlRow *) ;
void visitPre(DocHtmlCell *);
void visitPost(DocHtmlCell *);
void visitPre(DocInternal *);
void visitPost(DocInternal *);
void visitPre(DocHRef *);
void visitPost(DocHRef *);
void visitPre(DocHtmlHeader *);
void visitPost(DocHtmlHeader *) ;
void visitPre(DocImage *);
void visitPost(DocImage *);
void visitPre(DocDotFile *);
void visitPost(DocDotFile *);
void visitPre(DocLink *lnk);
void visitPost(DocLink *);
void visitPre(DocRef *ref);
void visitPost(DocRef *);
void visitPre(DocSecRefItem *);
void visitPost(DocSecRefItem *);
void visitPre(DocSecRefList *);
void visitPost(DocSecRefList *);
void visitPre(DocLanguage *);
void visitPost(DocLanguage *);
void visitPre(DocParamSect *);
void visitPost(DocParamSect *);
void visitPre(DocParamList *);
void visitPost(DocParamList *);
void visitPre(DocXRefItem *);
void visitPost(DocXRefItem *);
void visitPre(DocInternalRef *);
void visitPost(DocInternalRef *);
void visitPre(DocCopy *);
void visitPost(DocCopy *);
private:
//--------------------------------------
// helper functions
//--------------------------------------
void filter(const char *str);
//--------------------------------------
// state variables
//--------------------------------------
QTextStream &m_t;
BaseCodeDocInterface &m_ci;
bool m_insidePre;
bool m_hide;
};
#endif
......@@ -29,6 +29,7 @@
#include "doxygen.h"
#include <string.h>
#include "docparser.h"
#include "mandocvisitor.h"
static QCString getExtension()
{
......@@ -613,7 +614,10 @@ void ManGenerator::endParamList()
{
}
void ManGenerator::printDoc(DocNode *)
void ManGenerator::printDoc(DocNode *n)
{
ManDocVisitor *visitor = new ManDocVisitor(t,*this);
n->accept(visitor);
delete visitor;
}
......@@ -554,8 +554,8 @@ bool MemberDef::isBriefSectionVisible() const
{
//printf("Member %s grpId=%d docs=%s file=%s args=%s\n",
// name().data(),
// grpId,grpId==-1?"<none>":Doxygen::memberDocDict[grpId]->data(),
// getFileDef()->name().data(),
// 0,"", //grpId,grpId==-1?"<none>":Doxygen::memberDocDict[grpId]->data(),
// "", //getFileDef()->name().data(),
// argsString());
bool hasDocs = hasDocumentation() ||
// part of a documented member group
......@@ -600,8 +600,10 @@ bool MemberDef::isBriefSectionVisible() const
);
// hide member if it overrides a member in a superclass and has no
// documentation
bool visibleIfDocVirtual = (reimplements() || hasDocs);
// documentation of its own
//bool visibleIfDocVirtual = !reimplements() ||
// !Config_getBool("INHERIT_DOCS") ||
// hasDocs;
// true if this member is a constructor or destructor
bool cOrDTor = isConstructor() || isDestructor();
......@@ -624,7 +626,7 @@ bool MemberDef::isBriefSectionVisible() const
bool visible = visibleIfStatic && visibleIfDocumented &&
visibleIfEnabled && visibleIfPrivate &&
visibleIfDocVirtual && visibleIfNotDefaultCDTor &&
/*visibleIfDocVirtual &&*/ visibleIfNotDefaultCDTor &&
visibleIfFriendCompound &&
!annScope;
//printf("MemberDef::isBriefSectionVisible() %d\n",visible);
......@@ -1539,6 +1541,10 @@ void MemberDef::warnIfUndocumented()
else
t="file", d=fd;
//printf("warnIfUndoc: d->isLinkable()=%d isLinkable()=%d "
// "isDocumentedFriendClass()=%d name()=%s prot=%d\n",
// d->isLinkable(),isLinkable(),isDocumentedFriendClass(),
// name().data(),prot);
if (d && d->isLinkable() && !isLinkable() &&
!isDocumentedFriendClass() &&
name().find('@')==-1 &&
......
......@@ -248,6 +248,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
if (Config_getBool("DETAILS_AT_TOP"))
{
writeDetailedDocumentation(ol);
ol.newParagraph();
}
else if (!briefDescription().isEmpty())
{
......
......@@ -32,9 +32,9 @@ RTFDocVisitor::RTFDocVisitor(QTextStream &t,BaseCodeDocInterface &ci)
{
}
QCString RTFDocVisitor::getStyle(const char *name)
QString RTFDocVisitor::getStyle(const char *name)
{
QCString n;
QString n;
n.sprintf("%s%d",name,m_indentLevel);
StyleData *sd = rtf_Style[n];
ASSERT(sd!=0);
......@@ -271,7 +271,7 @@ void RTFDocVisitor::visit(DocVerbatim *s)
m_t << "{" << endl;
m_t << "\\par" << endl;
m_t << rtf_Style_Reset << getStyle("CodeExample");
parseCode(m_ci,s->context(),s->text(),FALSE,0);
parseCode(m_ci,s->context(),s->text().latin1(),FALSE,0);
m_t << "\\par" << endl;
m_t << "}" << endl;
break;
......@@ -295,7 +295,7 @@ void RTFDocVisitor::visit(DocVerbatim *s)
void RTFDocVisitor::visit(DocAnchor *anc)
{
if (m_hide) return;
QCString anchor;
QString anchor;
if (!anc->file().isEmpty())
{
anchor+=anc->file();
......@@ -321,7 +321,7 @@ void RTFDocVisitor::visit(DocInclude *inc)
m_t << "{" << endl;
m_t << "\\par" << endl;
m_t << rtf_Style_Reset << getStyle("CodeExample");
parseCode(m_ci,inc->context(),inc->text(),FALSE,0);
parseCode(m_ci,inc->context(),inc->text().latin1(),FALSE,0);
m_t << "\\par" << endl;
m_t << "}" << endl;
break;
......@@ -353,7 +353,7 @@ void RTFDocVisitor::visit(DocIncOperator *op)
}
if (op->type()!=DocIncOperator::Skip)
{
parseCode(m_ci,op->context(),op->text(),FALSE,0);
parseCode(m_ci,op->context(),op->text().latin1(),FALSE,0);
}
if (op->isLast())
{
......@@ -534,7 +534,7 @@ void RTFDocVisitor::visitPre(DocSection *s)
{
m_t << "{" // start section
<< rtf_Style_Reset;
QCString heading;
QString heading;
int level = QMIN(s->level()+2,4);
heading.sprintf("Heading%d",level);
// set style
......@@ -750,7 +750,7 @@ void RTFDocVisitor::visitPre(DocHtmlHeader *header)
{
m_t << "{" // start section
<< rtf_Style_Reset;
QCString heading;
QString heading;
int level = QMIN(header->level()+2,4);
heading.sprintf("Heading%d",level);
// set style
......@@ -793,13 +793,13 @@ void RTFDocVisitor::visitPost(DocImage *)
void RTFDocVisitor::visitPre(DocDotFile *df)
{
QCString baseName=df->file();
QString baseName=df->file();
int i;
if ((i=baseName.findRev('/'))!=-1)
{
baseName=baseName.right(baseName.length()-i-1);
}
QCString outDir = Config_getString("RTF_OUTPUT");
QString outDir = Config_getString("RTF_OUTPUT");
writeDotGraphFromFile(df->file(),outDir,baseName,BITMAP);
m_t << "\\par" << endl;
m_t << "{" << endl;
......@@ -927,7 +927,7 @@ void RTFDocVisitor::visitPre(DocXRefItem *x)
m_t << "\\par" << endl;
if (Config_getBool("RTF_HYPERLINKS"))
{
QCString refName;
QString refName;
if (!x->file().isEmpty())
{
refName+=x->file();
......@@ -1033,11 +1033,11 @@ void RTFDocVisitor::filter(const char *str)
}
}
void RTFDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor)
void RTFDocVisitor::startLink(const QString &ref,const QString &file,const QString &anchor)
{
if (ref.isEmpty() && Config_getBool("RTF_HYPERLINKS"))
{
QCString refName;
QString refName;
if (!file.isEmpty())
{
refName+=file;
......@@ -1059,7 +1059,7 @@ void RTFDocVisitor::startLink(const QCString &ref,const QCString &file,const QCS
}
}
void RTFDocVisitor::endLink(const QCString &ref)
void RTFDocVisitor::endLink(const QString &ref)
{
if (ref.isEmpty() && Config_getBool("RTF_HYPERLINKS"))
{
......
......@@ -23,7 +23,7 @@
class QTextStream;
class BaseCodeDocInterface;
class QCString;
class QString;
/*! @brief Concrete visitor implementation for RTF output. */
class RTFDocVisitor : public DocVisitor
......@@ -130,10 +130,10 @@ class RTFDocVisitor : public DocVisitor
//--------------------------------------
void filter(const char *str);
void startLink(const QCString &ref,const QCString &file,
const QCString &anchor);
void endLink(const QCString &ref);
QCString getStyle(const char *name);
void startLink(const QString &ref,const QString &file,
const QString &anchor);
void endLink(const QString &ref);
QString getStyle(const char *name);
void incIndentLevel();
void decIndentLevel();
......
......@@ -3925,33 +3925,33 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
yyLineNr++;
}
<SkipSection>"//"|"*/"
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"elseif"/[^a-z_A-Z0-9] {
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"elseif"/[^a-z_A-Z0-9] {
// previous section enabled => skip now
depthIf=1;
BEGIN(SkipSection);
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"else"/[^a-z_A-Z0-9] {
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"else"/[^a-z_A-Z0-9] {
// section was enabled => skip now
depthIf=1;
BEGIN(SkipSection);
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"endif"/[^a-z_A-Z0-9] {
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"endif"/[^a-z_A-Z0-9] {
// section enabled => absorb endif
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"ingroup"{B}+ {
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"ingroup"{B}+ {
lastGroupContext = YY_START;
lineCount();
BEGIN( GroupName );
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"nosubgrouping"/[^a-z_A-Z0-9] {
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"nosubgrouping"/[^a-z_A-Z0-9] {
current->subGrouping = FALSE;
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"showinitializer"/[^a-z_A-Z0-9] {
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"showinitializer"/[^a-z_A-Z0-9] {
current->initLines = 100000; // ON
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"hideinitializer"/[^a-z_A-Z0-9] {
<ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"hideinitializer"/[^a-z_A-Z0-9] {
current->initLines = 0; // OFF
}
<GroupName>{ID} {
......@@ -3992,7 +3992,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
}
else
{
yyLineNr++;
if (yytext[yyleng-1]=='\n') yyLineNr++;
}
BEGIN( lastBriefContext );
}
......@@ -4295,7 +4295,18 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text
current->doc+=yytext;
}
<Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc,CopyArgComment,SkipSection>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
<SkipSection>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
QCString *pValue=Doxygen::aliasDict[yytext+1];
if (pValue)
{
int i,l=pValue->length();
for (i=l-1;i>=0;i--)
{
unput(pValue->at(i));
}
}
}
<Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc,CopyArgComment>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
bool handled=FALSE;
if ( useOverrideCommands)
{
......@@ -4338,9 +4349,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
if (pValue)
{
int i,l=pValue->length();
char c;
for (i=l-1;i>=0;i--)
{
unput(pValue->at(i));
c=pValue->at(i);
unput(c);
if (c=='\n') yyLineNr--;
}
}
else
......
......@@ -37,6 +37,8 @@
* -------------+------------------------------------------------------------
* 2002-07-11 | Update for new since 1.2.16
* -------------+------------------------------------------------------------
* 2002-09-24 | Update for new since 1.2.17
* -------------+------------------------------------------------------------
*/
#ifndef TRANSLATOR_FR_H
#define TRANSLATOR_FR_H
......@@ -1268,6 +1270,17 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17
return "Table des matières";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.17
//////////////////////////////////////////////////////////////////////////
/*! Used as the header of the list of item that have been
* flagged deprecated
*/
virtual QCString trDeprecatedList()
{
return "Liste obsolète";
}
};
......
......@@ -2569,9 +2569,11 @@ bool generateLink(OutputDocInterface &od,const char *clName,
}
else if (compound) // link to compound
{
if (lt==0 && compound->definitionType()==Definition::TypeGroup)
if (lt==0 && anchor.isEmpty() && /* compound link */
compound->definitionType()==Definition::TypeGroup /* is group */
)
{
linkText=((GroupDef *)compound)->groupTitle();
linkText=((GroupDef *)compound)->groupTitle(); // use group's title as link
}
od.writeObjectLink(compound->getReference(),
compound->getOutputFileBase(),anchor,linkText);
......
......@@ -148,7 +148,7 @@ void XmlDocVisitor::visit(DocVerbatim *s)
{
case DocVerbatim::Code: // fall though
m_t << "<programlisting>";
parseCode(m_ci,s->context(),s->text(),FALSE,0);
parseCode(m_ci,s->context(),s->text().latin1(),FALSE,0);
m_t << "</programlisting>";
break;
case DocVerbatim::Verbatim:
......@@ -182,7 +182,7 @@ void XmlDocVisitor::visit(DocInclude *inc)
{
case DocInclude::Include:
m_t << "<programlisting>";
parseCode(m_ci,inc->context(),inc->text(),FALSE,0);
parseCode(m_ci,inc->context(),inc->text().latin1(),FALSE,0);
m_t << "</programlisting>";
break;
case DocInclude::DontInclude:
......@@ -211,7 +211,7 @@ void XmlDocVisitor::visit(DocIncOperator *op)
}
if (op->type()!=DocIncOperator::Skip)
{
parseCode(m_ci,op->context(),op->text(),FALSE,0);
parseCode(m_ci,op->context(),op->text().latin1(),FALSE,0);
}
if (op->isLast())
{
......@@ -536,7 +536,7 @@ void XmlDocVisitor::visitPre(DocImage *img)
}
m_t << "\"";
QCString baseName=img->name();
QString baseName=img->name();
int i;
if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1)
{
......@@ -719,7 +719,7 @@ void XmlDocVisitor::filter(const char *str)
}
}
void XmlDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor)
void XmlDocVisitor::startLink(const QString &ref,const QString &file,const QString &anchor)
{
m_t << "<ref refid=\"" << file;
if (!anchor.isEmpty()) m_t << "_1" << anchor;
......
......@@ -23,9 +23,9 @@
class QTextStream;
class BaseCodeDocInterface;
class QCString;
class QString;
/*! @brief Concrete visitor implementation for HTML output. */
/*! @brief Concrete visitor implementation for XML output. */
class XmlDocVisitor : public DocVisitor
{
public:
......@@ -130,8 +130,8 @@ class XmlDocVisitor : public DocVisitor
//--------------------------------------
void filter(const char *str);
void startLink(const QCString &ref,const QCString &file,
const QCString &anchor);
void startLink(const QString &ref,const QString &file,
const QString &anchor);
void endLink();
//--------------------------------------
......
......@@ -1199,7 +1199,7 @@ static void writeXMLDocBlock(QTextStream &t,
const QCString &text)
{
QCString stext = text.stripWhiteSpace();
if (text.isEmpty()) return;
if (stext.isEmpty()) return;
// convert the documentation string into an abstract syntax tree
DocNode *root = validatingParseDoc(fileName,lineNr,scope,md,stext);
// create a code generator
......@@ -1489,20 +1489,20 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
t << "</initializer>" << endl;
}
t << " <briefdescription>" << endl;
writeXMLDocBlock(t,emd->getDefFileName(),emd->getDefLine(),scopeName,emd,emd->briefDescription());
writeXMLDocBlock(t,emd->briefFile(),emd->briefLine(),scopeName,emd,emd->briefDescription());
t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,emd->getDefFileName(),emd->getDefLine(),scopeName,emd,emd->documentation());
writeXMLDocBlock(t,emd->docFile(),emd->docLine(),scopeName,emd,emd->documentation());
t << " </detaileddescription>" << endl;
t << " </enumvalue>" << endl;
}
}
}
t << " <briefdescription>" << endl;
writeXMLDocBlock(t,md->getDefFileName(),md->getDefLine(),scopeName,md,md->briefDescription());
writeXMLDocBlock(t,md->briefFile(),md->briefLine(),scopeName,md,md->briefDescription());
t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,md->getDefFileName(),md->getDefLine(),scopeName,md,md->documentation());
writeXMLDocBlock(t,md->docFile(),md->docLine(),scopeName,md,md->documentation());
t << " </detaileddescription>" << endl;
if (md->getDefLine()!=-1)
{
......@@ -1763,10 +1763,10 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
generateXMLSection(cd,ti,t,&cd->related,"related");
t << " <briefdescription>" << endl;
writeXMLDocBlock(t,cd->getDefFileName(),cd->getDefLine(),cd->name(),0,cd->briefDescription());
writeXMLDocBlock(t,cd->briefFile(),cd->briefLine(),cd->name(),0,cd->briefDescription());
t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,cd->getDefFileName(),cd->getDefLine(),cd->name(),0,cd->documentation());
writeXMLDocBlock(t,cd->docFile(),cd->docLine(),cd->name(),0,cd->documentation());
t << " </detaileddescription>" << endl;
DotClassGraph inheritanceGraph(cd,DotClassGraph::Inheritance);
if (!inheritanceGraph.isTrivial())
......@@ -1868,10 +1868,10 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti)
generateXMLSection(nd,ti,t,&nd->decVarMembers,"var");
t << " <briefdescription>" << endl;
writeXMLDocBlock(t,nd->getDefFileName(),nd->getDefLine(),0,0,nd->briefDescription());
writeXMLDocBlock(t,nd->briefFile(),nd->briefLine(),0,0,nd->briefDescription());
t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,nd->getDefFileName(),nd->getDefLine(),0,0,nd->documentation());
writeXMLDocBlock(t,nd->docFile(),nd->docLine(),0,0,nd->documentation());
t << " </detaileddescription>" << endl;
t << " <location file=\""
<< nd->getDefFileName() << "\" line=\""
......@@ -2002,10 +2002,10 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti)
generateXMLSection(fd,ti,t,&fd->decVarMembers,"var");
t << " <briefdescription>" << endl;
writeXMLDocBlock(t,fd->getDefFileName(),fd->getDefLine(),0,0,fd->briefDescription());
writeXMLDocBlock(t,fd->briefFile(),fd->briefLine(),0,0,fd->briefDescription());
t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,fd->getDefFileName(),fd->getDefLine(),0,0,fd->documentation());
writeXMLDocBlock(t,fd->docFile(),fd->docLine(),0,0,fd->documentation());
t << " </detaileddescription>" << endl;
t << " <programlisting>" << endl;
writeXMLCodeBlock(t,fd);
......@@ -2125,10 +2125,10 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
generateXMLSection(gd,ti,t,&gd->decVarMembers,"var");
t << " <briefdescription>" << endl;
writeXMLDocBlock(t,gd->getDefFileName(),gd->getDefLine(),0,0,gd->briefDescription());
writeXMLDocBlock(t,gd->briefFile(),gd->briefLine(),0,0,gd->briefDescription());
t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,gd->getDefFileName(),gd->getDefLine(),0,0,gd->documentation());
writeXMLDocBlock(t,gd->docFile(),gd->docLine(),0,0,gd->documentation());
t << " </detaileddescription>" << endl;
t << " </compounddef>" << endl;
t << "</doxygen>" << endl;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment