Commit c454a540 authored by dimitri's avatar dimitri

Release-1.2.16-20020623

parent 784e2b65
DOXYGEN Version 1.2.16-20020609 DOXYGEN Version 1.2.16-20020623
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (09 June 2002) Dimitri van Heesch (23 June 2002)
DOXYGEN Version 1.2.16_20020609 DOXYGEN Version 1.2.16_20020623
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (09 June 2002) Dimitri van Heesch (dimitri@stack.nl) (23 June 2002)
1.2.16-20020609 1.2.16-20020623
...@@ -92,7 +92,7 @@ int main(int argc,char **argv) ...@@ -92,7 +92,7 @@ int main(int argc,char **argv)
ICompound *comp; ICompound *comp;
for (cli->toFirst();(comp=cli->current());cli->toNext()) for (cli->toFirst();(comp=cli->current());cli->toNext())
{ {
printf("Processing %s...\n",comp->name().data()); printf("Processing %s...\n",comp->name()->latin1());
bool hasDocs = isDocumented(comp->briefDescription(),comp->detailedDescription()); bool hasDocs = isDocumented(comp->briefDescription(),comp->detailedDescription());
switch (comp->kind()) switch (comp->kind())
{ {
...@@ -108,7 +108,6 @@ int main(int argc,char **argv) ...@@ -108,7 +108,6 @@ int main(int argc,char **argv)
case ICompound::File: numFiles++; break; case ICompound::File: numFiles++; break;
case ICompound::Group: numGroups++; break; case ICompound::Group: numGroups++; break;
case ICompound::Page: numPages++; break; case ICompound::Page: numPages++; break;
case ICompound::Package: numPackages++; break;
default: break; default: break;
} }
...@@ -120,7 +119,7 @@ int main(int argc,char **argv) ...@@ -120,7 +119,7 @@ int main(int argc,char **argv)
IMember *mem; IMember *mem;
for (mli->toFirst();(mem=mli->current());mli->toNext()) for (mli->toFirst();(mem=mli->current());mli->toNext())
{ {
IParamIterator *pli = mem->params(); IParamIterator *pli = mem->parameters();
IParam *par; IParam *par;
if (comp->kind()==ICompound::Class || if (comp->kind()==ICompound::Class ||
comp->kind()==ICompound::Struct || comp->kind()==ICompound::Struct ||
...@@ -203,7 +202,7 @@ int main(int argc,char **argv) ...@@ -203,7 +202,7 @@ int main(int argc,char **argv)
{ {
numParams++; numParams++;
} }
if (mem->typeString()!="void") if (QString(mem->typeString()->latin1())!="void")
{ {
numParams++; // count non-void return types as well numParams++; // count non-void return types as well
} }
......
...@@ -23,7 +23,7 @@ all: language FORCE ...@@ -23,7 +23,7 @@ all: language FORCE
@cp Makefile.latex ../latex/Makefile @cp Makefile.latex ../latex/Makefile
@sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >../latex/doxygen_manual.tex @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >../latex/doxygen_manual.tex
@sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >../latex/doxygen.sty @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >../latex/doxygen.sty
@cp doxygen_logo.eps ../latex @epstopdf doxygen_logo.eps -o=../latex/doxygen_logo.pdf
clean: clean:
rm -rf ../html ../latex *.bak translator_report.txt rm -rf ../html ../latex *.bak translator_report.txt
......
...@@ -28,4 +28,4 @@ doxygen_manual.pdf: doxygen_manual.tex doxygen.sty ...@@ -28,4 +28,4 @@ doxygen_manual.pdf: doxygen_manual.tex doxygen.sty
echo "Rerunning latex...." echo "Rerunning latex...."
pdflatex doxygen_manual.tex pdflatex doxygen_manual.tex
clean: clean:
rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.pdf rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log doxygen_manual.pdf
...@@ -22,7 +22,7 @@ all: language FORCE ...@@ -22,7 +22,7 @@ all: language FORCE
@copy Makefile.latex ..\latex\Makefile @copy Makefile.latex ..\latex\Makefile
@sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >..\latex\doxygen_manual.tex @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >..\latex\doxygen_manual.tex
@sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >..\latex\doxygen.sty @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >..\latex\doxygen.sty
@copy doxygen_logo.eps ..\latex @epstopdf doxygen_logo.eps -o=..\latex\doxygen_logo.pdf
clean: clean:
del /s /q ..\html ..\latex del /s /q ..\html ..\latex
......
...@@ -22,7 +22,7 @@ all: language FORCE ...@@ -22,7 +22,7 @@ all: language FORCE
@copy Makefile.latex ..\latex\Makefile @copy Makefile.latex ..\latex\Makefile
@sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >..\latex\doxygen_manual.tex @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex >..\latex\doxygen_manual.tex
@sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >..\latex\doxygen.sty @sed -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty >..\latex\doxygen.sty
@copy doxygen_logo.eps ..\latex @epstopdf doxygen_logo.eps -o=..\latex\doxygen_logo.pdf
clean: clean:
del /s /q ..\html ..\latex del /s /q ..\html ..\latex
......
...@@ -155,6 +155,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -155,6 +155,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_max_dot_graph_height MAX_DOT_GRAPH_HEIGHT <li> \refitem cfg_max_dot_graph_height MAX_DOT_GRAPH_HEIGHT
<li> \refitem cfg_max_dot_graph_width MAX_DOT_GRAPH_WIDTH <li> \refitem cfg_max_dot_graph_width MAX_DOT_GRAPH_WIDTH
<li> \refitem cfg_max_initializer_lines MAX_INITIALIZER_LINES <li> \refitem cfg_max_initializer_lines MAX_INITIALIZER_LINES
<li> \refitem cfg_multiline_cpp_is_brief MULTILINE_CPP_IS_BRIEF
<li> \refitem cfg_optimize_output_for_c OPTIMIZE_OUTPUT_FOR_C <li> \refitem cfg_optimize_output_for_c OPTIMIZE_OUTPUT_FOR_C
<li> \refitem cfg_optimize_output_java OPTIMIZE_OUTPUT_JAVA <li> \refitem cfg_optimize_output_java OPTIMIZE_OUTPUT_JAVA
<li> \refitem cfg_output_directory OUTPUT_DIRECTORY <li> \refitem cfg_output_directory OUTPUT_DIRECTORY
...@@ -401,6 +402,15 @@ followed by the descriptions of the tags grouped by category. ...@@ -401,6 +402,15 @@ followed by the descriptions of the tags grouped by category.
comment as the brief description. If set to NO (the default), the comment as the brief description. If set to NO (the default), the
Javadoc-style will behave just like the Qt-style comments. Javadoc-style will behave just like the Qt-style comments.
\anchor cfg_multiline_cpp_is_brief
<dt>\c MULTILINE_CPP_IS_BRIEF <dd>
\addindex MULTILINE_CPP_IS_BRIEF
The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
treat a multi-line C++ special comment block (i.e. a block of //! or ///
comments) as a brief description. This used to be the default behaviour.
The new default is to treat a multi-line C++ comment block as a detailed
description. Set this tag to YES if you prefer the old behaviour instead.
\anchor cfg_details_at_top \anchor cfg_details_at_top
<dt>\c DETAILS_AT_TOP <dd> <dt>\c DETAILS_AT_TOP <dd>
\addindex DETAILS_AT_TOP \addindex DETAILS_AT_TOP
...@@ -1171,7 +1181,8 @@ EXTRA_PACKAGES = times ...@@ -1171,7 +1181,8 @@ EXTRA_PACKAGES = times
\addindex SKIP_FUNCTION_MACROS \addindex SKIP_FUNCTION_MACROS
If the \c SKIP_FUNCTION_MACROS tag is set to \c YES (the default) then If the \c SKIP_FUNCTION_MACROS tag is set to \c YES (the default) then
doxygen's preprocessor will remove all function-like macros that are alone doxygen's preprocessor will remove all function-like macros that are alone
on a line and do not end with a semicolon. Such function macros are typically on a line, have an all uppercase name, and do not end with a semicolon.
Such function macros are typically
used for boiler-plate code, and will confuse the parser if not removed. used for boiler-plate code, and will confuse the parser if not removed.
</dl> </dl>
......
...@@ -33,8 +33,7 @@ ...@@ -33,8 +33,7 @@
\setlength{\footrulewidth}{0.4pt} \setlength{\footrulewidth}{0.4pt}
\begin{document} \begin{document}
\begin{titlepage} \begin{titlepage}
\setlength{\epsfxsize}{\textwidth} \includegraphics[width=\textwidth]{doxygen_logo}
\epsffile{doxygen_logo.eps}
\begin{center} \begin{center}
Manual for version $VERSION\\[2ex] Manual for version $VERSION\\[2ex]
Written by Dimitri van Heesch\\[2ex] Written by Dimitri van Heesch\\[2ex]
......
...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means ...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time. languages other than English (the default) at configuration time.
Currently (version 1.2.16-20020603), 27 languages Currently (version 1.2.16-20020616), 27 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Chinese Traditional, Croatian, Czech, Brazilian Portuguese, Chinese, Chinese Traditional, Croatian, Czech,
Danish, Dutch, English, Finnish, French, Danish, Dutch, English, Finnish, French,
......
/******************************************************************************
*
*
*
* Copyright (C) 1997-2001 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.
*
*/
/*! \page todo Doxygen TODO's
<h3>TODO/Wish list</h3>
<ul>
<li>Expand namespaces in the file docs with the contents that are
specific to the file (maybe also expand the classes inside a namespace).
<li>Add support for grouping members, and document then as a group.
<li>Support for K&R-style function arguments.
<li>More output formats: suggested are info format and RTF format.
<li>Split long lists in an index to a set of smaller lists.
<li>Add a nice graphical front-end for creating and modifying the
configuration file (it should be flexible enough to quickly add new options).
<li>Improve the search index generation, so it uses less memory and
is easier to get running.
<li>Generate code metrics (Anyone know a good book about code metrics?)
<li>Add features that you think are missing... So if you know any that are
not yet listed here, please let me know.
</ul>
*/
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.2.16_20020609 Version: 1.2.16_20020623
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -728,14 +728,11 @@ void ClassDef::writeDetailedDescription(OutputList &ol, OutputList &briefOutput, ...@@ -728,14 +728,11 @@ void ClassDef::writeDetailedDescription(OutputList &ol, OutputList &briefOutput,
// write examples // write examples
if (exampleFlag) if (exampleFlag)
{ {
ol.startDescList(BaseOutputDocInterface::Examples); ol.startSimpleSect(BaseOutputDocInterface::Examples,0,0,theTranslator->trExamples()+": ");
parseText(ol,theTranslator->trExamples()+": ");
ol.endDescTitle();
ol.writeDescItem(); ol.writeDescItem();
ol.newParagraph(); ol.newParagraph();
writeExample(ol,m_exampleSDict); writeExample(ol,m_exampleSDict);
//ol.endDescItem(); ol.endSimpleSect();
ol.endDescList();
} }
ol.newParagraph(); ol.newParagraph();
writeSourceDef(ol,name()); writeSourceDef(ol,name());
......
...@@ -1484,6 +1484,15 @@ void Config::create() ...@@ -1484,6 +1484,15 @@ void Config::create()
"explict @brief command for a brief description. \n", "explict @brief command for a brief description. \n",
FALSE FALSE
); );
cb = addBool(
"MULTILINE_CPP_IS_BRIEF",
"The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen \n"
"treat a multi-line C++ special comment block (i.e. a block of //! or /// \n"
"comments) as a brief description. This used to be the default behaviour. \n"
"The new default is to treat a multi-line C++ comment block as a detailed \n"
"description. Set this tag to YES if you prefer the old behaviour instead. \n",
FALSE
);
cb = addBool( cb = addBool(
"DETAILS_AT_TOP", "DETAILS_AT_TOP",
"If the DETAILS_AT_TOP tag is set to YES then Doxygen \n" "If the DETAILS_AT_TOP tag is set to YES then Doxygen \n"
...@@ -2188,8 +2197,9 @@ void Config::create() ...@@ -2188,8 +2197,9 @@ void Config::create()
"SKIP_FUNCTION_MACROS", "SKIP_FUNCTION_MACROS",
"If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then \n" "If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then \n"
"doxygen's preprocessor will remove all function-like macros that are alone \n" "doxygen's preprocessor will remove all function-like macros that are alone \n"
"on a line and do not end with a semicolon. Such function macros are typically \n" "on a line, have an all uppercase name, and do not end with a semicolon. Such \n"
"used for boiler-plate code, and will confuse the parser if not removed. \n", "function macros are typically used for boiler-plate code, and will confuse the \n"
"parser if not removed. \n",
TRUE TRUE
); );
cb->addDependency("ENABLE_PREPROCESSING"); cb->addDependency("ENABLE_PREPROCESSING");
......
This diff is collapsed.
...@@ -1221,66 +1221,67 @@ static void findMaximalDotGraph(DotNode *root, ...@@ -1221,66 +1221,67 @@ static void findMaximalDotGraph(DotNode *root,
bool backArrows=TRUE bool backArrows=TRUE
) )
{ {
bool lastFit; int minDistance=1; // min distance that shows only direct children.
int minDistance=1; int curDistance=2; // current distance to try
int maxDistance=maxDist; int maxDistance=maxDist; // max distance that show whole graph
int curDistance=maxDistance;
int width=0; int width=0;
int height=0; int height=0;
int maxDotGraphWidth = Config_getInt("MAX_DOT_GRAPH_WIDTH");
int maxDotGraphHeight = Config_getInt("MAX_DOT_GRAPH_HEIGHT");
// binary search for the maximal inheritance depth that fits in a reasonable // binary search for the maximal inheritance depth that fits in a reasonable
// sized image (dimensions: Config_getInt("MAX_DOT_GRAPH_WIDTH"), Config_getInt("MAX_DOT_GRAPH_HEIGHT")) // sized image (dimensions: Config_getInt("MAX_DOT_GRAPH_WIDTH"), Config_getInt("MAX_DOT_GRAPH_HEIGHT"))
do if (maxDistance>1)
{ {
writeDotGraph(root,format,baseName,lrRank,renderParents, do
curDistance,backArrows);
QCString dotArgs(4096);
// create annotated dot file
dotArgs.sprintf("-Tdot \"%s.dot\" -o \"%s_tmp.dot\"",baseName.data(),baseName.data());
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{ {
err("Problems running dot. Check your installation!\n"); writeDotGraph(root,format,baseName,lrRank,renderParents,
return; curDistance,backArrows);
}
// extract bounding box from the result QCString dotArgs(4096);
readBoundingBoxDot(baseName+"_tmp.dot",&width,&height); // create annotated dot file
width = width *96/72; // 96 pixels/inch, 72 points/inch dotArgs.sprintf("-Tdot \"%s.dot\" -o \"%s_tmp.dot\"",baseName.data(),baseName.data());
height = height*96/72; // 96 pixels/inch, 72 points/inch if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
//printf("Found bounding box (%d,%d) max (%d,%d)\n",width,height, {
// Config_getInt("MAX_DOT_GRAPH_WIDTH"),Config_getInt("MAX_DOT_GRAPH_HEIGHT")); err("Problems running dot. Check your installation!\n");
return;
lastFit=(width<Config_getInt("MAX_DOT_GRAPH_WIDTH") && height<Config_getInt("MAX_DOT_GRAPH_HEIGHT")); }
if (lastFit) // image is small enough
{
minDistance=curDistance;
//printf("Image fits [%d-%d]\n",minDistance,maxDistance);
}
else
{
maxDistance=curDistance;
//printf("Image does not fit [%d-%d]\n",minDistance,maxDistance);
}
curDistance=minDistance+(maxDistance-minDistance)/2;
//printf("curDistance=%d\n",curDistance);
// remove temporary dot file
thisDir.remove(baseName+"_tmp.dot");
} while ((maxDistance-minDistance)>1);
if (!lastFit) // extract bounding box from the result
{ readBoundingBoxDot(baseName+"_tmp.dot",&width,&height);
writeDotGraph(root, width = width *96/72; // 96 pixels/inch, 72 points/inch
height = height*96/72; // 96 pixels/inch, 72 points/inch
//printf("Found bounding box (%d,%d) max (%d,%d)\n",width,height,
// Config_getInt("MAX_DOT_GRAPH_WIDTH"),Config_getInt("MAX_DOT_GRAPH_HEIGHT"));
// remove temporary dot file
thisDir.remove(baseName+"_tmp.dot");
bool graphFits=(width<maxDotGraphWidth && height<maxDotGraphHeight);
if (graphFits) // graph is small enough
{
minDistance=curDistance;
//printf("Image fits [%d-%d]\n",minDistance,maxDistance);
}
else // graph does not fit anymore with curDistance
{
//printf("Image does not fit [%d-%d]\n",minDistance,maxDistance);
maxDistance=curDistance;
}
curDistance=minDistance+(maxDistance-curDistance)/2;
//printf("curDistance=%d\n",curDistance);
} while ((maxDistance-minDistance)>1);
}
writeDotGraph(root,
format, format,
baseName, baseName,
lrRank || (curDistance==1 && width>Config_getInt("MAX_DOT_GRAPH_WIDTH")), lrRank || (minDistance==1 && width>Config_getInt("MAX_DOT_GRAPH_WIDTH")),
renderParents, renderParents,
minDistance, minDistance,
backArrows backArrows
); );
}
} }
QCString DotClassGraph::diskName() const QCString DotClassGraph::diskName() const
......
...@@ -6350,31 +6350,36 @@ static void readFiles(BufStr &output) ...@@ -6350,31 +6350,36 @@ static void readFiles(BufStr &output)
int fileNameSize=fileName.length(); int fileNameSize=fileName.length();
bool multiLineIsBrief = Config_getBool("MULTILINE_CPP_IS_BRIEF");
BufStr tempBuf(10000); BufStr tempBuf(10000);
BufStr *bufPtr = multiLineIsBrief ? &tempBuf : &output;
// add begin filename marker // add begin filename marker
tempBuf.addChar(0x06); bufPtr->addChar(0x06);
// copy filename // copy filename
tempBuf.addArray(fileName.data(),fileNameSize); bufPtr->addArray(fileName.data(),fileNameSize);
// add end filename marker // add end filename marker
tempBuf.addChar(0x06); bufPtr->addChar(0x06);
tempBuf.addChar('\n'); bufPtr->addChar('\n');
if (Config_getBool("ENABLE_PREPROCESSING")) if (Config_getBool("ENABLE_PREPROCESSING"))
{ {
msg("Preprocessing %s...\n",s->data()); msg("Preprocessing %s...\n",s->data());
preprocessFile(fileName,tempBuf); preprocessFile(fileName,*bufPtr);
} }
else else
{ {
msg("Reading %s...\n",s->data()); msg("Reading %s...\n",s->data());
copyAndFilterFile(fileName,tempBuf); copyAndFilterFile(fileName,*bufPtr);
} }
tempBuf.addChar('\n'); /* to prevent problems under Windows ? */ bufPtr->addChar('\n'); /* to prevent problems under Windows ? */
convertCppComments(&tempBuf,&output); if (multiLineIsBrief)
//output.addArray(tempBuf.data(),tempBuf.curPos()); {
convertCppComments(&tempBuf,&output);
}
s=inputFiles.next(); s=inputFiles.next();
//printf("-------> adding new line\n"); //printf("-------> adding new line\n");
......
...@@ -1176,3 +1176,39 @@ void HtmlGenerator::writeLineNumber(const char *ref,const char *file, ...@@ -1176,3 +1176,39 @@ void HtmlGenerator::writeLineNumber(const char *ref,const char *file,
} }
codify(" "); codify(" ");
} }
void HtmlGenerator::startSimpleSect(SectionTypes,
const char *file,const char *anchor,
const char *title)
{
t << "<dl compact><dt><b>";
if (file)
{
writeObjectLink(0,file,anchor,title);
}
else
{
docify(title);
}
t << "</b></dt>";
}
void HtmlGenerator::endSimpleSect()
{
t << "</dl>";
}
void HtmlGenerator::startParamList(ParamListTypes,
const char *title)
{
t << "<dl compact><dt><b>";
docify(title);
t << "</b></dt>";
}
void HtmlGenerator::endParamList()
{
t << "</dl>";
}
...@@ -191,8 +191,10 @@ class HtmlGenerator : public OutputGenerator ...@@ -191,8 +191,10 @@ class HtmlGenerator : public OutputGenerator
void writeCCedil(char c) { t << "&" << c << "cedil;"; } void writeCCedil(char c) { t << "&" << c << "cedil;"; }
void startDescList(SectionTypes) { t << "<dl compact><dt><b>" << endl; } void startDescList(SectionTypes) { t << "<dl compact><dt><b>" << endl; }
void endDescList() { t << "</dl>"; } void endDescList() { t << "</dl>"; }
void startParamList(ParamListTypes) { t << "<dl compact><dt><b>" << endl; } void startSimpleSect(SectionTypes,const char *,const char *,const char *);
void endParamList() { t << "</dl>"; } void endSimpleSect();
void startParamList(ParamListTypes,const char *);
void endParamList();
void endDescTitle() { t << "</b>"; } void endDescTitle() { t << "</b>"; }
void writeDescItem() { t << "<dd>" << endl; } void writeDescItem() { t << "<dd>" << endl; }
void startSection(const char *,const char *,bool); void startSection(const char *,const char *,bool);
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "config.h" #include "config.h"
#include "message.h" #include "message.h"
#include "doxygen.h" #include "doxygen.h"
#include "language.h"
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
...@@ -248,6 +249,8 @@ HtmlHelp *HtmlHelp::getInstance() ...@@ -248,6 +249,8 @@ HtmlHelp *HtmlHelp::getInstance()
return theInstance; return theInstance;
} }
static QDict<QCString> s_languageDict;
/*! This will create a contents file (index.hhc) and a index file (index.hhk) /*! This will create a contents file (index.hhc) and a index file (index.hhk)
* and write the header of those files. * and write the header of those files.
* It also creates a project file (index.hhp) * It also creates a project file (index.hhp)
...@@ -294,8 +297,80 @@ void HtmlHelp::initialize() ...@@ -294,8 +297,80 @@ void HtmlHelp::initialize()
"<param name=\"FrameName\" value=\"right\">\n" "<param name=\"FrameName\" value=\"right\">\n"
"</OBJECT>\n" "</OBJECT>\n"
"<UL>\n"; "<UL>\n";
/* language codes for Html help
0x405 Czech
0x406 Danish
0x413 Dutch
0xC09 English (Australia)
0x809 English (Britain)
0x1009 English (Canada)
0x1809 English (Ireland)
0x1409 English (New Zealand)
0x1C09 English (South Africa)
0x409 English (United States)
0x40B Finnish
0x40C French
0x407 German
0x408 Greece
0x40E Hungarian
0x410 Italian
0x814 Norwegian
0x415 Polish
0x816 Portuguese(Portugal)
0x416 Portuguese(Brazil)
0x419 Russian
0x80A Spanish(Mexico)
0xC0A Spanish(Modern Sort)
0x40A Spanish(Traditional Sort)
0x41D Swedish
0x41F Turkey
0x411 Japanese
0x412 Korean
0x804 Chinese (PRC)
0x404 Chinese (Taiwan)
*/
s_languageDict.setAutoDelete(TRUE);
s_languageDict.clear();
s_languageDict.insert("czech", new QCString("0x405 Czech"));
s_languageDict.insert("danish", new QCString("0x406 Danish"));
s_languageDict.insert("dutch", new QCString("0x413 Dutch"));
s_languageDict.insert("finnish", new QCString("0x40B Finnish"));
s_languageDict.insert("french", new QCString("0x40C French"));
s_languageDict.insert("german", new QCString("0x40C German"));
s_languageDict.insert("greece", new QCString("0x408 Greece"));
s_languageDict.insert("hungarian",new QCString("0x40E Hungarian"));
s_languageDict.insert("italian", new QCString("0x410 Italian"));
s_languageDict.insert("norwegian",new QCString("0x814 Norwegian"));
s_languageDict.insert("polish", new QCString("0x815 Polish"));
s_languageDict.insert("portugese",new QCString("0x815 Portuguese(Portugal)"));
s_languageDict.insert("brazil", new QCString("0x416 Portuguese(Brazil)"));
s_languageDict.insert("russian", new QCString("0x419 Russian"));
s_languageDict.insert("spanish", new QCString("0x40A Spannish(Traditional Sort)"));
s_languageDict.insert("swedish", new QCString("0x41D Swedish"));
s_languageDict.insert("turkey", new QCString("0x41F Turkey"));
s_languageDict.insert("japanese", new QCString("0x411 Japanese"));
s_languageDict.insert("korean", new QCString("0x412 Korean"));
s_languageDict.insert("chinese", new QCString("0x804 Chinese (PRC)"));
} }
static QCString getLanguageString()
{
if (!theTranslator->idLanguage().isEmpty())
{
QCString *s = s_languageDict[theTranslator->idLanguage()];
if (s)
{
return *s;
}
}
// default language
return "0x409 English (United States)";
}
void HtmlHelp::createProjectFile() void HtmlHelp::createProjectFile()
{ {
/* Write the project file */ /* Write the project file */
...@@ -308,6 +383,8 @@ void HtmlHelp::createProjectFile() ...@@ -308,6 +383,8 @@ void HtmlHelp::createProjectFile()
t.setEncoding(QTextStream::Latin1); t.setEncoding(QTextStream::Latin1);
#endif #endif
QCString indexName="index"+htmlFileExtension; QCString indexName="index"+htmlFileExtension;
if (Config_getBool("GENERATE_TREEVIEW")) indexName="main"+htmlFileExtension; if (Config_getBool("GENERATE_TREEVIEW")) indexName="main"+htmlFileExtension;
t << "[OPTIONS]\n" t << "[OPTIONS]\n"
...@@ -317,7 +394,7 @@ void HtmlHelp::createProjectFile() ...@@ -317,7 +394,7 @@ void HtmlHelp::createProjectFile()
"Default Window=main\n" "Default Window=main\n"
"Default topic=" << indexName << "\n" "Default topic=" << indexName << "\n"
"Index file=index.hhk\n" "Index file=index.hhk\n"
"Language=0x409 English (United States)\n"; "Language=" << getLanguageString() << endl;
if (Config_getBool("BINARY_TOC")) t << "Binary TOC=YES\n"; if (Config_getBool("BINARY_TOC")) t << "Binary TOC=YES\n";
if (Config_getBool("GENERATE_CHI")) t << "Create CHI file=YES\n"; if (Config_getBool("GENERATE_CHI")) t << "Create CHI file=YES\n";
t << "Title=" << Config_getString("PROJECT_NAME") << endl << endl; t << "Title=" << Config_getString("PROJECT_NAME") << endl << endl;
...@@ -372,6 +449,7 @@ void HtmlHelp::finalize() ...@@ -372,6 +449,7 @@ void HtmlHelp::finalize()
delete kf; delete kf;
createProjectFile(); createProjectFile();
s_languageDict.clear();
} }
/*! Increase the level of the contents hierarchy. /*! Increase the level of the contents hierarchy.
......
...@@ -196,7 +196,7 @@ void LatexGenerator::init() ...@@ -196,7 +196,7 @@ void LatexGenerator::init()
#if defined(_MSC_VER) #if defined(_MSC_VER)
// ps2pdf.bat does not work properly from a makefile using GNU make! // ps2pdf.bat does not work properly from a makefile using GNU make!
<< "\tgswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite " << "\tgswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "
"-sOutputFile=refman_2on1.pdf -c save pop -f refman_2on1.ps" << endl "-sOutputFile=refman_2on1.pdf -c save pop -f refman_2on1.ps" << endl;
#else #else
<< "\tps2pdf refman_2on1.ps refman_2on1.pdf" << endl; << "\tps2pdf refman_2on1.ps refman_2on1.pdf" << endl;
#endif #endif
...@@ -1916,3 +1916,35 @@ void LatexGenerator::endDescItem() ...@@ -1916,3 +1916,35 @@ void LatexGenerator::endDescItem()
} }
} }
void LatexGenerator::startSimpleSect(SectionTypes,const char *file,
const char *anchor,const char *title)
{
t << "\\begin{Desc}\n\\item[";
if (file)
{
writeObjectLink(0,file,anchor,title);
}
else
{
docify(title);
}
t << "]";
}
void LatexGenerator::endSimpleSect()
{
t << "\\end{Desc}" << endl;
}
void LatexGenerator::startParamList(ParamListTypes,const char *title)
{
t << "\\begin{Desc}\n\\item[";
docify(title);
t << "]";
}
void LatexGenerator::endParamList()
{
t << "\\end{Desc}" << endl;
}
...@@ -208,8 +208,10 @@ class LatexGenerator : public OutputGenerator ...@@ -208,8 +208,10 @@ class LatexGenerator : public OutputGenerator
void endMemberDescription() { t << "\\item\\end{CompactList}"; } void endMemberDescription() { t << "\\item\\end{CompactList}"; }
void startDescList(SectionTypes) { t << "\\begin{Desc}\n\\item["; } void startDescList(SectionTypes) { t << "\\begin{Desc}\n\\item["; }
void endDescList() { t << "\\end{Desc}" << endl; } void endDescList() { t << "\\end{Desc}" << endl; }
void startParamList(ParamListTypes) { t << "\\begin{Desc}\n\\item["; } void startSimpleSect(SectionTypes,const char *,const char *,const char *);
void endParamList() { t << "\\end{Desc}" << endl; } void endSimpleSect();
void startParamList(ParamListTypes,const char *title);
void endParamList();
void endDescTitle() { t << "]"; } void endDescTitle() { t << "]"; }
void writeDescItem() { t << "\\par" << endl; } void writeDescItem() { t << "\\par" << endl; }
void startSection(const char *,const char *,bool); void startSection(const char *,const char *,bool);
......
...@@ -320,16 +320,6 @@ void ManGenerator::startDescList(SectionTypes) ...@@ -320,16 +320,6 @@ void ManGenerator::startDescList(SectionTypes)
startBold(); startBold();
} }
void ManGenerator::startParamList(ParamListTypes)
{
if (!firstCol)
{ t << endl << ".PP" << endl;
firstCol=TRUE; paragraph=TRUE;
col=0;
}
paragraph=FALSE;
}
void ManGenerator::startTitle() void ManGenerator::startTitle()
{ {
if (!firstCol) t << endl; if (!firstCol) t << endl;
...@@ -582,4 +572,40 @@ void ManGenerator::endSection(const char *,bool sub) ...@@ -582,4 +572,40 @@ void ManGenerator::endSection(const char *,bool sub)
} }
} }
void ManGenerator::startSimpleSect(SectionTypes,const char *,
const char *,const char *title)
{
if (!firstCol)
{ t << endl << ".PP" << endl;
firstCol=TRUE; paragraph=TRUE;
col=0;
}
paragraph=FALSE;
startBold();
docify(title);
endBold();
paragraph=TRUE;
}
void ManGenerator::endSimpleSect()
{
}
void ManGenerator::startParamList(ParamListTypes,const char *title)
{
if (!firstCol)
{ t << endl << ".PP" << endl;
firstCol=TRUE; paragraph=TRUE;
col=0;
}
paragraph=FALSE;
startBold();
docify(title);
endBold();
paragraph=TRUE;
}
void ManGenerator::endParamList()
{
}
...@@ -181,8 +181,10 @@ class ManGenerator : public OutputGenerator ...@@ -181,8 +181,10 @@ class ManGenerator : public OutputGenerator
void endMemberDescription() { t << "\\fP\""; firstCol=FALSE; } void endMemberDescription() { t << "\\fP\""; firstCol=FALSE; }
void startDescList(SectionTypes); void startDescList(SectionTypes);
void endDescList() {} void endDescList() {}
void startParamList(ParamListTypes); void startSimpleSect(SectionTypes,const char *,const char *,const char *);
void endParamList() {} void endSimpleSect();
void startParamList(ParamListTypes,const char *title);
void endParamList();
void endDescTitle(); void endDescTitle();
void writeDescItem(); void writeDescItem();
void startSection(const char *,const char *,bool); void startSection(const char *,const char *,bool);
......
...@@ -1221,9 +1221,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1221,9 +1221,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if (docArgList && docArgList->hasDocumentation()) if (docArgList && docArgList->hasDocumentation())
{ {
//printf("***** argumentList is documented\n"); //printf("***** argumentList is documented\n");
ol.startParamList(BaseOutputDocInterface::Param); ol.startParamList(BaseOutputDocInterface::Param,theTranslator->trParameters()+": ");
parseText(ol,theTranslator->trParameters()+": ");
ol.endDescTitle();
ol.writeDescItem(); ol.writeDescItem();
ol.startDescTable(); ol.startDescTable();
ArgumentListIterator ali(*docArgList); ArgumentListIterator ali(*docArgList);
...@@ -1241,7 +1239,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1241,7 +1239,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
} }
} }
ol.endDescTable(); ol.endDescTable();
ol.endDescList(); ol.endParamList();
} }
if (isEnumerate()) if (isEnumerate())
...@@ -1258,12 +1256,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1258,12 +1256,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if (first) if (first)
{ {
//ol.newParagraph(); //ol.newParagraph();
ol.startDescList(BaseOutputDocInterface::EnumValues); ol.startSimpleSect(BaseOutputDocInterface::EnumValues,0,0,theTranslator->trEnumerationValues()+": ");
parseText(ol,theTranslator->trEnumerationValues());
ol.docify(":");
ol.endDescTitle();
ol.writeDescItem(); ol.writeDescItem();
//ol.startItemList();
ol.startDescTable(); ol.startDescTable();
} }
...@@ -1312,7 +1306,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1312,7 +1306,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
{ {
//ol.endItemList(); //ol.endItemList();
ol.endDescTable(); ol.endDescTable();
ol.endDescList(); ol.endSimpleSect();
ol.writeChar('\n'); ol.writeChar('\n');
} }
} }
...@@ -1457,14 +1451,11 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1457,14 +1451,11 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
// write the list of examples that use this member // write the list of examples that use this member
if (hasExamples()) if (hasExamples())
{ {
ol.startDescList(BaseOutputDocInterface::Examples); ol.startSimpleSect(BaseOutputDocInterface::Examples,0,0,theTranslator->trExamples()+": ");
parseText(ol,theTranslator->trExamples()+": ");
//ol.writeBoldString("Examples: ");
ol.endDescTitle();
ol.writeDescItem(); ol.writeDescItem();
writeExample(ol,getExamples()); writeExample(ol,getExamples());
//ol.endDescItem(); //ol.endDescItem();
ol.endDescList(); ol.endSimpleSect();
} }
// write reference to the source // write reference to the source
writeSourceDef(ol,cname); writeSourceDef(ol,cname);
...@@ -1472,6 +1463,10 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1472,6 +1463,10 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
writeSourceReffedBy(ol,cname); writeSourceReffedBy(ol,cname);
writeInlineCode(ol,cname); writeInlineCode(ol,cname);
ol.disableAllBut(OutputGenerator::RTF);
ol.newParagraph();
ol.enableAll();
ol.endIndent(); ol.endIndent();
// enable LaTeX again // enable LaTeX again
//if (Config_getBool("EXTRACT_ALL") && !hasDocs) ol.enable(OutputGenerator::Latex); //if (Config_getBool("EXTRACT_ALL") && !hasDocs) ol.enable(OutputGenerator::Latex);
......
...@@ -226,7 +226,10 @@ class BaseOutputDocInterface ...@@ -226,7 +226,10 @@ class BaseOutputDocInterface
virtual void writeCCedil(char) = 0; virtual void writeCCedil(char) = 0;
virtual void startDescList(SectionTypes t) = 0; virtual void startDescList(SectionTypes t) = 0;
virtual void endDescList() = 0; virtual void endDescList() = 0;
virtual void startParamList(ParamListTypes t) = 0; virtual void startSimpleSect(SectionTypes t,const char *file,
const char *anchor,const char *title) = 0;
virtual void endSimpleSect() = 0;
virtual void startParamList(ParamListTypes t,const char *title) = 0;
virtual void endParamList() = 0; virtual void endParamList() = 0;
virtual void endDescTitle() = 0; virtual void endDescTitle() = 0;
virtual void writeDescItem() = 0; virtual void writeDescItem() = 0;
......
...@@ -261,7 +261,6 @@ FORALL1(int a1,a1) ...@@ -261,7 +261,6 @@ FORALL1(int a1,a1)
FORALL1(DotClassGraph &a1,a1) FORALL1(DotClassGraph &a1,a1)
FORALL1(DotInclDepGraph &a1,a1) FORALL1(DotInclDepGraph &a1,a1)
FORALL1(DotGfxHierarchyTable &a1,a1) FORALL1(DotGfxHierarchyTable &a1,a1)
FORALL1(ParamListTypes a1,a1)
FORALL1(SectionTypes a1,a1) FORALL1(SectionTypes a1,a1)
#if defined(HAS_BOOL_TYPE) || defined(Q_HAS_BOOL_TYPE) #if defined(HAS_BOOL_TYPE) || defined(Q_HAS_BOOL_TYPE)
FORALL1(bool a1,a1) FORALL1(bool a1,a1)
...@@ -270,6 +269,7 @@ FORALL2(bool a1,bool a2,a1,a2) ...@@ -270,6 +269,7 @@ FORALL2(bool a1,bool a2,a1,a2)
FORALL4(const char *a1,const char *a2,const char *a3,bool a4,a1,a2,a3,a4) FORALL4(const char *a1,const char *a2,const char *a3,bool a4,a1,a2,a3,a4)
#endif #endif
FORALL2(int a1,bool a2,a1,a2) FORALL2(int a1,bool a2,a1,a2)
FORALL2(ParamListTypes a1,const char *a2,a1,a2)
FORALL1(IndexSections a1,a1) FORALL1(IndexSections a1,a1)
FORALL2(const char *a1,const char *a2,a1,a2) FORALL2(const char *a1,const char *a2,a1,a2)
FORALL2(const char *a1,bool a2,a1,a2) FORALL2(const char *a1,bool a2,a1,a2)
...@@ -277,6 +277,7 @@ FORALL3(ClassDiagram &a1,const char *a2,const char *a3,a1,a2,a3) ...@@ -277,6 +277,7 @@ FORALL3(ClassDiagram &a1,const char *a2,const char *a3,a1,a2,a3)
FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3) FORALL3(const char *a1,const char *a2,const char *a3,a1,a2,a3)
FORALL3(const char *a1,const char *a2,bool a3,a1,a2,a3) FORALL3(const char *a1,const char *a2,bool a3,a1,a2,a3)
FORALL3(uchar a1,uchar a2,uchar a3,a1,a2,a3) FORALL3(uchar a1,uchar a2,uchar a3,a1,a2,a3)
FORALL4(SectionTypes a1,const char *a2,const char *a3,const char *a4,a1,a2,a3,a4)
FORALL4(const char *a1,const char *a2,const char *a3,const char *a4,a1,a2,a3,a4) FORALL4(const char *a1,const char *a2,const char *a3,const char *a4,a1,a2,a3,a4)
FORALL4(const char *a1,const char *a2,const char *a3,int a4,a1,a2,a3,a4) FORALL4(const char *a1,const char *a2,const char *a3,int a4,a1,a2,a3,a4)
......
...@@ -331,8 +331,13 @@ class OutputList : public OutputDocInterface ...@@ -331,8 +331,13 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startDescList,t); } { forall(&OutputGenerator::startDescList,t); }
void endDescList() void endDescList()
{ forall(&OutputGenerator::endDescList); } { forall(&OutputGenerator::endDescList); }
void startParamList(ParamListTypes t) void startSimpleSect(SectionTypes t,const char *file,const char *anchor,
{ forall(&OutputGenerator::startParamList,t); } const char *title)
{ forall(&OutputGenerator::startSimpleSect,t,file,anchor,title); }
void endSimpleSect()
{ forall(&OutputGenerator::endSimpleSect); }
void startParamList(ParamListTypes t,const char *title)
{ forall(&OutputGenerator::startParamList,t,title); }
void endParamList() void endParamList()
{ forall(&OutputGenerator::endParamList); } { forall(&OutputGenerator::endParamList); }
void endDescTitle() void endDescTitle()
...@@ -489,7 +494,6 @@ class OutputList : public OutputDocInterface ...@@ -489,7 +494,6 @@ class OutputList : public OutputDocInterface
FORALLPROTO1(DotClassGraph &); FORALLPROTO1(DotClassGraph &);
FORALLPROTO1(DotInclDepGraph &); FORALLPROTO1(DotInclDepGraph &);
FORALLPROTO1(DotGfxHierarchyTable &); FORALLPROTO1(DotGfxHierarchyTable &);
FORALLPROTO1(ParamListTypes);
FORALLPROTO1(SectionTypes); FORALLPROTO1(SectionTypes);
#if defined(HAS_BOOL_TYPE) || defined(Q_HAS_BOOL_TYPE) #if defined(HAS_BOOL_TYPE) || defined(Q_HAS_BOOL_TYPE)
FORALLPROTO1(bool); FORALLPROTO1(bool);
...@@ -498,12 +502,14 @@ class OutputList : public OutputDocInterface ...@@ -498,12 +502,14 @@ class OutputList : public OutputDocInterface
FORALLPROTO4(const char *,const char *,const char *,int); FORALLPROTO4(const char *,const char *,const char *,int);
#endif #endif
FORALLPROTO2(int,bool); FORALLPROTO2(int,bool);
FORALLPROTO2(ParamListTypes,const char *);
FORALLPROTO2(const char *,const char *); FORALLPROTO2(const char *,const char *);
FORALLPROTO2(const char *,bool); FORALLPROTO2(const char *,bool);
FORALLPROTO3(const char *,const char *,bool); FORALLPROTO3(const char *,const char *,bool);
FORALLPROTO3(uchar,uchar,uchar); FORALLPROTO3(uchar,uchar,uchar);
FORALLPROTO3(const char *,const char *,const char *); FORALLPROTO3(const char *,const char *,const char *);
FORALLPROTO3(ClassDiagram &,const char *,const char *); FORALLPROTO3(ClassDiagram &,const char *,const char *);
FORALLPROTO4(SectionTypes,const char *,const char *,const char *);
FORALLPROTO4(const char *,const char *,const char *,const char *); FORALLPROTO4(const char *,const char *,const char *,const char *);
FORALLPROTO4(const char *,const char *,const char *,bool); FORALLPROTO4(const char *,const char *,const char *,bool);
......
...@@ -502,7 +502,8 @@ bool StyleData::setStyle(const char* s, const char* styleName) ...@@ -502,7 +502,8 @@ bool StyleData::setStyle(const char* s, const char* styleName)
static const QRegExp subgroup("^{[^}]*}\\s*"); static const QRegExp subgroup("^{[^}]*}\\s*");
static const QRegExp any_clause("^\\\\[a-z][a-z0-9-]*\\s*"); static const QRegExp any_clause("^\\\\[a-z][a-z0-9-]*\\s*");
int len; int len = 0; // length of a particular RTF formatting control
int ref_len = 0; // length of the whole formatting section of a style
int start = s_clause.match(s, 0, &len); int start = s_clause.match(s, 0, &len);
if (start < 0) if (start < 0)
{ {
...@@ -514,6 +515,7 @@ bool StyleData::setStyle(const char* s, const char* styleName) ...@@ -514,6 +515,7 @@ bool StyleData::setStyle(const char* s, const char* styleName)
// search for the end of pure formatting codes // search for the end of pure formatting codes
const char* end = s + len; const char* end = s + len;
ref_len = len;
bool haveNewDefinition = TRUE; bool haveNewDefinition = TRUE;
for(;;) for(;;)
{ {
...@@ -523,7 +525,10 @@ bool StyleData::setStyle(const char* s, const char* styleName) ...@@ -523,7 +525,10 @@ bool StyleData::setStyle(const char* s, const char* styleName)
if (0 != subgroup.match(end, 0, &len)) if (0 != subgroup.match(end, 0, &len))
break; break;
else else
{
end += len; end += len;
ref_len += len;
}
} }
else if (*end == '\\') else if (*end == '\\')
{ {
...@@ -534,6 +539,7 @@ bool StyleData::setStyle(const char* s, const char* styleName) ...@@ -534,6 +539,7 @@ bool StyleData::setStyle(const char* s, const char* styleName)
if (0 != any_clause.match(end, 0, &len)) if (0 != any_clause.match(end, 0, &len))
break; break;
end += len; end += len;
ref_len += len;
} }
else if (*end == 0) else if (*end == 0)
{ // no style-definition part, keep default value { // no style-definition part, keep default value
...@@ -544,8 +550,9 @@ bool StyleData::setStyle(const char* s, const char* styleName) ...@@ -544,8 +550,9 @@ bool StyleData::setStyle(const char* s, const char* styleName)
break; break;
} }
delete[] reference; delete[] reference;
reference = new char[len + 1]; reference = new char[ref_len + 1];
memcpy(reference, s, len); reference[len] = 0; memcpy(reference, s, ref_len);
reference[ref_len] = 0;
if (haveNewDefinition) if (haveNewDefinition)
{ {
delete[] definition; delete[] definition;
...@@ -2047,24 +2054,6 @@ void RTFGenerator::endDescList() ...@@ -2047,24 +2054,6 @@ void RTFGenerator::endDescList()
t << "}"; t << "}";
} }
void RTFGenerator::startParamList(ParamListTypes)
{
DBG_RTF(t << "{\\comment (startParamList)}" << endl)
t << "{"; // ends at endParamList
t << "{"; // ends at endDescTitle
startBold();
newParagraph();
}
void RTFGenerator::endParamList()
{
DBG_RTF(t << "{\\comment (endParamList)}" << endl)
newParagraph();
decrementIndentLevel();
m_omitParagraph = TRUE;
t << "}";
}
void RTFGenerator::startSection(const char *,const char *title,bool sub) void RTFGenerator::startSection(const char *,const char *title,bool sub)
{ {
...@@ -2896,3 +2885,58 @@ void RTFGenerator::endMemberGroup(bool hasHeader) ...@@ -2896,3 +2885,58 @@ void RTFGenerator::endMemberGroup(bool hasHeader)
t << "}"; t << "}";
} }
void RTFGenerator::startSimpleSect(SectionTypes,const char *file,const char *anchor,const char *title)
{
DBG_RTF(t << "{\\comment (startSimpleSect)}" << endl)
t << "{"; // ends at endDescList
t << "{"; // ends at endDescTitle
startBold();
newParagraph();
if (file)
{
writeObjectLink(0,file,anchor,title);
}
else
{
docify(title);
}
endBold();
t << "}";
newParagraph();
incrementIndentLevel();
t << Rtf_Style_Reset << Rtf_DList_DepthStyle();
}
void RTFGenerator::endSimpleSect()
{
DBG_RTF(t << "{\\comment (endSimpleSect)}" << endl)
newParagraph();
decrementIndentLevel();
m_omitParagraph = TRUE;
t << "}";
}
void RTFGenerator::startParamList(ParamListTypes,const char *title)
{
DBG_RTF(t << "{\\comment (startParamList)}" << endl)
t << "{"; // ends at endParamList
t << "{"; // ends at endDescTitle
startBold();
newParagraph();
docify(title);
endBold();
t << "}";
newParagraph();
incrementIndentLevel();
t << Rtf_Style_Reset << Rtf_DList_DepthStyle();
}
void RTFGenerator::endParamList()
{
DBG_RTF(t << "{\\comment (endParamList)}" << endl)
newParagraph();
decrementIndentLevel();
m_omitParagraph = TRUE;
t << "}";
}
...@@ -177,7 +177,9 @@ class RTFGenerator : public OutputGenerator ...@@ -177,7 +177,9 @@ class RTFGenerator : public OutputGenerator
void endMemberDescription(); void endMemberDescription();
void startDescList(SectionTypes); void startDescList(SectionTypes);
void endDescList(); void endDescList();
void startParamList(ParamListTypes); void startSimpleSect(SectionTypes,const char *,const char *,const char *);
void endSimpleSect();
void startParamList(ParamListTypes,const char *);
void endParamList(); void endParamList();
void endDescTitle(); void endDescTitle();
void writeDescItem(); void writeDescItem();
......
...@@ -445,7 +445,7 @@ static int yyread(char *buf,int max_size) ...@@ -445,7 +445,7 @@ static int yyread(char *buf,int max_size)
%} %}
CMD ("\\"|"@") CMD ("\\"|"@")
SECTIONCMD {CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"ingroup"|"latexonly"|"htmlonly"|"{"|"verbatim"|"dotfile") SECTIONCMD {CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"ingroup"|"latexonly"|"htmlonly"|"{"|"verbatim"|"dotfile"|"defgroup"|"addtogroup"|"weakgroup")
BN [ \t\n\r] BN [ \t\n\r]
BL [ \t\r]*"\n" BL [ \t\r]*"\n"
B [ \t] B [ \t]
...@@ -1043,7 +1043,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1043,7 +1043,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
lineCount(); lineCount();
QCString scope=yytext; QCString scope=yytext;
current->name=removeRedundantWhiteSpace(substitute(scope,".","::")); current->name=removeRedundantWhiteSpace(substitute(scope,".","::"));
printf("import name = %s -> %s\n",yytext,current->name.data()); //printf("import name = %s -> %s\n",yytext,current->name.data());
current->fileName = yyFileName; current->fileName = yyFileName;
current->section=Entry::USINGDECL_SEC; current->section=Entry::USINGDECL_SEC;
current_root->addSubEntry(current); current_root->addSubEntry(current);
......
...@@ -50,7 +50,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_2_7 ...@@ -50,7 +50,7 @@ class TranslatorSpanish : public TranslatorAdapter_1_2_7
*/ */
virtual QCString latexLanguageSupportCommand() virtual QCString latexLanguageSupportCommand()
{ {
return ""; return "\\usepackage[spanish]{babel}";
} }
/*! return the language charset. This will be used for the HTML output */ /*! return the language charset. This will be used for the HTML output */
......
...@@ -424,7 +424,20 @@ class XMLGenerator : public OutputDocInterface ...@@ -424,7 +424,20 @@ class XMLGenerator : public OutputDocInterface
endNestedPar(); endNestedPar();
m_t << "</simplesect>"; m_t << "</simplesect>";
} }
void startParamList(ParamListTypes t) void startSimpleSect(SectionTypes st,const char *,const char *,const char *)
{
XML_DB(("(startSimpleSect)\n"));
m_t << "<simplesect kind=\"" << sectionTypeToString(st) << "\">";
startNestedPar();
m_inParStack.top() = TRUE;
}
void endSimpleSect()
{
XML_DB(("(endSimpleSect)\n"));
endNestedPar();
m_t << "</simplesect>";
}
void startParamList(ParamListTypes t,const char *)
{ {
XML_DB(("(startParamList)\n")); XML_DB(("(startParamList)\n"));
startParMode(); startParMode();
...@@ -435,7 +448,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -435,7 +448,7 @@ class XMLGenerator : public OutputDocInterface
case RetVal: kind="retval"; break; case RetVal: kind="retval"; break;
case Exception: kind="exception"; break; case Exception: kind="exception"; break;
} }
m_t << "<parameterlist kind=\"" << kind << "\"><title>"; // non DocBook m_t << "<parameterlist kind=\"" << kind << "\">"; // non DocBook
startNestedPar(); startNestedPar();
m_inParStack.top() = TRUE; m_inParStack.top() = TRUE;
m_inParamList = TRUE; m_inParamList = TRUE;
......
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