Commit 6e92a0d3 authored by dimitri's avatar dimitri

Release-1.3.7-20040517

parent 53da6739
DOXYGEN Version 1.3.7
DOXYGEN Version 1.3.7-20040517
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (07 May 2004)
Dimitri van Heesch (17 May 2004)
DOXYGEN Version 1.3.7
DOXYGEN Version 1.3.7_20040517
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) (07 May 2004)
Dimitri van Heesch (dimitri@stack.nl) (17 May 2004)
1.3.7
1.3.7-20040517
......@@ -479,6 +479,7 @@ void ConfigFile::addDependency(QDict<QObject> *switches,
{
if (!dep.isEmpty())
{
//printf("ConfigFile::addDependency(%s)\n",name.data());
IInput *parent = m_inputWidgets->find(dep);
ASSERT(parent!=0);
IInput *child = m_inputWidgets->find(name);
......
......@@ -27,7 +27,7 @@ f_prefix=/usr/local
f_insttool=NO
f_english=NO
f_wizard=NO
f_langs=nl,se,cz,fr,it,de,jp,je,es,fi,ru,hr,pl,pt,hu,kr,ke,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca
f_langs=nl,se,cz,fr,it,de,jp,je,es,fi,ru,hr,pl,pt,hu,kr,ke,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca,lt
while test -n "$1"; do
case $1 in
......@@ -518,7 +518,7 @@ echo -n " Generating src/lang_cfg.h..."
echo $f_langs | $f_perl -e '@l=split(/,/,<STDIN>);
chomp @l;
@allowed=(NL,SE,CZ,FR,IT,DE,JP,JE,ES,FI,RU,HR,PL,PT,HU,KR,KE,RO,SI,CN,NO,BR,
DK,SK,UA,GR,TW,SR,CA);
DK,SK,UA,GR,TW,SR,CA,LT);
foreach my $elem (@l){
$elem =~ tr/a-z/A-Z/;
$r=0;
......
......@@ -252,10 +252,10 @@ followed by the descriptions of the tags grouped by category.
documentation generated by doxygen is written. Doxygen will use this
information to generate all constant output in the proper language.
The default language is English, other supported languages are:
Brazilian, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French,
German, Greek, Hungarian, Italian, Japanese, Korean, Norwegian, Polish,
Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish,
and Ukrainian.
Brazilian, Catalan, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French,
German, Greek, Hungarian, Italian, Japanese, Korean, Lithuanian, Norwegian,
Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
Swedish, and Ukrainian.
\anchor cfg_use_windows_encoding
<dt>\c USE_WINDOWS_ENCODING <dd>
......
......@@ -23,13 +23,13 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile).
Currently (version 1.3.6-20040427), 28 languages
Currently (version 1.3.7), 29 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish, French, German, Greek,
Hungarian, Italian, Japanese (+En), Korean (+En), Norwegian, Polish,
Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
Swedish, and Ukrainian..
Hungarian, Italian, Japanese (+En), Korean (+En), Lithuanian,
Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak,
Slovene, Spanish, Swedish, and Ukrainian..
The table of information related to the supported languages follows.
It is sorted by language alphabetically. The <b>Status</b> column
......@@ -164,6 +164,12 @@ when the translator was updated.
<td>&nbsp;</td>
<td>English based</td>
</tr>
<tr bgcolor="#ffffff">
<td>Lithuanian</td>
<td>Tomas Simonaitis<br>Mindaugas Radzius<br>Aidas Berukstis</td>
<td>haden@NOSPAM.homelan.lt<br>mindaugasradzius@NOSPAM.takas.lt<br>aidasber@NOSPAM.takas.lt</td>
<td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Norwegian</td>
<td>Lars Erik Jordet</td>
......@@ -288,6 +294,10 @@ when the translator was updated.
\hline
KoreanEn & see the Korean language & {\tt\tiny ~} & English based \\
\hline
Lithuanian & Tomas Simonaitis & {\tt\tiny haden@homelan.lt} & up-to-date \\
~ & Mindaugas Radzius & {\tt\tiny mindaugasradzius@takas.lt} & ~ \\
~ & Aidas Berukstis & {\tt\tiny aidasber@takas.lt} & ~ \\
\hline
Norwegian & Lars Erik Jordet & {\tt\tiny lej@circuitry.no} & 1.2.2 \\
\hline
Polish & Piotr Kaminski & {\tt\tiny Piotr.Kaminski@ctm.gdynia.pl} & 1.3 \\
......
......@@ -65,6 +65,11 @@ Kenji Nagamatsu: naga@joyful.club.ne.jp
TranslatorKorean
Richard Kim: ryk@dspwiz.com
TranslatorLithuanian
Tomas Simonaitis: haden@homelan.lt
Mindaugas Radzius: mindaugasradzius@takas.lt
Aidas Berukstis: aidasber@takas.lt
TranslatorNorwegian
Lars Erik Jordet: lej@circuitry.no
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3.7
Version: 1.3.7_20040517
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
This diff is collapsed.
......@@ -1356,7 +1356,6 @@ void Config::create()
"cause performance problems for the file system. \n",
FALSE
);
cb->addDependency("GENERATE_HTML");
ce = addEnum(
"OUTPUT_LANGUAGE",
"The OUTPUT_LANGUAGE tag is used to specify the language in which all \n"
......
......@@ -355,10 +355,6 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
//printf("Definition::writeSourceRef %d %p\n",bodyLine,bodyDef);
if (Config_getBool("SOURCE_BROWSER") && m_startBodyLine!=-1 && m_bodyDef)
{
ol.disable(OutputGenerator::RTF);
ol.newParagraph();
ol.enableAll();
QCString refText = theTranslator->trDefinedAtLineInSourceFile();
int lineMarkerPos = refText.find("@0");
int fileMarkerPos = refText.find("@1");
......@@ -462,11 +458,11 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName)
initParseCodeContext();
//printf("Read:\n`%s'\n\n",codeFragment.data());
if (definitionType()==TypeMember) setParameterList((MemberDef *)this);
ol.newParagraph();
ol.startCodeFragment();
parseCode(ol,scopeName,codeFragment,FALSE,0,
m_bodyDef,actualStart,actualEnd,TRUE);
ol.endCodeFragment();
ol.newParagraph();
}
}
ol.popGeneratorState();
......
......@@ -4807,7 +4807,8 @@ void DocRoot::parse()
DocNode *validatingParseDoc(const char *fileName,int startLine,
Definition *ctx,MemberDef *md,
const char *input,bool indexWords,
bool isExample, const char *exampleName)
bool isExample, const char *exampleName,
bool singleLine)
{
//printf("validatingParseDoc(%s,%s)\n",ctx?ctx->name().data():"<none>",
......@@ -4923,7 +4924,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
doctokenizerYYinit(input,g_fileName);
// build abstract syntax tree
DocRoot *root = new DocRoot;
DocRoot *root = new DocRoot(md!=0,singleLine);
root->parse();
if (Debug::isFlagSet(Debug::PrintTree))
......
......@@ -51,13 +51,16 @@ void initDocParser();
* search index.
* @param isExample TRUE if the documentation belongs to an example.
* @param exampleName Base name of the example file (0 if isExample is FALSE).
* @param singleLine Output should be presented on a single line, so without
* starting a new paragraph at the end.
* @returns Root node of the abstract syntax tree. Ownership of the
* pointer is handed over to the caller.
*/
DocNode *validatingParseDoc(const char *fileName,int startLine,
Definition *context, MemberDef *md,
const char *input,bool indexWords,
bool isExample,const char *exampleName=0);
bool isExample,const char *exampleName=0,
bool singleLine=FALSE);
/*! Main entry point for parsing simple text fragments. These
* fragments are limited to words, whitespace and symbols.
......@@ -1185,11 +1188,17 @@ class DocText : public CompAccept<DocText>, public DocNode
class DocRoot : public CompAccept<DocRoot>, public DocNode
{
public:
DocRoot() {}
DocRoot(bool indent,bool sl) : m_indent(indent), m_singleLine(sl) {}
Kind kind() const { return Kind_Root; }
DocNode *parent() const { return 0; }
void accept(DocVisitor *v) { CompAccept<DocRoot>::accept(this,v); }
void parse();
bool indent() const { return m_indent; }
bool singleLine() const { return m_singleLine; }
private:
bool m_indent;
bool m_singleLine;
};
......
......@@ -35,7 +35,7 @@
//--------------------------------------------------------------------
static const int maxCmdLine = 4096;
static const int maxCmdLine = 40960;
/*! mapping from protection levels to color names */
static const char *edgeColorMap[] =
......@@ -981,9 +981,10 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
f.close();
QCString dotArgs(maxCmdLine);
dotArgs.sprintf("-T%s \"%s\" -o \"%s\"",
imgExt.data(), dotName.data(),imgName.data());
//printf("Running: dot -T%s %s -o %s\n",imgExt.data(),dotName.data(),imgName.data());
dotArgs.sprintf("\"%s\" -T%s -o \"%s\" -Timap -o \"%s\"",
dotName.data(), imgExt.data(), imgName.data(), mapName.data());
//printf("Running: dot %s -T%s -o %s -Timap -o %s\n",
// dotName.data(),imgExt.data(),imgName.data(),mapName.data());
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{
err("Problems running dot. Check your installation!\n");
......@@ -991,14 +992,6 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
return;
}
checkDotResult(imgName);
dotArgs.sprintf("-Timap \"%s\" -o \"%s\"",dotName.data(),mapName.data());
//printf("Running: dot -Timap %s -o %s\n",dotName.data(),mapName.data());
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{
err("Problems running dot. Check your installation!\n");
out << "</table>" << endl;
return;
}
if (Config_getBool("DOT_CLEANUP")) thisDir.remove(dotName);
}
// write image and map in a table row
......@@ -1673,26 +1666,21 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
{
QCString dotArgs(maxCmdLine);
QCString imgName = baseName+"."+imgExt;
dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s\"",
imgExt.data(),baseName.data(),imgName.data());
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{
err("Error: Problems running dot. Check your installation!\n");
QDir::setCurrent(oldDir);
return baseName;
}
checkDotResult(imgName);
dotArgs.sprintf("\"%s.dot\" -T%s -o \"%s\"",
baseName.data(),imgExt.data(),imgName.data());
if (generateImageMap)
{
// run dot again to create an image map
dotArgs.sprintf("-Timap \"%s.dot\" -o \"%s.map\"",baseName.data(),baseName.data());
// run dot also to create an image map
dotArgs+=QCString(maxCmdLine).sprintf(" -Timap -o \"%s.map\"",
baseName.data());
}
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{
err("Error: Problems running dot. Check your installation!\n");
QDir::setCurrent(oldDir);
return baseName;
}
}
checkDotResult(imgName);
}
else if (format==EPS) // run dot to create a .eps image
{
......@@ -1942,30 +1930,21 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
// run dot to create a bitmap image
QCString dotArgs(maxCmdLine);
QCString imgName=baseName+"."+imgExt;
dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s\"",
imgExt.data(),baseName.data(),imgName.data());
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{
err("Problems running dot. Check your installation!\n");
QDir::setCurrent(oldDir);
return baseName;
}
checkDotResult(imgName);
dotArgs.sprintf("\"%s.dot\" -T%s -o \"%s\"",
baseName.data(),imgExt.data(),imgName.data());
if (generateImageMap)
{
// run dot again to create an image map
dotArgs.sprintf("-Timap \"%s.dot\" -o \"%s.map\"",
baseName.data(),baseName.data());
// run dot also to create an image map
dotArgs+=QCString(maxCmdLine).sprintf(" -Timap -o \"%s.map\"",
baseName.data());
}
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{
err("Problems running dot. Check your installation!\n");
QDir::setCurrent(oldDir);
return baseName;
}
//thisDir.remove(baseName+".map");
}
checkDotResult(imgName);
}
else if (format==EPS)
{
......@@ -2128,28 +2107,21 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format,
// run dot to create a bitmap image
QCString dotArgs(maxCmdLine);
QCString imgName=baseName+"."+imgExt;
dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s\"",
imgExt.data(),baseName.data(),imgName.data());
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{
err("Problems running dot. Check your installation!\n");
QDir::setCurrent(oldDir);
return baseName;
}
checkDotResult(imgName);
dotArgs.sprintf("\"%s.dot\" -T%s -o \"%s\"",
baseName.data(),imgExt.data(),imgName.data());
if (generateImageMap)
{
// run dot again to create an image map
dotArgs.sprintf("-Timap \"%s.dot\" -o \"%s.map\"",
baseName.data(),baseName.data());
// run dot also to create an image map
dotArgs+=QCString(maxCmdLine).sprintf(" -Timap -o \"%s.map\"",
baseName.data());
}
if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0)
{
err("Problems running dot. Check your installation!\n");
QDir::setCurrent(oldDir);
return baseName;
}
}
checkDotResult(imgName);
}
else if (format==EPS)
{
......
......@@ -1608,8 +1608,8 @@ static MemberDef *addVariableToFile(
if (
((nd==0 && md->getFileDef() &&
root->fileName==md->getFileDef()->absFilePath()
)
|| (nd!=0 && md->getNamespaceDef()==nd)
) // both variable names in the same file
|| (nd!=0 && md->getNamespaceDef()==nd) // both in same namespace
)
&& !md->isDefine() // function style #define's can be "overloaded" by typedefs or variables
)
......@@ -1658,15 +1658,17 @@ static MemberDef *addVariableToFile(
md->addSectionsToDefinition(root->anchors);
md->setFromAnonymousScope(fromAnnScope);
md->setFromAnonymousMember(fromAnnMemb);
//md->setIndentDepth(indentDepth);
md->setBodySegment(root->bodyLine,root->endBodyLine);
md->setInitializer(root->initializer);
md->setMaxInitLines(root->initLines);
md->setMemberGroupId(root->mGrpId);
md->setBodyDef(fd);
md->setDefinition(def);
md->enableCallGraph(root->callGraph);
md->setExplicitExternal(root->explicitExternal);
if (!root->explicitExternal)
{
md->setBodySegment(root->bodyLine,root->endBodyLine);
md->setBodyDef(fd);
}
addMemberToGroups(root,md);
md->setRefItems(root->sli);
......@@ -1956,7 +1958,7 @@ static void buildVarList(Entry *root)
int si=scope.find('@');
//int anonyScopes = 0;
bool added=FALSE;
if (si!=-1)
if (si!=-1) // anonymous scope
{
QCString pScope;
ClassDef *pcd=0;
......@@ -1994,19 +1996,6 @@ static void buildVarList(Entry *root)
//printf("Inserting member in global scope %s!\n",scope.data());
addVariableToFile(root,mtype,scope,name,FALSE,/*0,*/0);
}
//if (mtype==MemberDef::Typedef)
//{
// static QRegExp r("[a-z_A-Z][a-z_A-Z0-9]*");
// int i,l;
// if ((i=r.match(type,8,&l))!=-1)
// {
// //printf(">>> inserting typedef `%s'->`%s'\n",type.mid(i,l).data(),name.data());
// if (getClass(type.mid(i,l))!=0)
// {
// typedefDict.insert(name,new QCString(type.mid(i,l)));
// }
// }
//}
}
nextMember:
EntryListIterator eli(*root->sublist);
......@@ -3091,11 +3080,18 @@ static void findUsedClassesForClass(Entry *root,
{
//printf("Found used class %s\n",usedClassName.data());
// the name could be a type definition, resolve it
// TODO: recursive typedef resolution
QCString typeName = resolveTypeDef(masterCd,usedClassName);
//printf("Found resolved class %s\n",typeName.data());
//printf("*** Found resolved class %s for %s\n",typeName.data(),usedClassName.data());
if (!typeName.isEmpty()) // if we could resolve the typedef, use
// the result as the class name.
{
usedClassName=typeName;
}
int si=usedClassName.findRev("::");
int sp=usedClassName.find('<');
if (sp==-1) sp=0;
int si=usedClassName.findRev("::",sp);
if (si!=-1)
{
// replace any namespace aliases
......@@ -8382,6 +8378,7 @@ void generateOutput()
}
if (Config_getBool("GENERATE_HTML")) writeDoxFont(Config_getString("HTML_OUTPUT"));
if (Config_getBool("GENERATE_LATEX")) writeDoxFont(Config_getString("LATEX_OUTPUT"));
if (Config_getBool("GENERATE_RTF")) writeDoxFont(Config_getString("RTF_OUTPUT"));
//statistics();
......
......@@ -35,5 +35,6 @@ TARGET = doxygen
unix:TARGETDEPS = ../lib/libdoxygen.a ../lib/libdoxycfg.a
win32:TARGETDEPS = ..\lib\doxygen.lib ..\lib\doxycfg.lib
win32-g++:TARGETDEPS = ../lib/libdoxygen.a ../lib/libdoxycfg.a
win32-mingw:TARGETDEPS = ../lib/libdoxygen.a ../lib/libdoxycfg.a
OBJECTS_DIR = ../objects
......@@ -235,28 +235,31 @@ void FileDef::writeDocumentation(OutputList &ol)
<< "</filename>" << endl;
}
ol.startTextBlock();
if (Config_getBool("DETAILS_AT_TOP"))
{
ol.startTextBlock();
writeDetailedDocumentation(ol);
ol.newParagraph();
ol.endTextBlock();
}
else if (briefDescription())
else if (!briefDescription().isEmpty())
{
ol.parseDoc(briefFile(),briefLine(),this,0,briefDescription(),TRUE,FALSE);
ol.writeString(" \n");
//ol.writeString(" \n");
ol.disableAllBut(OutputGenerator::Html);
ol.startTextLink(0,"_details");
ol.parseText(theTranslator->trMore());
ol.endTextLink();
ol.enableAll();
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
ol.disable(OutputGenerator::RTF);
ol.newParagraph();
ol.enable(OutputGenerator::Man);
ol.popGeneratorState();
}
ol.writeSynopsis();
if (Config_getBool("SHOW_INCLUDE_FILES"))
if (Config_getBool("SHOW_INCLUDE_FILES") && includeList->count()>0)
{
ol.startTextBlock(TRUE);
QListIterator<IncludeInfo> ili(*includeList);
......@@ -323,12 +326,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if (isIDLorJava)
ol.docify(";");
ol.endTypewriter();
ol.disable(OutputGenerator::RTF);
ol.lineBreak();
ol.enableAll();
ol.disableAllBut(OutputGenerator::RTF);
ol.newParagraph();
ol.enableAll();
}
ol.endTextBlock();
}
......@@ -339,12 +337,14 @@ void FileDef::writeDocumentation(OutputList &ol)
DotInclDepGraph incDepGraph(this,Config_getInt("MAX_DOT_GRAPH_DEPTH"),FALSE);
if (!incDepGraph.isTrivial())
{
ol.startTextBlock();
ol.disable(OutputGenerator::Man);
ol.newParagraph();
ol.startInclDepGraph();
ol.parseText(theTranslator->trInclDepGraph(name()));
ol.endInclDepGraph(incDepGraph);
ol.enableAll();
ol.endTextBlock(TRUE);
}
//incDepGraph.writeGraph(Config_getString("HTML_OUTPUT"),fd->getOutputFileBase());
}
......@@ -355,12 +355,14 @@ void FileDef::writeDocumentation(OutputList &ol)
DotInclDepGraph incDepGraph(this,Config_getInt("MAX_DOT_GRAPH_DEPTH"),TRUE);
if (!incDepGraph.isTrivial())
{
ol.startTextBlock();
ol.disable(OutputGenerator::Man);
ol.newParagraph();
ol.startInclDepGraph();
ol.parseText(theTranslator->trInclByDepGraph());
ol.endInclDepGraph(incDepGraph);
ol.enableAll();
ol.endTextBlock(TRUE);
}
//incDepGraph.writeGraph(Config_getString("HTML_OUTPUT"),fd->getOutputFileBase());
}
......@@ -376,8 +378,6 @@ void FileDef::writeDocumentation(OutputList &ol)
ol.enableAll();
}
ol.endTextBlock();
ol.startMemberSections();
if (namespaceSDict->count()>0)
......
......@@ -249,6 +249,7 @@ void HtmlDocVisitor::visit(DocInclude *inc)
m_t << "<pre><div class=\"fragment\">";
parseCode(m_ci,inc->context(),inc->text().latin1(),inc->isExample(),inc->exampleFile());
m_t << "</div></pre>";
break;
case DocInclude::IncWithLines:
{
m_t << "<pre><div class=\"fragment\">";
......@@ -258,7 +259,6 @@ void HtmlDocVisitor::visit(DocInclude *inc)
m_t << "</div></pre>";
}
break;
break;
case DocInclude::DontInclude:
break;
case DocInclude::HtmlInclude:
......
......@@ -190,7 +190,7 @@ class HtmlGenerator : public OutputGenerator
void writeGraphicalHierarchy(DotGfxHierarchyTable &g);
void startTextBlock(bool) {}
void endTextBlock() {}
void endTextBlock(bool) {}
void lastIndexPage() {}
void startMemberDocPrefixItem();
......
......@@ -961,35 +961,6 @@ void writeFileIndex(OutputList &ol)
fullName.prepend(path);
}
// --------------- LaTeX/RTF only -------------------------
#if 0
if (doc)
{
ol.pushGeneratorState();
ol.disable(OutputGenerator::Html);
ol.writeStartAnnoItem("file",
fd->getOutputFileBase(),
path,
fd->name()
);
if (!fd->briefDescription().isEmpty())
{
ol.docify(" (");
parseDoc(ol,fd->absFilePath(),1,
0,0,
abbreviate(fd->briefDescription(),fd->name()));
ol.docify(")");
}
ol.writeEndAnnoItem(fd->getOutputFileBase());
ol.popGeneratorState();
}
#endif
// --------------------------------------------------------
// ----------------- HTML only ----------------------------
//ol.pushGeneratorState();
//ol.disableAllBut(OutputGenerator::Html);
//ol.writeListItem();
ol.startIndexKey();
ol.docify(path);
if (doc)
......@@ -1041,7 +1012,9 @@ void writeFileIndex(OutputList &ol)
fd,0,
abbreviate(fd->briefDescription(),fd->name()),
FALSE, // index words
FALSE // isExample
FALSE, // isExample
0, // example name
TRUE // single line
);
//ol.docify(")");
}
......
......@@ -27,3 +27,4 @@
#define LANG_TW
#define LANG_SR
#define LANG_CA
#define LANG_LT
......@@ -112,6 +112,9 @@
//#ifdef LANG_JS
//#include "translator_js.h"
//#endif
#ifdef LANG_LT
#include "translator_lt.h"
#endif
#endif
#define L_EQUAL(a) !stricmp(langName,a)
......@@ -307,6 +310,12 @@ bool setTranslator(const char *langName)
theTranslator=new TranslatorCatalan;
}
#endif
#ifdef LANG_LT
else if (L_EQUAL("lithuanian"))
{
theTranslator=new TranslatorLithuanian;
}
#endif
#endif // ENGLISH_ONLY
else // use the default language (i.e. english)
{
......
......@@ -266,7 +266,7 @@ class LatexGenerator : public OutputGenerator
void writeGraphicalHierarchy(DotGfxHierarchyTable &) {}
void startTextBlock(bool) {}
void endTextBlock() {}
void endTextBlock(bool) {}
void startMemberDocPrefixItem() {}
void endMemberDocPrefixItem() {}
......
......@@ -232,7 +232,7 @@ class ManGenerator : public OutputGenerator
void writeGraphicalHierarchy(DotGfxHierarchyTable &) {}
void startTextBlock(bool) {}
void endTextBlock() {}
void endTextBlock(bool) {}
void lastIndexPage() {}
void startMemberDocPrefixItem() {}
......
......@@ -1507,17 +1507,13 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if (!detailed.isEmpty())
{
ol.parseDoc(docFile(),docLine(),getOuterScope()?getOuterScope():container,this,detailed+"\n",TRUE,FALSE);
ol.pushGeneratorState();
if (!m_inbodyDocs.isEmpty())
{
ol.newParagraph();
ol.parseDoc(inbodyFile(),inbodyLine(),getOuterScope()?getOuterScope():container,this,m_inbodyDocs+"\n",TRUE,FALSE);
}
ol.disableAllBut(OutputGenerator::RTF);
ol.newParagraph();
ol.popGeneratorState();
}
else if(!brief.isEmpty() && (Config_getBool("REPEAT_BRIEF") ||
else if (!brief.isEmpty() && (Config_getBool("REPEAT_BRIEF") ||
!Config_getBool("BRIEF_MEMBER_DESC")))
{
if (!m_inbodyDocs.isEmpty())
......@@ -1525,10 +1521,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol.newParagraph();
ol.parseDoc(inbodyFile(),inbodyLine(),getOuterScope()?getOuterScope():container,this,m_inbodyDocs+"\n",TRUE,FALSE);
}
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::RTF);
ol.newParagraph();
ol.popGeneratorState();
}
......@@ -1678,9 +1670,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol.parseText(reimplFromLine.right(
reimplFromLine.length()-markerPos-2)); // text right from marker
ol.disableAllBut(OutputGenerator::RTF);
ol.newParagraph();
ol.enableAll();
}
else
{
......@@ -1761,9 +1751,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
index=newIndex+matchLen;
}
ol.parseText(reimplInLine.right(reimplInLine.length()-index));
ol.disableAllBut(OutputGenerator::RTF);
ol.newParagraph();
ol.enableAll();
}
}
// write the list of examples that use this member
......@@ -1781,10 +1769,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
writeSourceReffedBy(ol,cname);
writeInlineCode(ol,cname);
ol.disableAllBut(OutputGenerator::RTF);
ol.newParagraph();
ol.enableAll();
if ((m_hasCallGraph || Config_getBool("CALL_GRAPH"))
&& isFunction() && Config_getBool("HAVE_DOT")
)
......
......@@ -342,7 +342,7 @@ class OutputGenerator : public BaseOutputDocInterface
//virtual void endQuickIndexItem() = 0;
virtual void writeQuickLinks(bool compact,HighlightedItem hli) = 0;
virtual void startTextBlock(bool) = 0;
virtual void endTextBlock() = 0;
virtual void endTextBlock(bool) = 0;
virtual void lastIndexPage() = 0;
virtual void startMemberDocPrefixItem() = 0;
virtual void endMemberDocPrefixItem() = 0;
......
......@@ -132,7 +132,8 @@ void OutputList::popGeneratorState()
void OutputList::parseDoc(const char *fileName,int startLine,
Definition *ctx,MemberDef * md,
const QCString &docStr,bool indexWords,
bool isExample,const char *exampleName)
bool isExample,const char *exampleName,
bool singleLine)
{
int count=0;
if (docStr.isEmpty()) return;
......@@ -149,12 +150,14 @@ void OutputList::parseDoc(const char *fileName,int startLine,
if (docStr.at(docStr.length()-1)=='\n')
{
root = validatingParseDoc(fileName,startLine,
ctx,md,docStr,indexWords,isExample,exampleName);
ctx,md,docStr,indexWords,isExample,exampleName,
singleLine);
}
else
{
root = validatingParseDoc(fileName,startLine,
ctx,md,docStr+"\n",indexWords,isExample,exampleName);
ctx,md,docStr+"\n",indexWords,isExample,exampleName,
singleLine);
}
og=outputs->first();
......
......@@ -62,7 +62,8 @@ class OutputList : public OutputDocInterface
void parseDoc(const char *fileName,int startLine,
Definition *ctx,MemberDef *md,const QCString &docStr,
bool indexWords,bool isExample,const char *exampleName=0);
bool indexWords,bool isExample,const char *exampleName=0,
bool singleLine=FALSE);
void parseText(const QCString &textStr);
......@@ -321,8 +322,8 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::writeGraphicalHierarchy,g); }
void startTextBlock(bool dense=FALSE)
{ forall(&OutputGenerator::startTextBlock,dense); }
void endTextBlock()
{ forall(&OutputGenerator::endTextBlock); }
void endTextBlock(bool paraBreak=FALSE)
{ forall(&OutputGenerator::endTextBlock,paraBreak); }
void lastIndexPage()
{ forall(&OutputGenerator::lastIndexPage); }
void startMemberDocPrefixItem()
......
This diff is collapsed.
......@@ -154,6 +154,7 @@ class RTFDocVisitor : public DocVisitor
bool m_hide;
int m_indentLevel;
QStack<bool> m_enabled;
bool m_lastIsPara;
};
#endif
......@@ -37,8 +37,8 @@
#include "rtfdocvisitor.h"
#include "docparser.h"
//#define DBG_RTF(x) x;
#define DBG_RTF(x)
#define DBG_RTF(x) x;
//#define DBG_RTF(x)
static QCString dateToRTFDateString()
{
......@@ -1328,7 +1328,7 @@ void RTFGenerator::startTitle()
void RTFGenerator::startGroupHeader()
{
DBG_RTF(t <<"{\\comment startGroupHeader}" << endl)
newParagraph();
//newParagraph();
t << rtf_Style_Reset;
t << rtf_Style["Heading3"]->reference;
t << endl;
......@@ -1426,12 +1426,10 @@ void RTFGenerator::startIndent()
DBG_RTF(t << "{\\comment (startIndent) }" << endl)
t << "{" << endl;
t << rtf_Style_Reset << rtf_CList_DepthStyle() << endl;
//styleStack.push(style);
}
void RTFGenerator::endIndent()
{
//const char *style = /* rtf_CList_DepthStyle(); */
t << "}" << endl;
decrementIndentLevel();
}
......@@ -1762,14 +1760,14 @@ void RTFGenerator::startCodeFragment()
{
DBG_RTF(t << "{\\comment (startCodeFragment) }" << endl)
t << "{" << endl;
newParagraph();
//newParagraph();
t << rtf_Style_Reset << rtf_Code_DepthStyle();
//styleStack.push(rtf_Style_CodeExample);
}
void RTFGenerator::endCodeFragment()
{
newParagraph();
//newParagraph();
//styleStack.pop();
//printf("RTFGenerator::endCodeFrament() top=%s\n",styleStack.top());
//t << rtf_Style_Reset << styleStack.top() << endl;
......@@ -1967,9 +1965,9 @@ void RTFGenerator::startTextBlock(bool dense)
}
}
void RTFGenerator::endTextBlock()
void RTFGenerator::endTextBlock(bool paraBreak)
{
newParagraph();
if (paraBreak) newParagraph();
DBG_RTF(t << "{\\comment endTextBlock}" << endl)
t << "}" << endl;
//m_omitParagraph = TRUE;
......@@ -2448,3 +2446,27 @@ void RTFGenerator::printDoc(DocNode *n)
delete visitor;
}
void RTFGenerator::rtfwriteRuler_doubleline()
{
DBG_RTF(t << "{\\comment (rtfwriteRuler_doubleline)}" << endl)
t << "{\\pard\\widctlpar\\brdrb\\brdrdb\\brdrw15\\brsp20 \\adjustright \\par}" << endl;
}
void RTFGenerator::rtfwriteRuler_emboss()
{
DBG_RTF(t << "{\\comment (rtfwriteRuler_emboss)}" << endl)
t << "{\\pard\\widctlpar\\brdrb\\brdremboss\\brdrw15\\brsp20 \\adjustright \\par}" << endl;
}
void RTFGenerator::rtfwriteRuler_thick()
{
DBG_RTF(t << "{\\comment (rtfwriteRuler_thick)}" << endl)
t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw75\\brsp20 \\adjustright \\par}" << endl;
}
void RTFGenerator::rtfwriteRuler_thin()
{
DBG_RTF(t << "{\\comment (rtfwriteRuler_thin)}" << endl)
t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}" << endl;
}
......@@ -235,7 +235,7 @@ class RTFGenerator : public OutputGenerator
void endMemberGroup(bool);
void startTextBlock(bool dense);
void endTextBlock();
void endTextBlock(bool);
void lastIndexPage();
void startMemberDocPrefixItem() {}
......@@ -287,10 +287,10 @@ class RTFGenerator : public OutputGenerator
void beginRTFDocument();
void beginRTFChapter();
void beginRTFSection();
void rtfwriteRuler_doubleline() { t << "{\\pard\\widctlpar\\brdrb\\brdrdb\\brdrw15\\brsp20 \\adjustright \\par}" << endl; };
void rtfwriteRuler_emboss() { t << "{\\pard\\widctlpar\\brdrb\\brdremboss\\brdrw15\\brsp20 \\adjustright \\par}" << endl; };
void rtfwriteRuler_thick() { t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw75\\brsp20 \\adjustright \\par}" << endl; };
void rtfwriteRuler_thin() { t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}" << endl; };
void rtfwriteRuler_doubleline();
void rtfwriteRuler_emboss();
void rtfwriteRuler_thick();
void rtfwriteRuler_thin();
void writeRTFReference(const char *label);
char *getMultiByte(int c);
};
......
......@@ -58,6 +58,10 @@ Rtf_Style_Default rtf_Style_Default[] =
"\\s4\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid ",
"\\sbasedon0 \\snext0 heading 4;}{\\*\\cs10 \\additive Default Paragraph Font"
},
{ "Heading5",
"\\s5\\sb90\\sa30\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid ",
"\\sbasedon0 \\snext0 heading 5;}{\\*\\cs10 \\additive Default Paragraph Font"
},
{ "Title",
"\\s15\\qc\\sb240\\sa60\\widctlpar\\outlinelevel0\\adjustright \\b\\f1\\fs32\\kerning28\\cgrid ",
"\\sbasedon0 \\snext15 Title"
......
......@@ -18,7 +18,8 @@
#ifndef TRANSLATOR_CZ_H
#define TRANSLATOR_CZ_H
// $Id$
//
// The first translation from English to Czech was started by
// Vlastimil Havran (1999--2000). The prototype version of Czech strings
// with diacritics was implemented by Petr Prikryl (prikrylp@skil.cz),
......@@ -125,7 +126,9 @@
// 2002/10/15 - The new trEvents() and trEventDocumentation() implemented.
// 2003/04/28 - Five new methods "since 1.3" implemented.
// 2003/06/10 - Two new methods "since 1.3.1" implemented.
// 2003/08/13 - Four new "since 1.3.3" implemented.
// 2003/08/13 - Four new methods "since 1.3.3" implemented.
// 2004/02/26 - trLegendDocs() updated.
// 2004/02/27 - Text inside the trCallGraph() corrected.
// Todo
// ----
......@@ -1184,8 +1187,6 @@ class TranslatorCzech : public Translator
"/*! Tøída, u které došlo k oøezání grafu. Vztah dìdiènosti "
"je skryt. */\n"
"class Truncated : public Invisible { };\n\n"
"/* Tøída, která není dokumentována komentáøi programu doxygen. */\n"
"class Undocumented { };\n\n"
"/*! Bázová tøída dìdìná veøejnì (public inheritance). */\n"
"class PublicBase : public Truncated { };\n\n"
"/*! Bázová tøída, použitá pro chránìné dìdìní "
......@@ -1194,6 +1195,10 @@ class TranslatorCzech : public Translator
"/*! Bázová tøída, využitá pro privátní dìdìní "
"(private inheritance). */\n"
"class PrivateBase { };\n\n"
"/* Tøída, která není dokumentována komentáøi programu doxygen. */\n"
"class Undocumented { };\n\n"
"/*! Šablona tøídy. */\n"
"template<class T> class Templ { };\n\n"
"/*! Tøída, která je využívána tøídou Inherited. */\n"
"class Used { };\n\n"
"/*! Odvozená tøída, která rùzným zpùsobem dìdí z více bázových "
......@@ -1201,7 +1206,8 @@ class TranslatorCzech : public Translator
"class Inherited : public PublicBase,\n"
" protected ProtectedBase,\n"
" private PrivateBase,\n"
" public Undocumented\n"
" public Undocumented,\n"
" public Templ<int>\n"
"{\n"
" private:\n"
" Used *m_usedClass;\n"
......@@ -1223,7 +1229,7 @@ class TranslatorCzech : public Translator
"strukturu nebo tøídu, pro kterou\n"
"nejsou zobrazeny všechny vztahy dìdiènosti nebo obsažení. "
"Graf je oøezán v pøípadì, kdy jej\n"
"není možné umístit do vymezených hranic.\n"
"není možné umístit do vymezeného prostoru.\n"
"</ul>\n"
"Šipky (tj. hrany grafu) mají následující význam:\n"
"<ul>\n"
......@@ -1238,6 +1244,10 @@ class TranslatorCzech : public Translator
"nebo kdy je používána jinou tøídou. Je oznaèena identifikátorem "
"jedné nebo více promìných, pøes které\n"
"je tøída nebo struktura zpøístupnìna.\n"
"<li>Žlutá šipka kreslená èárkovanì vyjadøuje vztah mezi instancí šablony "
"a šablonou tøídy, na základì které byla\n"
"instance šablony vytvoøena. V popisu šipky jsou uvedeny pøíslušné"
" parametry šablony.\n"
"</ul>\n");
return decode(result);
......@@ -1597,7 +1607,7 @@ class TranslatorCzech : public Translator
/*! Put in front of the call graph for a function. */
virtual QCString trCallGraph()
{
return decode("Graf volání této funkce:");
return decode("Graf volání pro tuto funkci:");
}
//////////////////////////////////////////////////////////////////////////
......
This diff is collapsed.
......@@ -638,7 +638,7 @@ class TranslatorRussian : public Translator
* related classes
*/
virtual QCString trRelatedFunctionDocumentation()
{ return decode(" "
{ return decode(" "
" "); }
//////////////////////////////////////////////////////////////////////////
......
......@@ -60,7 +60,16 @@ extern char **environ;
//------------------------------------------------------------------------
static QCache<ClassDef*> g_lookupCache(20000,20000);
struct LookupInfo
{
LookupInfo(ClassDef *cd=0,MemberDef *td=0,QCString ts="")
: classDef(cd), typeDef(td), templSpec(ts) {}
ClassDef *classDef;
MemberDef *typeDef;
QCString templSpec;
};
static QCache<LookupInfo> g_lookupCache(20000,20000);
// object that automatically initializes the cache at startup
class CacheInitializer
......@@ -448,7 +457,6 @@ int guessSection(const char *name)
return 0;
}
// TODO: remove this!
QCString resolveTypeDef(Definition *context,const QCString &qualifiedName,
Definition **typedefContext)
{
......@@ -639,6 +647,7 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,QCString *pTemplSpe
}
type=type.stripWhiteSpace(); // strip leading and trailing whitespace
ClassDef *result = getResolvedClassRec(md->getOuterScope(),fileScope,type,0,0);
//printf("type=%s result=%p\n",type.data(),result);
if (result==0)
{
// try unspecialized version if type is template
......@@ -1025,16 +1034,21 @@ ClassDef *getResolvedClassRec(Definition *scope,
// scope, the name to search for and the explicit scope prefix. The speedup
// achieved by this simple cache can be enormous.
QCString key=scope->name()+"+"+name+"+"+explicitScopePart;
ClassDef **pval=g_lookupCache.find(key);
LookupInfo *pval=g_lookupCache.find(key);
//printf("Searching for %s result=%p\n",key.data(),pval);
if (pval)
{
return *pval;
if (pTemplSpec) *pTemplSpec=pval->templSpec;
if (pTypeDef) *pTypeDef=pval->typeDef;
//printf("] cachedMatch=%s\n",
// pval->classDef?pval->classDef->name().data():"<none>");
//if (pTemplSpec) printf("templSpec=%s\n",pTemplSpec->data());
return pval->classDef;
}
else // not found yet; we already add a 0 to avoid the possibility of
// endless recursion.
{
g_lookupCache.insert(key,new ClassDef*(0));
g_lookupCache.insert(key,new LookupInfo);
}
ClassDef *bestMatch=0;
......@@ -1114,14 +1128,17 @@ ClassDef *getResolvedClassRec(Definition *scope,
pval=g_lookupCache.find(key);
if (pval)
{
*pval=bestMatch;
pval->classDef = bestMatch;
pval->typeDef = bestTypedef;
pval->templSpec = bestTemplSpec;
}
else
{
g_lookupCache.insert(key,new ClassDef*(bestMatch));
g_lookupCache.insert(key,new LookupInfo(bestMatch,bestTypedef,bestTemplSpec));
}
//printf("] bestMatch=%s distance=%d\n",
// bestMatch?bestMatch->name().data():"<none>",minDistance);
//if (pTemplSpec) printf("templSpec=%s\n",pTemplSpec->data());
return bestMatch;
}
......
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