summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2018-06-24 08:57:30 (GMT)
committerGitHub <noreply@github.com>2018-06-24 08:57:30 (GMT)
commit56c60e84e6dd6d7e4e7774be24d1402782fd3230 (patch)
tree4341e26d4bf860fec4c5784b042a5c9130ae2da4 /src
parentba30b13cfd4910a5913f080a039fc429ec8a7e3f (diff)
parent154e877cc2e8b10091d7e0068b6f6d5793cd29f3 (diff)
downloadDoxygen-56c60e84e6dd6d7e4e7774be24d1402782fd3230.zip
Doxygen-56c60e84e6dd6d7e4e7774be24d1402782fd3230.tar.gz
Doxygen-56c60e84e6dd6d7e4e7774be24d1402782fd3230.tar.bz2
Merge branch 'master' into feature/bug_tableofcontents_latex
Diffstat (limited to 'src')
-rw-r--r--src/clangparser.cpp1
-rw-r--r--src/classdef.cpp22
-rw-r--r--src/code.l3
-rw-r--r--src/commentcnv.l2
-rw-r--r--src/commentscan.l2
-rw-r--r--src/config.xml9
-rw-r--r--src/context.cpp18
-rw-r--r--src/docparser.cpp42
-rw-r--r--src/dot.cpp17
-rw-r--r--src/doxygen.cpp60
-rw-r--r--src/doxygen.h2
-rw-r--r--src/doxygen.md2
-rw-r--r--src/filedef.cpp1
-rw-r--r--src/formula.cpp3
-rw-r--r--src/fortrancode.l65
-rw-r--r--src/fortranscanner.l112
-rw-r--r--src/ftvhelp.cpp2
-rw-r--r--src/htmlgen.cpp31
-rw-r--r--src/htmlgen.h5
-rw-r--r--src/index.cpp16
-rw-r--r--src/latexdocvisitor.cpp71
-rw-r--r--src/latexgen.cpp115
-rw-r--r--src/latexgen.h6
-rw-r--r--src/layout.cpp28
-rw-r--r--src/mangen.cpp8
-rw-r--r--src/mangen.h5
-rw-r--r--src/markdown.cpp13
-rw-r--r--src/memberdef.cpp4
-rw-r--r--src/outputgen.h5
-rw-r--r--src/outputlist.h10
-rw-r--r--src/pre.l2
-rw-r--r--src/pycode.l30
-rw-r--r--src/pyscanner.l1
-rw-r--r--src/rtfdocvisitor.cpp18
-rw-r--r--src/rtfgen.cpp53
-rw-r--r--src/rtfgen.h9
-rw-r--r--src/scanner.l6
-rw-r--r--src/translator.h46
-rw-r--r--src/translator_adapter.h35
-rw-r--r--src/translator_am.h4
-rw-r--r--src/translator_br.h124
-rw-r--r--src/translator_cn.h14
-rw-r--r--src/translator_cz.h10
-rw-r--r--src/translator_de.h134
-rw-r--r--src/translator_dk.h3
-rw-r--r--src/translator_en.h129
-rw-r--r--src/translator_es.h2
-rw-r--r--src/translator_fr.h2
-rw-r--r--src/translator_gr.h6
-rw-r--r--src/translator_it.h2
-rw-r--r--src/translator_je.h14
-rw-r--r--src/translator_jp.h14
-rw-r--r--src/translator_ke.h12
-rw-r--r--src/translator_kr.h14
-rw-r--r--src/translator_lv.h2
-rw-r--r--src/translator_nl.h128
-rw-r--r--src/translator_no.h3
-rw-r--r--src/translator_pl.h10
-rw-r--r--src/translator_pt.h132
-rw-r--r--src/translator_ro.h2
-rw-r--r--src/translator_ru.h2
-rw-r--r--src/translator_sc.h5
-rw-r--r--src/translator_si.h2
-rw-r--r--src/translator_sk.h12
-rw-r--r--src/translator_sv.h2
-rw-r--r--src/translator_tw.h14
-rw-r--r--src/translator_vi.h16
-rw-r--r--src/util.cpp30
-rw-r--r--src/vhdlcode.l68
-rw-r--r--src/vhdldocgen.cpp181
-rw-r--r--src/vhdldocgen.h27
71 files changed, 1474 insertions, 526 deletions
diff --git a/src/clangparser.cpp b/src/clangparser.cpp
index 77151d6..2ea15ee 100644
--- a/src/clangparser.cpp
+++ b/src/clangparser.cpp
@@ -4,6 +4,7 @@
#if USE_LIBCLANG
#include <clang-c/Index.h>
+#include "clang/Tooling/CompilationDatabase.h"
#include "clang/Tooling/Tooling.h"
#include <qfileinfo.h>
#include <stdlib.h>
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 4ce48a7..4977760 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -440,7 +440,7 @@ void ClassDef::internalInsertMember(MemberDef *md,
if (getLanguage()==SrcLangExt_VHDL)
{
- QCString title=VhdlDocGen::trVhdlType(md->getMemberSpecifiers(),FALSE);
+ QCString title=theTranslator->trVhdlType(md->getMemberSpecifiers(),FALSE);
if (!m_impl->vhdlSummaryTitles.find(title))
{
m_impl->vhdlSummaryTitles.append(title,new QCString(title));
@@ -1882,7 +1882,7 @@ void ClassDef::writeDeclarationLink(OutputList &ol,bool &found,const char *heade
}
else if (lang==SrcLangExt_VHDL)
{
- ol.parseText(VhdlDocGen::trVhdlType(VhdlDocGen::ARCHITECTURE,FALSE));
+ ol.parseText(theTranslator->trVhdlType(VhdlDocGen::ARCHITECTURE,FALSE));
}
else
{
@@ -1935,21 +1935,7 @@ void ClassDef::writeDeclarationLink(OutputList &ol,bool &found,const char *heade
if (rootNode && !rootNode->isEmpty())
{
ol.startMemberDescription(anchor());
-
- ol.pushGeneratorState();
- ol.disableAll();
- ol.enable(OutputGenerator::RTF);
- ol.writeString("{");
- ol.popGeneratorState();
-
ol.writeDoc(rootNode,this,0);
-
- ol.pushGeneratorState();
- ol.disableAll();
- ol.enable(OutputGenerator::RTF);
- ol.writeString("\\par}");
- ol.popGeneratorState();
-
if (isLinkableInProject())
{
writeMoreLink(ol,anchor());
@@ -2122,7 +2108,7 @@ QCString ClassDef::title() const
}
else if (lang==SrcLangExt_VHDL)
{
- pageTitle = VhdlDocGen::getClassTitle(this)+" Reference";
+ pageTitle = theTranslator->trCustomReference(VhdlDocGen::getClassTitle(this));
}
else if (isJavaEnum())
{
@@ -2474,7 +2460,7 @@ void ClassDef::writeMemberList(OutputList &ol)
QStrList sl;
if (lang==SrcLangExt_VHDL)
{
- sl.append(VhdlDocGen::trVhdlType(md->getMemberSpecifiers())); //append vhdl type
+ sl.append(theTranslator->trVhdlType(md->getMemberSpecifiers(),TRUE)); //append vhdl type
}
else if (md->isFriend()) sl.append("friend");
else if (md->isRelated()) sl.append("related");
diff --git a/src/code.l b/src/code.l
index 74b360f..5c9e289 100644
--- a/src/code.l
+++ b/src/code.l
@@ -3573,6 +3573,9 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\"
endFontClass();
}
}
+<SkipComment>[^\*\n]+ {
+ g_code->codify(yytext);
+ }
<*>"/*" {
startFontClass("comment");
g_code->codify(yytext);
diff --git a/src/commentcnv.l b/src/commentcnv.l
index 89d2fea..10dab28 100644
--- a/src/commentcnv.l
+++ b/src/commentcnv.l
@@ -1068,7 +1068,7 @@ void convertCppComments(BufStr *inBuf,BufStr *outBuf,const char *fileName)
{
CondCtx *ctx = g_condStack.pop();
QCString sectionInfo = " ";
- if (ctx->sectionId!=" ") sectionInfo.sprintf(" with label %s ",ctx->sectionId.data());
+ if (ctx->sectionId!=" ") sectionInfo.sprintf(" with label '%s' ",ctx->sectionId.stripWhiteSpace().data());
warn(g_fileName,ctx->lineNr,"Conditional section%sdoes not have "
"a corresponding \\endcond command within this file.",sectionInfo.data());
}
diff --git a/src/commentscan.l b/src/commentscan.l
index 0db1bf8..67bd9b4 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -549,7 +549,7 @@ static void addXRefItem(const char *listName,const char *itemTitle,
if (docEntry->sli)
{
QListIterator<ListItemInfo> slii(*docEntry->sli);
- for (slii.toFirst();(lii=slii.current());++slii)
+ for (slii.toLast();(lii=slii.current());--slii)
{
if (qstrcmp(lii->type,listName)==0)
{
diff --git a/src/config.xml b/src/config.xml
index fa0ae26..2dcc0f4 100644
--- a/src/config.xml
+++ b/src/config.xml
@@ -2533,13 +2533,14 @@ EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
]]>
</docs>
</option>
- <option type='string' id='LATEX_CMD_NAME' format='file' defval='latex' depends='GENERATE_LATEX'>
+ <option type='string' id='LATEX_CMD_NAME' format='file' defval='' depends='GENERATE_LATEX'>
<docs>
<![CDATA[
The \c LATEX_CMD_NAME tag can be used to specify the \f$\mbox{\LaTeX}\f$ command name to be invoked.
- <br>Note that when enabling \ref cfg_use_pdflatex "USE_PDFLATEX" this option is only used for
- generating bitmaps for formulas in the HTML output, but not in the
- \c Makefile that is written to the output directory.
+ <br>Note that when not enabling \ref cfg_use_pdflatex "USE_PDFLATEX" the default is \c latex when
+ enabling \ref cfg_use_pdflatex "USE_PDFLATEX" the default is \c pdflatex and when in the later case
+ \c latex is chosen this is overwritten by \c pdflatex. For specific output languages the default can
+ have been set differently, this depends on the implementation of the output language.
]]>
</docs>
</option>
diff --git a/src/context.cpp b/src/context.cpp
index 4584920..c9a6bb3 100644
--- a/src/context.cpp
+++ b/src/context.cpp
@@ -617,7 +617,7 @@ class TranslateContext::Private
TemplateVariant classes() const
{
return theTranslator->trClasses();
- // TODO: VHDL: trVhdlType(VhdlDocGen::ENTITY,FALSE)
+ // TODO: VHDL: theTranslator->trVhdlType(VhdlDocGen::ENTITY,FALSE)
// TODO: Fortran: trDataTypes()
}
TemplateVariant classList() const
@@ -927,8 +927,8 @@ class TranslateContext::Private
{
static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
- return fortranOpt ? theTranslator->trSubprograms() :
- vhdlOpt ? VhdlDocGen::trFunctionAndProc() :
+ return fortranOpt ? theTranslator->trSubprograms() :
+ vhdlOpt ? theTranslator->trFunctionAndProc() :
theTranslator->trFunctions();
}
TemplateVariant variables() const
@@ -2816,7 +2816,7 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
QCString title = theTranslator->trFunctions();
SrcLangExt lang = m_namespaceDef->getLanguage();
if (lang==SrcLangExt_Fortran) title=theTranslator->trSubprograms();
- else if (lang==SrcLangExt_VHDL) title=VhdlDocGen::trFunctionAndProc();
+ else if (lang==SrcLangExt_VHDL) title=theTranslator->trFunctionAndProc();
return getMemberList(getCache().functions,MemberListType_decFuncMembers,title);
}
TemplateVariant variables() const
@@ -3249,7 +3249,7 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
QCString title = theTranslator->trFunctions();
SrcLangExt lang = m_fileDef->getLanguage();
if (lang==SrcLangExt_Fortran) title=theTranslator->trSubprograms();
- else if (lang==SrcLangExt_VHDL) title=VhdlDocGen::trFunctionAndProc();
+ else if (lang==SrcLangExt_VHDL) title=theTranslator->trFunctionAndProc();
return getMemberList(getCache().functions,MemberListType_decFuncMembers,title);
}
TemplateVariant variables() const
@@ -5489,7 +5489,7 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
QCString title = theTranslator->trFunctions();
SrcLangExt lang = m_groupDef->getLanguage();
if (lang==SrcLangExt_Fortran) title=theTranslator->trSubprograms();
- else if (lang==SrcLangExt_VHDL) title=VhdlDocGen::trFunctionAndProc();
+ else if (lang==SrcLangExt_VHDL) title=theTranslator->trFunctionAndProc();
return getMemberList(getCache().functions,MemberListType_decFuncMembers,title);
}
TemplateVariant variables() const
@@ -5828,7 +5828,7 @@ class ClassIndexContext::Private
}
else if (vhdlOpt)
{
- return VhdlDocGen::trDesignUnits();
+ return theTranslator->trDesignUnits();
}
else
{
@@ -6022,7 +6022,7 @@ class ClassHierarchyContext::Private
static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
if (vhdlOpt)
{
- return VhdlDocGen::trDesignUnitHierarchy();
+ return theTranslator->trDesignUnitHierarchy();
}
else
{
@@ -6780,7 +6780,7 @@ class ClassTreeContext::Private
}
else if (vhdlOpt)
{
- return VhdlDocGen::trDesignUnitList();
+ return theTranslator->trDesignUnitList();
}
else
{
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 215439a..205e818 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -3505,16 +3505,36 @@ DocHtmlCell::Alignment DocHtmlCell::alignment() const
{
HtmlAttribList attrs = attribs();
uint i;
- for (i=0; i<attrs.count(); ++i)
+ for (i=0; i<attrs.count(); ++i)
{
if (attrs.at(i)->name.lower()=="align")
{
- if (attrs.at(i)->value.lower()=="center")
+ if (attrs.at(i)->value.lower()=="center")
return Center;
- else if (attrs.at(i)->value.lower()=="right")
+ else if (attrs.at(i)->value.lower()=="right")
return Right;
else return Left;
}
+ else if (attrs.at(i)->name.lower()=="class")
+ {
+ if (attrs.at(i)->value.lower()=="markdowntableheadcenter")
+ return Center;
+ else if (attrs.at(i)->value.lower()=="markdowntableheadright")
+ return Right;
+ else if (attrs.at(i)->value.lower()=="markdowntableheadleft")
+ return Left;
+ else if (attrs.at(i)->value.lower()=="markdowntableheadnone")
+ return Center;
+ else if (attrs.at(i)->value.lower()=="markdowntablebodycenter")
+ return Center;
+ else if (attrs.at(i)->value.lower()=="markdowntablebodyright")
+ return Right;
+ else if (attrs.at(i)->value.lower()=="markdowntablebodyleft")
+ return Left;
+ else if (attrs.at(i)->value.lower()=="markdowntablebodynone")
+ return Left;
+ else return Left;
+ }
}
return Left;
}
@@ -5037,25 +5057,27 @@ void DocPara::handleIncludeOperator(const QCString &cmdName,DocIncOperator::Type
void DocPara::handleImage(const QCString &cmdName)
{
+ QCString saveCmdName = cmdName;
+
int tok=doctokenizerYYlex();
if (tok!=TK_WHITESPACE)
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"expected whitespace after %s command",
- qPrint(cmdName));
+ qPrint(saveCmdName));
return;
}
tok=doctokenizerYYlex();
if (tok!=TK_WORD && tok!=TK_LNKWORD)
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"unexpected token %s as the argument of %s",
- tokToString(tok),qPrint(cmdName));
+ tokToString(tok),qPrint(saveCmdName));
return;
}
tok=doctokenizerYYlex();
if (tok!=TK_WHITESPACE)
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"expected whitespace after %s command",
- qPrint(cmdName));
+ qPrint(saveCmdName));
return;
}
DocImage::Type t;
@@ -5066,9 +5088,9 @@ void DocPara::handleImage(const QCString &cmdName)
else if (imgType=="rtf") t=DocImage::Rtf;
else
{
- warn_doc_error(g_fileName,doctokenizerYYlineno,"image type %s specified as the first argument of "
- "%s is not valid",
- qPrint(imgType),qPrint(cmdName));
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"output format %s specified as the first argument of "
+ "%s command is not valid",
+ qPrint(imgType),qPrint(saveCmdName));
return;
}
doctokenizerYYsetStateFile();
@@ -5077,7 +5099,7 @@ void DocPara::handleImage(const QCString &cmdName)
if (tok!=TK_WORD)
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"unexpected token %s as the argument of %s",
- tokToString(tok),qPrint(cmdName));
+ tokToString(tok),qPrint(saveCmdName));
return;
}
HtmlAttribList attrList;
diff --git a/src/dot.cpp b/src/dot.cpp
index eeb8b8b..5adc2ab 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -1878,10 +1878,10 @@ void DotNode::writeBox(FTextStream &t,
<< m_url.right(m_url.length()-anchorPos) << "\"";
}
}
- if (!m_tooltip.isEmpty())
- {
- t << ",tooltip=\"" << escapeTooltip(m_tooltip) << "\"";
- }
+ }
+ if (!m_tooltip.isEmpty())
+ {
+ t << ",tooltip=\"" << escapeTooltip(m_tooltip) << "\"";
}
t << "];" << endl;
}
@@ -3483,9 +3483,10 @@ DotInclDepGraph::DotInclDepGraph(FileDef *fd,bool inverse)
m_inclDepFileName = fd->includeDependencyGraphFileName();
m_inclByDepFileName = fd->includedByDependencyGraphFileName();
QCString tmp_url=fd->getReference()+"$"+fd->getOutputFileBase();
+ QCString tooltip = fd->briefDescriptionAsTooltip();
m_startNode = new DotNode(m_curNodeNumber++,
fd->docName(),
- "",
+ tooltip,
tmp_url.data(),
TRUE // root node
);
@@ -3812,9 +3813,10 @@ DotCallGraph::DotCallGraph(MemberDef *md,bool inverse)
{
name = md->qualifiedName();
}
+ QCString tooltip = md->briefDescriptionAsTooltip();
m_startNode = new DotNode(m_curNodeNumber++,
linkToText(md->getLanguage(),name,FALSE),
- "",
+ tooltip,
uniqueId.data(),
TRUE // root node
);
@@ -4336,7 +4338,8 @@ DotGroupCollaboration::DotGroupCollaboration(GroupDef* gd)
{
QCString tmp_url = gd->getReference()+"$"+gd->getOutputFileBase();
m_usedNodes = new QDict<DotNode>(1009);
- m_rootNode = new DotNode(m_curNodeNumber++, gd->groupTitle(), "", tmp_url, TRUE );
+ QCString tooltip = gd->briefDescriptionAsTooltip();
+ m_rootNode = new DotNode(m_curNodeNumber++, gd->groupTitle(), tooltip, tmp_url, TRUE );
m_rootNode->markAsVisible();
m_usedNodes->insert(gd->name(), m_rootNode );
m_edges.setAutoDelete(TRUE);
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index f0140e0..d209379 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -9574,7 +9574,7 @@ int readDir(QFileInfo *fi,
if (fi->isSymLink())
{
dirName = resolveSymlink(dirName.data());
- if (dirName.isEmpty()) return 0; // recusive symlink
+ if (dirName.isEmpty()) return 0; // recursive symlink
if (g_pathsVisited.find(dirName)) return 0; // already visited path
g_pathsVisited.insert(dirName,(void*)0x8);
}
@@ -9752,14 +9752,17 @@ int readFileOrDirectory(const char *s,
//----------------------------------------------------------------------------
-void readFormulaRepository()
+void readFormulaRepository(QCString dir, bool cmp)
{
- QFile f(Config_getString(HTML_OUTPUT)+"/formula.repository");
+ static int current_repository = 0;
+ int new_repository = 0;
+ QFile f(dir+"/formula.repository");
if (f.open(IO_ReadOnly)) // open repository
{
msg("Reading formula repository...\n");
QTextStream t(&f);
QCString line;
+ Formula *f;
while (!t.eof())
{
line=t.readLine().utf8();
@@ -9773,14 +9776,42 @@ void readFormulaRepository()
{
QCString formName = line.left(se);
QCString formText = line.right(line.length()-se-1);
- Formula *f=new Formula(formText);
- Doxygen::formulaList->setAutoDelete(TRUE);
- Doxygen::formulaList->append(f);
- Doxygen::formulaDict->insert(formText,f);
- Doxygen::formulaNameDict->insert(formName,f);
+ if (cmp)
+ {
+ if ((f=Doxygen::formulaDict->find(formText))==0)
+ {
+ err("discrepancy between formula repositories! Remove "
+ "formula.repository and from_* files from output directories.");
+ exit(1);
+ }
+ QCString formLabel;
+ formLabel.sprintf("\\form#%d",f->getId());
+ if (formLabel != formName)
+ {
+ err("discrepancy between formula repositories! Remove "
+ "formula.repository and from_* files from output directories.");
+ exit(1);
+ }
+ new_repository++;
+ }
+ else
+ {
+ f=new Formula(formText);
+ Doxygen::formulaList->setAutoDelete(TRUE);
+ Doxygen::formulaList->append(f);
+ Doxygen::formulaDict->insert(formText,f);
+ Doxygen::formulaNameDict->insert(formName,f);
+ current_repository++;
+ }
}
}
}
+ if (cmp && (current_repository != new_repository))
+ {
+ err("size discrepancy between formula repositories! Remove "
+ "formula.repository and from_* files from output directories.");
+ exit(1);
+ }
}
//----------------------------------------------------------------------------
@@ -11070,7 +11101,12 @@ void parseInput()
if (Config_getBool(GENERATE_HTML))
{
- readFormulaRepository();
+ readFormulaRepository(Config_getString(HTML_OUTPUT));
+ }
+ if (Config_getBool(GENERATE_RTF))
+ {
+ // in case GENERRATE_HTML is set we just have to compare, both repositories should be identical
+ readFormulaRepository(Config_getString(RTF_OUTPUT),Config_getBool(GENERATE_HTML));
}
/**************************************************************************
@@ -11558,6 +11594,12 @@ void generateOutput()
Doxygen::formulaList->generateBitmaps(Config_getString(HTML_OUTPUT));
g_s.end();
}
+ if (Doxygen::formulaList->count()>0 && generateRtf)
+ {
+ g_s.begin("Generating bitmaps for formulas in RTF...\n");
+ Doxygen::formulaList->generateBitmaps(Config_getString(RTF_OUTPUT));
+ g_s.end();
+ }
if (Config_getBool(SORT_GROUP_NAMES))
{
diff --git a/src/doxygen.h b/src/doxygen.h
index b3467c1..7bd05a4 100644
--- a/src/doxygen.h
+++ b/src/doxygen.h
@@ -159,7 +159,7 @@ void searchInputFiles(StringList &inputFiles);
void parseInput();
void generateOutput();
void readAliases();
-void readFormulaRepository();
+void readFormulaRepository(QCString dir, bool cmp = FALSE);
void cleanUpDoxygen();
int readFileOrDirectory(const char *s,
FileNameList *fnList,
diff --git a/src/doxygen.md b/src/doxygen.md
index ccb47b9..17144ec 100644
--- a/src/doxygen.md
+++ b/src/doxygen.md
@@ -9,7 +9,7 @@ links to the relevant parts of the code. This document is intended for
developers who want to work on doxygen. Users of doxygen are referred to the
[User Manual](http://www.doxygen.org/manual.html).
-The generic starting point of the application is of cource the main() function.
+The generic starting point of the application is of course the main() function.
Configuration options
---------------------
diff --git a/src/filedef.cpp b/src/filedef.cpp
index 74c4c67..e2df9be 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -1420,7 +1420,6 @@ bool FileDef::generateSourceFile() const
{
static bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
static bool verbatimHeaders = Config_getBool(VERBATIM_HEADERS);
- QCString extension = name().right(4);
return !isReference() &&
(sourceBrowser ||
(verbatimHeaders && guessSection(name())==Entry::HEADER_SEC)
diff --git a/src/formula.cpp b/src/formula.cpp
index 6fe617d..46e2075 100644
--- a/src/formula.cpp
+++ b/src/formula.cpp
@@ -96,8 +96,7 @@ void FormulaList::generateBitmaps(const char *path)
{
//printf("Running latex...\n");
//system("latex _formulas.tex </dev/null >/dev/null");
- QCString latexCmd = Config_getString(LATEX_CMD_NAME);
- if (latexCmd.isEmpty()) latexCmd="latex";
+ QCString latexCmd = "latex";
portable_sysTimerStart();
if (portable_system(latexCmd,"_formulas.tex")!=0)
{
diff --git a/src/fortrancode.l b/src/fortrancode.l
index 14268cf..e64c38e 100644
--- a/src/fortrancode.l
+++ b/src/fortrancode.l
@@ -687,7 +687,7 @@ NUM_TYPE (complex|integer|logical|real)
LOG_OPER (\.and\.|\.eq\.|\.eqv\.|\.ge\.|\.gt\.|\.le\.|\.lt\.|\.ne\.|\.neqv\.|\.or\.|\.not\.)
KIND {ARGS}
CHAR (CHARACTER{ARGS}?|CHARACTER{BS}"*"({BS}[0-9]+|{ARGS}))
-TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS}COMPLEX|DOUBLE{BS}PRECISION|{CHAR}|TYPE|CLASS|PROCEDURE)
+TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS}COMPLEX|DOUBLE{BS}PRECISION|{CHAR}|TYPE|CLASS|PROCEDURE|ENUMERATOR)
INTENT_SPEC intent{BS}"("{BS}(in|out|in{BS}out){BS}")"
ATTR_SPEC (IMPLICIT|ALLOCATABLE|DIMENSION{ARGS}|EXTERNAL|{INTENT_SPEC}|INTRINSIC|OPTIONAL|PARAMETER|POINTER|PROTECTED|PRIVATE|PUBLIC|SAVE|TARGET|(NON_)?RECURSIVE|PURE|IMPURE|ELEMENTAL|VALUE|NOPASS|DEFERRED|CONTIGUOUS|VOLATILE)
@@ -697,7 +697,8 @@ ATTR_STMT {ATTR_SPEC}|DIMENSION
FLOW (DO|SELECT|CASE|SELECT{BS}(CASE|TYPE)|WHERE|IF|THEN|ELSE|WHILE|FORALL|ELSEWHERE|ELSEIF|RETURN|CONTINUE|EXIT|GO{BS}TO)
COMMANDS (FORMAT|CONTAINS|MODULE{BS_}PROCEDURE|WRITE|READ|ALLOCATE|ALLOCATED|ASSOCIATED|PRESENT|DEALLOCATE|NULLIFY|SIZE|INQUIRE|OPEN|CLOSE|FLUSH|DATA|COMMON)
IGNORE (CALL)
-PREFIX ((NON_)?RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,4}((NON_)?RECURSIVE|IMPURE|PURE|ELEMENTAL)?
+PREFIX ((NON_)?RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,4}((NON_)?RECURSIVE|IMPURE|PURE|ELEMENTAL)?0
+LANGUAGE_BIND_SPEC BIND{BS}"("{BS}C{BS}(,{BS}NAME{BS}"="{BS}"\""(.*)"\""{BS})?")"
/* | */
@@ -778,12 +779,12 @@ PREFIX ((NON_)?RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,4}((NON
BEGIN(Use);
}
<Use>"ONLY" { // TODO: rename
- startFontClass("keywordtype");
- codifyLines(yytext);
- endFontClass();
+ startFontClass("keywordtype");
+ codifyLines(yytext);
+ endFontClass();
yy_push_state(YY_START);
- BEGIN(UseOnly);
- }
+ BEGIN(UseOnly);
+ }
<Use>{ID} {
QCString tmp = yytext;
tmp = tmp.lower();
@@ -844,6 +845,20 @@ PREFIX ((NON_)?RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,4}((NON
BEGIN(ClassName);
if (!qstricmp(yytext,"module")) currentModule="module";
}
+<Start>("enum")/{BS_}|{BS}{COMMA}{BS}{LANGUAGE_BIND_SPEC}|\n { //
+ startScope();
+ startFontClass("keyword");
+ codifyLines(yytext);
+ endFontClass();
+ yy_push_state(YY_START);
+ BEGIN(ClassName);
+ currentClass="class";
+ }
+<*>{LANGUAGE_BIND_SPEC} { //
+ startFontClass("keyword");
+ codifyLines(yytext);
+ endFontClass();
+ }
<Start>("type")/{BS_}|({COMMA}({ACCESS_SPEC}|ABSTRACT|EXTENDS))|\n { //
startScope();
startFontClass("keyword");
@@ -869,15 +884,19 @@ PREFIX ((NON_)?RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,4}((NON
}
<ClassName>\n { // interface may be without name
yy_pop_state();
- YY_FTN_REJECT;
- }
+ YY_FTN_REJECT;
+ }
+<Start>^{BS}"end"({BS_}"enum").* { // just reset currentClass, rest is done in following rule
+ currentClass=0;
+ YY_FTN_REJECT;
+ }
<Start>^{BS}"end"({BS_}"type").* { // just reset currentClass, rest is done in following rule
currentClass=0;
- YY_FTN_REJECT;
+ YY_FTN_REJECT;
}
<Start>^{BS}"end"({BS_}"module").* { // just reset currentModule, rest is done in following rule
currentModule=0;
- YY_FTN_REJECT;
+ YY_FTN_REJECT;
}
/*-------- subprog definition -------------------------------------*/
<Start>({PREFIX}{BS_})?{TYPE_SPEC}{BS_}({PREFIX}{BS_})?{BS}/{SUBPROG}{BS_} { // TYPE_SPEC is for old function style function result
@@ -910,7 +929,7 @@ PREFIX ((NON_)?RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,4}((NON
yy_pop_state();
YY_FTN_RESET
}
-<Start>^{BS}"end"{BS}("block"{BS}"data"|{SUBPROG}|"module"|"program"|"type"|"interface")?{BS} { // Fortran subroutine or function ends
+<Start>^{BS}"end"{BS}("block"{BS}"data"|{SUBPROG}|"module"|"program"|"enum"|"type"|"interface")?{BS} { // Fortran subroutine or function ends
//cout << "===> end function " << yytext << endl;
endScope();
startFontClass("keyword");
@@ -923,7 +942,7 @@ PREFIX ((NON_)?RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,4}((NON
generateLink(*g_code,yytext);
yy_pop_state();
}
-<Start>^{BS}"end"{BS}("block"{BS}"data"|{SUBPROG}|"module"|"program"|"type"|"interface"){BS}/(\n|!) { // Fortran subroutine or function ends
+<Start>^{BS}"end"{BS}("block"{BS}"data"|{SUBPROG}|"module"|"program"|"enum"|"type"|"interface"){BS}/(\n|!) { // Fortran subroutine or function ends
//cout << "===> end function " << yytext << endl;
endScope();
startFontClass("keyword");
@@ -966,8 +985,11 @@ PREFIX ((NON_)?RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,4}((NON
g_code->codify(yytext);
endFontClass();
}
- else if (g_currentMemberDef && ((g_currentMemberDef->isFunction() && (g_currentMemberDef->typeString() != QCString("subroutine") || inTypeDecl)) ||
- g_currentMemberDef->isVariable()))
+ else if (g_currentMemberDef &&
+ ((g_currentMemberDef->isFunction() && (g_currentMemberDef->typeString()!=QCString("subroutine") || inTypeDecl)) ||
+ g_currentMemberDef->isVariable() || g_currentMemberDef->isEnumValue()
+ )
+ )
{
generateLink(*g_code, yytext);
}
@@ -1050,11 +1072,20 @@ PREFIX ((NON_)?RECURSIVE{BS_}|IMPURE{BS_}|PURE{BS_}|ELEMENTAL{BS_}){0,4}((NON
// fixed form continuation line
YY_FTN_REJECT;
}
+ else if (QCString(yytext).stripWhiteSpace().lower() == "type")
+ {
+ yy_push_state(YY_START);
+ BEGIN(Declaration);
+ startFontClass("keywordtype");
+ g_code->codify(QCString(yytext).stripWhiteSpace());
+ endFontClass();
+ g_code->codify(yytext + 4);
+ }
else
{
- g_insideBody=TRUE;
+ g_insideBody=TRUE;
generateLink(*g_code, yytext);
- g_insideBody=FALSE;
+ g_insideBody=FALSE;
}
}
diff --git a/src/fortranscanner.l b/src/fortranscanner.l
index 774251b..d0503c2 100644
--- a/src/fortranscanner.l
+++ b/src/fortranscanner.l
@@ -164,6 +164,7 @@ static Entry* global_root = 0 ;
static Entry* file_root = 0 ;
static Entry* current = 0 ;
static Entry* last_entry = 0 ;
+static Entry* last_enum = 0 ;
static ScanVar v_type = V_IGNORE; // type of parsed variable
static QList<Entry> moduleProcedures; // list of all interfaces which contain unresolved
// module procedures
@@ -198,8 +199,8 @@ static SymbolModifiers currentModifiers;
//! Holds program scope->symbol name->symbol modifiers.
static QMap<Entry*,QMap<QCString,SymbolModifiers> > modifiers;
-static Entry *global_scope = NULL;
-
+static Entry *global_scope = NULL;
+static int anonCount = 0 ;
//-----------------------------------------------------------------------------
static int yyread(char *buf,int max_size);
@@ -228,6 +229,7 @@ static QCString extractFromParens(const QCString name);
static CommentInPrepass* locatePrepassComment(int from, int to);
static void updateVariablePrepassComment(int from, int to);
static void newLine();
+static void initEntry();
//-----------------------------------------------------------------------------
#undef YY_INPUT
@@ -263,7 +265,7 @@ NUM_TYPE (complex|integer|logical|real)
LOG_OPER (\.and\.|\.eq\.|\.eqv\.|\.ge\.|\.gt\.|\.le\.|\.lt\.|\.ne\.|\.neqv\.|\.or\.|\.not\.)
KIND {ARGS}
CHAR (CHARACTER{ARGS}?|CHARACTER{BS}"*"({BS}[0-9]+|{ARGS}))
-TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS}COMPLEX|DOUBLE{BS}PRECISION|{CHAR}|TYPE{ARGS}|CLASS{ARGS}|PROCEDURE{ARGS}?)
+TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS}COMPLEX|DOUBLE{BS}PRECISION|ENUMERATOR|{CHAR}|TYPE{ARGS}|CLASS{ARGS}|PROCEDURE{ARGS}?)
INTENT_SPEC intent{BS}"("{BS}(in|out|in{BS}out){BS}")"
ATTR_SPEC (EXTERNAL|ALLOCATABLE|DIMENSION{ARGS}|{INTENT_SPEC}|INTRINSIC|OPTIONAL|PARAMETER|POINTER|PROTECTED|PRIVATE|PUBLIC|SAVE|TARGET|NOPASS|PASS{ARGS}?|DEFERRED|NON_OVERRIDABLE|CONTIGUOUS|VOLATILE|VALUE)
@@ -300,6 +302,7 @@ SCOPENAME ({ID}{BS}"::"{BS})*
%x Variable
%x Initialization
%x ArrayInitializer
+%x Enum
%x Typedef
%x TypedefBody
%x TypedefBodyContains
@@ -726,8 +729,17 @@ private {
{ID} {
}
}
-<Start,ModuleBody,TypedefBody,SubprogBody>{
+<Start,ModuleBody,TypedefBody,SubprogBody,Enum>{
^{BS}{TYPE_SPEC}/{SEPARATE} {
+ last_enum = 0;
+ if (YY_START == Enum)
+ {
+ argType = "@"; // enum marker
+ }
+ else
+ {
+ argType = QCString(yytext).simplifyWhiteSpace().lower();
+ }
current->bodyLine = yyLineNr + 1;
current->endBodyLine = yyLineNr + lineCountPrepass;
/* variable declaration starts */
@@ -736,7 +748,6 @@ private {
addModule(NULL);
yy_push_state(ModuleBody); //anon program
}
- argType = QCString(yytext).simplifyWhiteSpace().lower();
yy_push_state(AttributeList);
}
/* Dimitri: macro expansion should already be done during preprocessing not here!
@@ -834,17 +845,30 @@ private {
modifiers[current_root][name.lower()] |= currentModifiers;
argName= name;
- v_type= V_IGNORE;
- if (!argType.isEmpty() && current_root->section!=Entry::FUNCTION_SEC)
- { // new variable entry
- v_type = V_VARIABLE;
+ v_type= V_IGNORE;
+ if (!argType.isEmpty() && current_root->section!=Entry::FUNCTION_SEC)
+ { // new variable entry
+ v_type = V_VARIABLE;
current->section = Entry::VARIABLE_SEC;
- current->name = argName;
- current->type = argType;
- current->fileName = yyFileName;
- current->bodyLine = yyLineNr; // used for source reference
+ current->name = argName;
+ current->type = argType;
+ current->fileName = yyFileName;
+ current->bodyLine = yyLineNr; // used for source reference
current->startLine = yyLineNr;
- addCurrentEntry(1);
+ if (argType == "@")
+ {
+ current_root->addSubEntry(current);
+ current = new Entry(*current);
+ // add to the scope surrounding the enum (copy!)
+ current_root->parent()->addSubEntry(current);
+ last_enum = current;
+ current = new Entry ;
+ initEntry();
+ }
+ else
+ {
+ addCurrentEntry(1);
+ }
}
else if (!argType.isEmpty())
{ // declaration of parameter list: add type for corr. parameter
@@ -980,19 +1004,72 @@ private {
{
updateVariablePrepassComment(yyColNr-(int)yyleng, yyColNr);
yy_pop_state(); // end initialization
- if (v_type == V_VARIABLE) last_entry->initializer= initializer;
+ if (last_enum)
+ {
+ last_enum->initializer= initializer;
+ }
+ else
+ {
+ if (v_type == V_VARIABLE) last_entry->initializer= initializer;
+ }
}
else
initializer+=", ";
}
<Initialization>"\n"|"!" { //|
yy_pop_state(); // end initialization
- if (v_type == V_VARIABLE) last_entry->initializer= initializer;
+ if (last_enum)
+ {
+ last_enum->initializer= initializer;
+ }
+ else
+ {
+ if (v_type == V_VARIABLE) last_entry->initializer= initializer;
+ }
yyColNr -= 1;
unput(*yytext);
}
<Initialization>. { initializer+=yytext; }
+<*>{BS}"enum"{BS}","{BS}"bind"{BS}"("{BS}"c"{BS}")"{BS} {
+ if(YY_START == Start)
+ {
+ addModule(NULL);
+ yy_push_state(ModuleBody); //anon program
+ }
+
+ yy_push_state(Enum);
+ current->protection = defaultProtection;
+ typeProtection = defaultProtection;
+ typeMode = true;
+
+ current->spec |= Entry::Struct;
+ current->name.resize(0);
+ current->args.resize(0);
+ current->name.sprintf("@%d",anonCount++);
+
+ current->section = Entry::ENUM_SEC;
+ current->fileName = yyFileName;
+ current->startLine = yyLineNr;
+ current->bodyLine = yyLineNr;
+ if ((current_root) &&
+ (current_root->section == Entry::CLASS_SEC
+ || current_root->section == Entry::NAMESPACE_SEC))
+ {
+ current->name = current_root->name + "::" + current->name;
+ }
+
+ addCurrentEntry(1);
+ startScope(last_entry);
+ BEGIN( Enum ) ;
+ }
+<Enum>"end"{BS}"enum" {
+ last_entry->parent()->endBodyLine = yyLineNr;
+ if (!endScope(current_root))
+ yyterminate();
+ typeMode = false;
+ yy_pop_state();
+ }
/*------ fortran subroutine/function handling ------------------------------------------------------------*/
/* Start is initial condition */
@@ -1133,6 +1210,7 @@ private {
{
Entry *tmp_entry = current;
current = last_entry; // temporarily switch to the previous entry
+ if (last_enum) current = last_enum;
handleCommentBlock(docBlock,TRUE);
current=tmp_entry;
}
@@ -1148,7 +1226,7 @@ private {
docBlock.resize(0);
}
-<Start,SubprogBody,ModuleBody,TypedefBody,InterfaceBody,ModuleBodyContains,SubprogBodyContains,TypedefBodyContains>"!>" {
+<Start,SubprogBody,ModuleBody,TypedefBody,InterfaceBody,ModuleBodyContains,SubprogBodyContains,TypedefBodyContains,Enum>"!>" {
yy_push_state(YY_START);
current->docLine = yyLineNr;
docBlockJavaStyle = FALSE;
diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp
index 14c94a3..d71c48f 100644
--- a/src/ftvhelp.cpp
+++ b/src/ftvhelp.cpp
@@ -257,7 +257,7 @@ void FTVHelp::generateIndent(FTextStream &t, FTVNode *n,bool opened)
while (p) { indent++; p=p->parent; }
if (n->isDir)
{
- QCString dir = opened ? "&#9660;" : "&#9654;";
+ QCString dir = opened ? "&#9660;" : "&#9658;";
t << "<span style=\"width:" << (indent*16) << "px;display:inline-block;\">&#160;</span>"
<< "<span id=\"arr_" << generateIndentLabel(n,0) << "\" class=\"arrow\" ";
t << "onclick=\"toggleFolder('" << generateIndentLabel(n,0) << "')\"";
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index accc6a0..740b2f5 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -1428,13 +1428,7 @@ void HtmlGenerator::startMemberItem(const char *anchor,int annoType,const char *
t << " inherit " << inheritId;
}
t << "\">";
- switch(annoType)
- {
- case 0: t << "<td class=\"memItemLeft\" align=\"right\" valign=\"top\">"; break;
- case 1: t << "<td class=\"memItemLeft\" >"; break;
- case 2: t << "<td class=\"memItemLeft\" valign=\"top\">"; break;
- default: t << "<td class=\"memTemplParams\" colspan=\"2\">"; break;
- }
+ insertMemberAlignLeft(annoType, true);
}
void HtmlGenerator::endMemberItem()
@@ -1466,7 +1460,19 @@ void HtmlGenerator::insertMemberAlign(bool templ)
t << "&#160;</td><td class=\"" << className << "\" valign=\"bottom\">";
}
-void HtmlGenerator::startMemberDescription(const char *anchor,const char *inheritId)
+void HtmlGenerator::insertMemberAlignLeft(int annoType, bool initTag)
+{
+ if (!initTag) t << "&#160;</td>";
+ switch(annoType)
+ {
+ case 0: t << "<td class=\"memItemLeft\" align=\"right\" valign=\"top\">"; break;
+ case 1: t << "<td class=\"memItemLeft\" >"; break;
+ case 2: t << "<td class=\"memItemLeft\" valign=\"top\">"; break;
+ default: t << "<td class=\"memTemplParams\" colspan=\"2\">"; break;
+ }
+}
+
+void HtmlGenerator::startMemberDescription(const char *anchor,const char *inheritId, bool typ)
{
DBG_HTML(t << "<!-- startMemberDescription -->" << endl)
if (m_emptySection)
@@ -1479,7 +1485,10 @@ void HtmlGenerator::startMemberDescription(const char *anchor,const char *inheri
{
t << " inherit " << inheritId;
}
- t << "\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">";
+ t << "\">";
+ t << "<td class=\"mdescLeft\">&#160;</td>";
+ if (typ) t << "<td class=\"mdescLeft\">&#160;</td>";
+ t << "<td class=\"mdescRight\">";;
}
void HtmlGenerator::endMemberDescription()
@@ -1505,7 +1514,7 @@ void HtmlGenerator::endMemberSections()
}
}
-void HtmlGenerator::startMemberHeader(const char *anchor)
+void HtmlGenerator::startMemberHeader(const char *anchor, int typ)
{
DBG_HTML(t << "<!-- startMemberHeader -->" << endl)
if (!m_emptySection)
@@ -1518,7 +1527,7 @@ void HtmlGenerator::startMemberHeader(const char *anchor)
t << "<table class=\"memberdecls\">" << endl;
m_emptySection=FALSE;
}
- t << "<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\">";
+ t << "<tr class=\"heading\"><td colspan=\"" << typ << "\"><h2 class=\"groupheader\">";
if (anchor)
{
t << "<a name=\"" << anchor << "\"></a>" << endl;
diff --git a/src/htmlgen.h b/src/htmlgen.h
index 82f0c17..2d8d6e0 100644
--- a/src/htmlgen.h
+++ b/src/htmlgen.h
@@ -175,7 +175,7 @@ class HtmlGenerator : public OutputGenerator
void endMemberSections();
void startHeaderSection();
void endHeaderSection();
- void startMemberHeader(const char *);
+ void startMemberHeader(const char *, int);
void endMemberHeader();
void startMemberSubtitle();
void endMemberSubtitle();
@@ -200,7 +200,8 @@ class HtmlGenerator : public OutputGenerator
void endMemberGroup(bool);
void insertMemberAlign(bool);
- void startMemberDescription(const char *anchor,const char *inheritId);
+ void insertMemberAlignLeft(int,bool);
+ void startMemberDescription(const char *anchor,const char *inheritId, bool typ);
void endMemberDescription();
void startMemberDeclaration() {}
void endMemberDeclaration(const char *anchor,const char *inheritId);
diff --git a/src/index.cpp b/src/index.cpp
index e9f5437..c605005 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -2508,8 +2508,8 @@ static const CmhlInfo *getCmhlInfo(int hl)
{
CmhlInfo("functions", theTranslator->trAll()),
CmhlInfo("functions_func",
- fortranOpt ? theTranslator->trSubprograms() :
- vhdlOpt ? VhdlDocGen::trFunctionAndProc() :
+ fortranOpt ? theTranslator->trSubprograms() :
+ vhdlOpt ? theTranslator->trFunctionAndProc() :
theTranslator->trFunctions()),
CmhlInfo("functions_vars",theTranslator->trVariables()),
CmhlInfo("functions_type",theTranslator->trTypedefs()),
@@ -2687,8 +2687,8 @@ static const FmhlInfo *getFmhlInfo(int hl)
{
FmhlInfo("globals", theTranslator->trAll()),
FmhlInfo("globals_func",
- fortranOpt ? theTranslator->trSubprograms() :
- vhdlOpt ? VhdlDocGen::trFunctionAndProc() :
+ fortranOpt ? theTranslator->trSubprograms() :
+ vhdlOpt ? theTranslator->trFunctionAndProc() :
theTranslator->trFunctions()),
FmhlInfo("globals_vars",theTranslator->trVariables()),
FmhlInfo("globals_type",theTranslator->trTypedefs()),
@@ -2855,8 +2855,8 @@ static const NmhlInfo *getNmhlInfo(int hl)
{
NmhlInfo("namespacemembers", theTranslator->trAll()),
NmhlInfo("namespacemembers_func",
- fortranOpt ? theTranslator->trSubprograms() :
- vhdlOpt ? VhdlDocGen::trFunctionAndProc() :
+ fortranOpt ? theTranslator->trSubprograms() :
+ vhdlOpt ? theTranslator->trFunctionAndProc() :
theTranslator->trFunctions()),
NmhlInfo("namespacemembers_vars",theTranslator->trVariables()),
NmhlInfo("namespacemembers_type",theTranslator->trTypedefs()),
@@ -4022,7 +4022,7 @@ static void writeIndex(OutputList &ol)
ol.startIndexSection(isClassHierarchyIndex);
ol.parseText(/*projPrefix+*/
(fortranOpt ? theTranslator->trCompoundIndexFortran() :
- vhdlOpt ? VhdlDocGen::trDesignUnitIndex() :
+ vhdlOpt ? theTranslator->trHierarchicalIndex() :
theTranslator->trHierarchicalIndex()
));
ol.endIndexSection(isClassHierarchyIndex);
@@ -4032,7 +4032,7 @@ static void writeIndex(OutputList &ol)
ol.startIndexSection(isCompoundIndex);
ol.parseText(/*projPrefix+*/
(fortranOpt ? theTranslator->trCompoundIndexFortran() :
- vhdlOpt ? VhdlDocGen::trDesignUnitIndex() :
+ vhdlOpt ? theTranslator->trDesignUnitIndex() :
theTranslator->trCompoundIndex()
));
ol.endIndexSection(isCompoundIndex);
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp
index 86ceade..7fd27bb 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -18,6 +18,7 @@
#include "htmlattrib.h"
#include <qfileinfo.h>
#include "latexdocvisitor.h"
+#include "latexgen.h"
#include "docparser.h"
#include "language.h"
#include "doxygen.h"
@@ -291,10 +292,12 @@ void LatexDocVisitor::visit(DocVerbatim *s)
{
case DocVerbatim::Code:
{
- m_t << "\n\\begin{DoxyCode}\n";
+ m_t << "\n\\begin{DoxyCode}{" << usedTableLevels() << "}\n";
+ LatexCodeGenerator::setDoxyCodeOpen(TRUE);
Doxygen::parserManager->getParser(lang)
->parseCode(m_ci,s->context(),s->text(),langExt,
s->isExample(),s->exampleFile());
+ LatexCodeGenerator::setDoxyCodeOpen(FALSE);
m_t << "\\end{DoxyCode}\n";
}
break;
@@ -399,7 +402,8 @@ void LatexDocVisitor::visit(DocInclude *inc)
{
case DocInclude::IncWithLines:
{
- m_t << "\n\\begin{DoxyCodeInclude}\n";
+ m_t << "\n\\begin{DoxyCodeInclude}{" << usedTableLevels() << "}\n";
+ LatexCodeGenerator::setDoxyCodeOpen(TRUE);
QFileInfo cfi( inc->file() );
FileDef fd( cfi.dirPath().utf8(), cfi.fileName().utf8() );
Doxygen::parserManager->getParser(inc->extension())
@@ -415,11 +419,13 @@ void LatexDocVisitor::visit(DocInclude *inc)
0, // memberDef
TRUE // show line numbers
);
+ LatexCodeGenerator::setDoxyCodeOpen(FALSE);
m_t << "\\end{DoxyCodeInclude}" << endl;
}
break;
case DocInclude::Include:
- m_t << "\n\\begin{DoxyCodeInclude}\n";
+ m_t << "\n\\begin{DoxyCodeInclude}{" << usedTableLevels() << "}\n";
+ LatexCodeGenerator::setDoxyCodeOpen(TRUE);
Doxygen::parserManager->getParser(inc->extension())
->parseCode(m_ci,inc->context(),
inc->text(),langExt,inc->isExample(),
@@ -431,6 +437,7 @@ void LatexDocVisitor::visit(DocInclude *inc)
0, // memberDef
FALSE
);
+ LatexCodeGenerator::setDoxyCodeOpen(FALSE);
m_t << "\\end{DoxyCodeInclude}\n";
break;
case DocInclude::DontInclude:
@@ -447,7 +454,8 @@ void LatexDocVisitor::visit(DocInclude *inc)
break;
case DocInclude::Snippet:
{
- m_t << "\n\\begin{DoxyCodeInclude}\n";
+ m_t << "\n\\begin{DoxyCodeInclude}{" << usedTableLevels() << "}\n";
+ LatexCodeGenerator::setDoxyCodeOpen(TRUE);
Doxygen::parserManager->getParser(inc->extension())
->parseCode(m_ci,
inc->context(),
@@ -456,6 +464,7 @@ void LatexDocVisitor::visit(DocInclude *inc)
inc->isExample(),
inc->exampleFile()
);
+ LatexCodeGenerator::setDoxyCodeOpen(FALSE);
m_t << "\\end{DoxyCodeInclude}" << endl;
}
break;
@@ -463,7 +472,8 @@ void LatexDocVisitor::visit(DocInclude *inc)
{
QFileInfo cfi( inc->file() );
FileDef fd( cfi.dirPath().utf8(), cfi.fileName().utf8() );
- m_t << "\n\\begin{DoxyCodeInclude}\n";
+ m_t << "\n\\begin{DoxyCodeInclude}{" << usedTableLevels() << "}\n";
+ LatexCodeGenerator::setDoxyCodeOpen(TRUE);
Doxygen::parserManager->getParser(inc->extension())
->parseCode(m_ci,
inc->context(),
@@ -478,6 +488,7 @@ void LatexDocVisitor::visit(DocInclude *inc)
0, // memberDef
TRUE // show line number
);
+ LatexCodeGenerator::setDoxyCodeOpen(FALSE);
m_t << "\\end{DoxyCodeInclude}" << endl;
}
break;
@@ -495,7 +506,8 @@ void LatexDocVisitor::visit(DocIncOperator *op)
// op->type(),op->isFirst(),op->isLast(),op->text().data());
if (op->isFirst())
{
- if (!m_hide) m_t << "\n\\begin{DoxyCodeInclude}\n";
+ if (!m_hide) m_t << "\n\\begin{DoxyCodeInclude}{" << usedTableLevels() << "}\n";
+ LatexCodeGenerator::setDoxyCodeOpen(TRUE);
pushEnabled();
m_hide = TRUE;
}
@@ -515,6 +527,7 @@ void LatexDocVisitor::visit(DocIncOperator *op)
if (op->isLast())
{
popEnabled();
+ LatexCodeGenerator::setDoxyCodeOpen(FALSE);
if (!m_hide) m_t << "\n\\end{DoxyCodeInclude}\n";
}
else
@@ -935,7 +948,7 @@ static void writeStartTableCommand(FTextStream &t,const DocNode *n,int cols)
{
if (tableIsNested(n))
{
- t << "\\begin{tabularx}{\\linewidth}{|*{" << cols << "}{>{\\raggedright\\arraybackslash}X|}}";
+ t << "{\\begin{tabularx}{\\linewidth}{|*{" << cols << "}{>{\\raggedright\\arraybackslash}X|}}";
}
else
{
@@ -948,7 +961,7 @@ static void writeEndTableCommand(FTextStream &t,const DocNode *n)
{
if (tableIsNested(n))
{
- t << "\\end{tabularx}\n";
+ t << "\\end{tabularx}}\n";
}
else
{
@@ -995,7 +1008,8 @@ void LatexDocVisitor::visitPre(DocHtmlTable *t)
if (firstRow && firstRow->isHeading())
{
setFirstRow(TRUE);
- firstRow->accept(this);
+ DocNode *n = t->parent();
+ if (!tableIsNested(n)) firstRow->accept(this);
setFirstRow(FALSE);
}
}
@@ -1021,13 +1035,14 @@ void LatexDocVisitor::visitPost(DocHtmlCaption *c)
void LatexDocVisitor::visitPre(DocHtmlRow *r)
{
setCurrentColumn(0);
- if (r->isHeading()) m_t << "\\rowcolor{\\tableheadbgcolor}";
}
void LatexDocVisitor::visitPost(DocHtmlRow *row)
{
if (m_hide) return;
+ DocNode *n = row->parent() ->parent();
+
int c=currentColumn();
while (c<=numCols()) // end of row while inside a row span?
{
@@ -1045,10 +1060,7 @@ void LatexDocVisitor::visitPost(DocHtmlRow *row)
if (span->colSpan>1) // row span is also part of a column span
{
m_t << "\\multicolumn{" << span->colSpan << "}{";
- m_t << "p{(\\linewidth-\\tabcolsep*"
- << numCols() << "-\\arrayrulewidth*"
- << row->visibleCells() << ")*"
- << span->colSpan <<"/"<< numCols() << "}|}{}";
+ m_t << "}|}{}";
}
else // solitary row span
{
@@ -1089,7 +1101,8 @@ void LatexDocVisitor::visitPost(DocHtmlRow *row)
m_t << "\n";
- if (row->isHeading() && row->rowIndex()==1)
+
+ if (row->isHeading() && row->rowIndex()==1 && !tableIsNested(n))
{
if (firstRow())
{
@@ -1131,10 +1144,7 @@ void LatexDocVisitor::visitPre(DocHtmlCell *c)
{
m_t << "|";
}
- m_t << "p{(\\linewidth-\\tabcolsep*"
- << numCols() << "-\\arrayrulewidth*"
- << row->visibleCells() << ")*"
- << span->colSpan <<"/"<< numCols() << "}|}{}";
+ m_t << "l|}{" << (c->isHeading()? "\\columncolor{\\tableheadbgcolor}" : "") << "}"; // alignment not relevant, empty column
setCurrentColumn(currentColumn()+span->colSpan);
}
else
@@ -1146,6 +1156,7 @@ void LatexDocVisitor::visitPre(DocHtmlCell *c)
}
int cs = c->colSpan();
+ int a = c->alignment();
if (cs>1 && row)
{
setInColSpan(TRUE);
@@ -1154,11 +1165,18 @@ void LatexDocVisitor::visitPre(DocHtmlCell *c)
{
m_t << "|";
}
- m_t << "p{(\\linewidth-\\tabcolsep*"
- << numCols() << "-\\arrayrulewidth*"
- << row->visibleCells() << ")*"
- << cs <<"/"<< numCols() << "}|}{";
- if (c->isHeading()) m_t << "\\cellcolor{\\tableheadbgcolor}";
+ switch (a)
+ {
+ case DocHtmlCell::Right:
+ m_t << "r|}{";
+ break;
+ case DocHtmlCell::Center:
+ break;
+ m_t << "c|}{";
+ default:
+ m_t << "l|}{";
+ break;
+ }
}
int rs = c->rowSpan();
if (rs>0)
@@ -1168,9 +1186,8 @@ void LatexDocVisitor::visitPre(DocHtmlCell *c)
// c->rowIndex(),c->columnIndex(),c->rowSpan(),c->colSpan(),
// currentColumn());
addRowSpan(new ActiveRowSpan(c,rs,cs,currentColumn()));
- m_t << "\\multirow{" << rs << "}{\\linewidth}{";
+ m_t << "\\multirow{" << rs << "}{*}{";
}
- int a = c->alignment();
if (a==DocHtmlCell::Center)
{
m_t << "\\PBS\\centering ";
@@ -1181,7 +1198,7 @@ void LatexDocVisitor::visitPre(DocHtmlCell *c)
}
if (c->isHeading())
{
- m_t << "\\textbf{ ";
+ m_t << "\\cellcolor{\\tableheadbgcolor}\\textbf{ ";
}
if (cs>1)
{
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index cc796b1..b00bc6f 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -39,6 +39,7 @@
#include "resourcemgr.h"
static bool DoxyCodeOpen = FALSE;
+static bool DoxyCodeLineOpen = FALSE;
//-------------------------------
LatexCodeGenerator::LatexCodeGenerator(FTextStream &t,const QCString &relPath,const QCString &sourceFileName)
@@ -101,7 +102,7 @@ void LatexCodeGenerator::codify(const char *str)
m_col+=spacesToNextTabStop;
p++;
break;
- case '\n': (usedTableLevels()>0) ? m_t << "\\newline\n" : m_t << '\n'; m_col=0; p++;
+ case '\n': (usedTableLevels()>0 && !DoxyCodeOpen) ? m_t << "\\newline\n" : m_t << '\n'; m_col=0; p++;
break;
default:
i=0;
@@ -190,10 +191,10 @@ void LatexCodeGenerator::writeLineNumber(const char *ref,const char *fileName,co
{
static bool usePDFLatex = Config_getBool(USE_PDFLATEX);
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
- if (!DoxyCodeOpen)
+ if (!DoxyCodeLineOpen)
{
m_t << "\\DoxyCodeLine{";
- DoxyCodeOpen = TRUE;
+ DoxyCodeLineOpen = TRUE;
}
if (m_prettyCode)
{
@@ -228,19 +229,19 @@ void LatexCodeGenerator::writeLineNumber(const char *ref,const char *fileName,co
void LatexCodeGenerator::startCodeLine(bool)
{
m_col=0;
- if (!DoxyCodeOpen)
+ if (!DoxyCodeLineOpen)
{
m_t << "\\DoxyCodeLine{";
- DoxyCodeOpen = TRUE;
+ DoxyCodeLineOpen = TRUE;
}
}
void LatexCodeGenerator::endCodeLine()
{
- if (DoxyCodeOpen)
+ if (DoxyCodeLineOpen)
{
m_t << "}";
- DoxyCodeOpen = FALSE;
+ DoxyCodeLineOpen = FALSE;
}
codify("\n");
}
@@ -255,6 +256,10 @@ void LatexCodeGenerator::endFontClass()
m_t << "}";
}
+void LatexCodeGenerator::setDoxyCodeOpen(bool val)
+{
+ DoxyCodeOpen = val;
+}
//-------------------------------
@@ -286,13 +291,15 @@ static void writeLatexMakefile()
exit(1);
}
// inserted by KONNO Akihisa <konno@researchers.jp> 2002-03-05
- QCString latex_command = Config_getString(LATEX_CMD_NAME);
+ QCString latex_command = theTranslator->latexCommandName();
QCString mkidx_command = Config_getString(MAKEINDEX_CMD_NAME);
// end insertion by KONNO Akihisa <konno@researchers.jp> 2002-03-05
FTextStream t(&file);
if (!Config_getBool(USE_PDFLATEX)) // use plain old latex
{
- t << "all: refman.dvi" << endl
+ t << "LATEX_CMD=" << latex_command << endl
+ << endl
+ << "all: refman.dvi" << endl
<< endl
<< "ps: refman.ps" << endl
<< endl
@@ -309,7 +316,7 @@ static void writeLatexMakefile()
t << "\tps2pdf refman.ps refman.pdf" << endl << endl;
t << "refman.dvi: clean refman.tex doxygen.sty" << endl
<< "\techo \"Running latex...\"" << endl
- << "\t" << latex_command << " refman.tex" << endl
+ << "\t$(LATEX_CMD) refman.tex" << endl
<< "\techo \"Running makeindex...\"" << endl
<< "\t" << mkidx_command << " refman.idx" << endl;
if (generateBib)
@@ -317,19 +324,19 @@ static void writeLatexMakefile()
t << "\techo \"Running bibtex...\"" << endl;
t << "\tbibtex refman" << endl;
t << "\techo \"Rerunning latex....\"" << endl;
- t << "\t" << latex_command << " refman.tex" << endl;
+ t << "\t$(LATEX_CMD) refman.tex" << endl;
}
t << "\techo \"Rerunning latex....\"" << endl
- << "\t" << latex_command << " refman.tex" << endl
+ << "\t$(LATEX_CMD) refman.tex" << endl
<< "\tlatex_count=8 ; \\" << endl
<< "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\\" << endl
<< "\t do \\" << endl
<< "\t echo \"Rerunning latex....\" ;\\" << endl
- << "\t " << latex_command << " refman.tex ;\\" << endl
+ << "\t $(LATEX_CMD) refman.tex ; \\" << endl
<< "\t latex_count=`expr $$latex_count - 1` ;\\" << endl
<< "\t done" << endl
<< "\t" << mkidx_command << " refman.idx" << endl
- << "\t" << latex_command << " refman.tex" << endl << endl
+ << "\t$(LATEX_CMD) refman.tex" << endl << endl
<< "refman_2on1.ps: refman.ps" << endl
<< "\tpsnup -2 refman.ps >refman_2on1.ps" << endl
<< endl
@@ -338,26 +345,28 @@ static void writeLatexMakefile()
}
else // use pdflatex for higher quality output
{
+ t << "LATEX_CMD=" << latex_command << endl
+ << endl;
t << "all: refman.pdf" << endl << endl
<< "pdf: refman.pdf" << endl << endl;
t << "refman.pdf: clean refman.tex" << endl;
- t << "\tpdflatex refman" << endl;
+ t << "\t$(LATEX_CMD) refman" << endl;
t << "\t" << mkidx_command << " refman.idx" << endl;
if (generateBib)
{
t << "\tbibtex refman" << endl;
- t << "\tpdflatex refman" << endl;
+ t << "\t$(LATEX_CMD) refman" << endl;
}
- t << "\tpdflatex refman" << endl
+ t << "\t$(LATEX_CMD) refman" << endl
<< "\tlatex_count=8 ; \\" << endl
<< "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\\" << endl
<< "\t do \\" << endl
<< "\t echo \"Rerunning latex....\" ;\\" << endl
- << "\t pdflatex refman ;\\" << endl
+ << "\t $(LATEX_CMD) refman ;\\" << endl
<< "\t latex_count=`expr $$latex_count - 1` ;\\" << endl
<< "\t done" << endl
<< "\t" << mkidx_command << " refman.idx" << endl
- << "\tpdflatex refman" << endl << endl;
+ << "\t$(LATEX_CMD) refman" << endl << endl;
}
t << endl
@@ -371,7 +380,7 @@ static void writeMakeBat()
#if defined(_MSC_VER)
QCString dir=Config_getString(LATEX_OUTPUT);
QCString fileName=dir+"/make.bat";
- QCString latex_command = Config_getString(LATEX_CMD_NAME);
+ QCString latex_command = theTranslator->latexCommandName();
QCString mkidx_command = Config_getString(MAKEINDEX_CMD_NAME);
QFile file(fileName);
bool generateBib = !Doxygen::citeDict->isEmpty();
@@ -386,14 +395,15 @@ static void writeMakeBat()
t << "del /s /f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf\n\n";
if (!Config_getBool(USE_PDFLATEX)) // use plain old latex
{
- t << latex_command << " refman.tex\n";
+ t << "set LATEX_CMD=" << latex_command << "\n";
+ t << "%LATEX_CMD% refman.tex\n";
t << "echo ----\n";
t << mkidx_command << " refman.idx\n";
if (generateBib)
{
t << "bibtex refman\n";
t << "echo ----\n";
- t << latex_command << " refman.tex\n";
+ t << "\t%LATEX_CMD% refman.tex\n";
}
t << "setlocal enabledelayedexpansion\n";
t << "set count=8\n";
@@ -405,28 +415,29 @@ static void writeMakeBat()
t << "set /a count-=1\n";
t << "if !count! EQU 0 goto :skip\n\n";
t << "echo ----\n";
- t << latex_command << " refman.tex\n";
+ t << "%LATEX_CMD% refman.tex\n";
t << "goto :repeat\n";
t << ":skip\n";
t << "endlocal\n";
t << mkidx_command << " refman.idx\n";
- t << latex_command << " refman.tex\n";
+ t << "%LATEX_CMD% refman.tex\n";
t << "dvips -o refman.ps refman.dvi\n";
t << "gswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "
"-sOutputFile=refman.pdf -c save pop -f refman.ps\n";
}
else // use pdflatex
{
- t << "pdflatex refman\n";
+ t << "set LATEX_CMD=" << latex_command << "\n";
+ t << "%LATEX_CMD% refman\n";
t << "echo ----\n";
t << mkidx_command << " refman.idx\n";
if (generateBib)
{
t << "bibtex refman" << endl;
- t << "pdflatex refman" << endl;
+ t << "%LATEX_CMD% refman" << endl;
}
t << "echo ----\n";
- t << "pdflatex refman\n\n";
+ t << "%LATEX_CMD% refman\n\n";
t << "setlocal enabledelayedexpansion\n";
t << "set count=8\n";
t << ":repeat\n";
@@ -437,12 +448,12 @@ static void writeMakeBat()
t << "set /a count-=1\n";
t << "if !count! EQU 0 goto :skip\n\n";
t << "echo ----\n";
- t << "pdflatex refman\n";
+ t << "%LATEX_CMD% refman\n";
t << "goto :repeat\n";
t << ":skip\n";
t << "endlocal\n";
t << mkidx_command << " refman.idx\n";
- t << "pdflatex refman\n";
+ t << "%LATEX_CMD% refman\n";
t << "cd /D %Dir_Old%\n";
t << "set Dir_Old=\n";
}
@@ -517,6 +528,8 @@ static void writeDefaultHeaderPart1(FTextStream &t)
"\\PassOptionsToPackage{warn}{textcomp}\n"
"\\usepackage{textcomp}\n"
"\\usepackage[nointegrals]{wasysym}\n"
+ "\\usepackage[table]{xcolor}\n"
+ "\\usepackage{ifpdf,ifxetex}\n"
"\n";
// Language support
@@ -529,9 +542,13 @@ static void writeDefaultHeaderPart1(FTextStream &t)
}
// Define default fonts
- t << "% Font selection\n"
- "\\usepackage[T1]{fontenc}\n"
- "\\usepackage[scaled=.90]{helvet}\n"
+ t << "% Font selection\n";
+ QCString fontenc = theTranslator->latexFontenc();
+ if (!fontenc.isEmpty())
+ {
+ t << "\\usepackage[" << fontenc << "]{fontenc}\n";
+ }
+ t << "\\usepackage[scaled=.90]{helvet}\n"
"\\usepackage{courier}\n"
"\\usepackage{amssymb}\n"
"\\usepackage{sectsty}\n"
@@ -661,7 +678,11 @@ static void writeDefaultHeaderPart1(FTextStream &t)
"\\ifpdf\n"
" \\usepackage[pdftex,pagebackref=true]{hyperref}\n"
"\\else\n"
- " \\usepackage[ps2pdf,pagebackref=true]{hyperref}\n"
+ " \\ifxetex\n"
+ " \\usepackage[pagebackref=true]{hyperref}\n"
+ " \\else\n"
+ " \\usepackage[ps2pdf,pagebackref=true]{hyperref}\n"
+ " \\fi\n"
"\\fi\n"
"\\ifpdf\n"
" \\DeclareUnicodeCharacter{207B}{${}^{-}$}% Superscript minus\n"
@@ -696,16 +717,23 @@ static void writeDefaultHeaderPart1(FTextStream &t)
t << "\\usepackage{caption}\n"
<< "\\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}\n\n";
+
// in page table of contents
t << "\\usepackage{etoc}\n"
"\\etocsettocstyle{\\doxytocparskip}{\\doxynormalparskip}\n";
+ // prevent numbers overlap the titles in toc
+ t << "\\renewcommand{\\numberline}[1]{#1~}\n";
+
// End of preamble, now comes the document contents
t << "%===== C O N T E N T S =====\n"
"\n"
"\\begin{document}\n";
- if (theTranslator->idLanguage()=="greek")
- t << "\\selectlanguage{greek}\n";
+ QCString documentPre = theTranslator->latexDocumentPre();
+ if (!documentPre.isEmpty())
+ {
+ t << documentPre;
+ }
t << "\n";
// Front matter
@@ -798,8 +826,13 @@ static void writeDefaultFooter(FTextStream &t)
"\\clearemptydoublepage\n"
"\\addcontentsline{toc}{" << unit << "}{\\indexname}\n"
"\\printindex\n"
- "\n"
- "\\end{document}\n";
+ "\n";
+ QCString documentPost = theTranslator->latexDocumentPost();
+ if (!documentPost.isEmpty())
+ {
+ t << documentPost;
+ }
+ t << "\\end{document}\n";
}
void LatexGenerator::writeHeaderFile(QFile &f)
@@ -1553,7 +1586,7 @@ void LatexGenerator::endGroupHeader(int)
t << "}" << endl;
}
-void LatexGenerator::startMemberHeader(const char *)
+void LatexGenerator::startMemberHeader(const char *,int)
{
if (Config_getBool(COMPACT_LATEX))
{
@@ -1841,7 +1874,7 @@ void LatexGenerator::endMemberItem()
t << endl;
}
-void LatexGenerator::startMemberDescription(const char *,const char *)
+void LatexGenerator::startMemberDescription(const char *,const char *,bool)
{
if (!insideTabbing)
{
@@ -2207,12 +2240,14 @@ void LatexGenerator::endConstraintList()
void LatexGenerator::startCodeFragment()
{
- t << "\n\\begin{DoxyCode}\n";
+ t << "\n\\begin{DoxyCode}{" << usedTableLevels() << "}\n";
+ DoxyCodeOpen = TRUE;
}
void LatexGenerator::endCodeFragment()
{
t << "\\end{DoxyCode}\n";
+ DoxyCodeOpen = FALSE;
}
void LatexGenerator::startInlineHeader()
diff --git a/src/latexgen.h b/src/latexgen.h
index 430d250..07c4080 100644
--- a/src/latexgen.h
+++ b/src/latexgen.h
@@ -51,6 +51,7 @@ class LatexCodeGenerator : public CodeOutputInterface
void writeCodeAnchor(const char *) {}
void setCurrentDoc(Definition *,const char *,bool) {}
void addWord(const char *,bool) {}
+ static void setDoxyCodeOpen(bool val);
private:
void _writeCodeLink(const char *className,
@@ -169,7 +170,7 @@ class LatexGenerator : public OutputGenerator
void endMemberSections() {}
void startHeaderSection() {}
void endHeaderSection() {}
- void startMemberHeader(const char *);
+ void startMemberHeader(const char *,int);
void endMemberHeader();
void startMemberSubtitle() {}
void endMemberSubtitle() {}
@@ -194,6 +195,7 @@ class LatexGenerator : public OutputGenerator
void endMemberGroup(bool);
void insertMemberAlign(bool) {}
+ void insertMemberAlignLeft(int,bool){}
void writeRuler() { t << endl << endl; }
void writeAnchor(const char *fileName,const char *name);
@@ -225,7 +227,7 @@ class LatexGenerator : public OutputGenerator
void endCenter() { t << "\\end{center}" << endl; }
void startSmall() { t << "\\footnotesize "; }
void endSmall() { t << "\\normalsize "; }
- void startMemberDescription(const char *,const char *);
+ void startMemberDescription(const char *,const char *,bool);
void endMemberDescription();
void startMemberDeclaration() {}
void endMemberDeclaration(const char *,const char *) {}
diff --git a/src/layout.cpp b/src/layout.cpp
index fdc9f4c..1d9a5ed 100644
--- a/src/layout.cpp
+++ b/src/layout.cpp
@@ -310,7 +310,7 @@ class LayoutParser : public QXmlDefaultHandler
new StartElementHandlerSection(this,LayoutDocEntry::ClassNestedClasses,&LayoutParser::startSectionEntry,
COMPILE_FOR_2_OPTIONS(
theTranslator->trCompounds(),
- SrcLangExt_VHDL,VhdlDocGen::trVhdlType(VhdlDocGen::ENTITY,FALSE),
+ SrcLangExt_VHDL,theTranslator->trVhdlType(VhdlDocGen::ENTITY,FALSE),
SrcLangExt_Fortran,theTranslator->trDataTypes()
)));
m_sHandler.insert("class/memberdecl/services",
@@ -491,7 +491,7 @@ class LayoutParser : public QXmlDefaultHandler
new StartElementHandlerSection(this,LayoutDocEntry::NamespaceClasses,&LayoutParser::startSectionEntry,
COMPILE_FOR_2_OPTIONS(
theTranslator->trCompounds(),
- SrcLangExt_VHDL,VhdlDocGen::trVhdlType(VhdlDocGen::ENTITY,FALSE),
+ SrcLangExt_VHDL,theTranslator->trVhdlType(VhdlDocGen::ENTITY,FALSE),
SrcLangExt_Fortran,theTranslator->trDataTypes()
)));
m_sHandler.insert("namespace/memberdecl/membergroups",
@@ -508,7 +508,7 @@ class LayoutParser : public QXmlDefaultHandler
COMPILE_FOR_2_OPTIONS(
theTranslator->trFunctions(),
SrcLangExt_Fortran,theTranslator->trSubprograms(),
- SrcLangExt_VHDL,VhdlDocGen::trFunctionAndProc()
+ SrcLangExt_VHDL,theTranslator->trFunctionAndProc()
)));
m_sHandler.insert("namespace/memberdecl/variables",
new StartElementHandlerMember(this,&LayoutParser::startMemberDeclEntry,
@@ -570,7 +570,7 @@ class LayoutParser : public QXmlDefaultHandler
new StartElementHandlerSection(this,LayoutDocEntry::FileClasses,&LayoutParser::startSectionEntry,
COMPILE_FOR_2_OPTIONS(
theTranslator->trCompounds(),
- SrcLangExt_VHDL,VhdlDocGen::trVhdlType(VhdlDocGen::ENTITY,FALSE),
+ SrcLangExt_VHDL,theTranslator->trVhdlType(VhdlDocGen::ENTITY,FALSE),
SrcLangExt_Fortran,theTranslator->trDataTypes()
)));
m_sHandler.insert("file/memberdecl/namespaces",
@@ -599,7 +599,7 @@ class LayoutParser : public QXmlDefaultHandler
COMPILE_FOR_2_OPTIONS(
theTranslator->trFunctions(),
SrcLangExt_Fortran,theTranslator->trSubprograms(),
- SrcLangExt_VHDL,VhdlDocGen::trFunctionAndProc()
+ SrcLangExt_VHDL,theTranslator->trFunctionAndProc()
)));
m_sHandler.insert("file/memberdecl/variables",
new StartElementHandlerMember(this,&LayoutParser::startMemberDeclEntry,
@@ -660,7 +660,7 @@ class LayoutParser : public QXmlDefaultHandler
new StartElementHandlerSection(this,LayoutDocEntry::GroupClasses,&LayoutParser::startSectionEntry,
COMPILE_FOR_2_OPTIONS(
theTranslator->trCompounds(),
- SrcLangExt_VHDL,VhdlDocGen::trVhdlType(VhdlDocGen::ENTITY,FALSE),
+ SrcLangExt_VHDL,theTranslator->trVhdlType(VhdlDocGen::ENTITY,FALSE),
SrcLangExt_Fortran,theTranslator->trDataTypes()
)));
m_sHandler.insert("group/memberdecl/namespaces",
@@ -701,7 +701,7 @@ class LayoutParser : public QXmlDefaultHandler
COMPILE_FOR_2_OPTIONS(
theTranslator->trFunctions(),
SrcLangExt_Fortran,theTranslator->trSubprograms(),
- SrcLangExt_VHDL,VhdlDocGen::trFunctionAndProc()
+ SrcLangExt_VHDL,theTranslator->trFunctionAndProc()
)));
m_sHandler.insert("group/memberdecl/variables",
new StartElementHandlerMember(this,&LayoutParser::startMemberDeclEntry,
@@ -954,35 +954,35 @@ class LayoutParser : public QXmlDefaultHandler
},
{ "classindex",
LayoutNavEntry::ClassIndex,
- fortranOpt ? theTranslator->trDataTypes() : vhdlOpt ? VhdlDocGen::trDesignUnits() : theTranslator->trCompoundIndex(),
+ fortranOpt ? theTranslator->trDataTypes() : vhdlOpt ? theTranslator->trDesignUnits() : theTranslator->trCompoundIndex(),
QCString(),
QCString(),
"classes"
},
{ "classes",
LayoutNavEntry::Classes,
- fortranOpt ? theTranslator->trCompoundListFortran() : vhdlOpt ? VhdlDocGen::trDesignUnitList() : theTranslator->trClasses(),
+ fortranOpt ? theTranslator->trCompoundListFortran() : vhdlOpt ? theTranslator->trDesignUnitList() : theTranslator->trClasses(),
theTranslator->trCompoundList(),
- fortranOpt ? theTranslator->trCompoundListDescriptionFortran() : vhdlOpt ? VhdlDocGen::trDesignUnitListDescription() : theTranslator->trCompoundListDescription(),
+ fortranOpt ? theTranslator->trCompoundListDescriptionFortran() : vhdlOpt ? theTranslator->trDesignUnitListDescription() : theTranslator->trCompoundListDescription(),
"annotated"
},
{ "classlist",
LayoutNavEntry::ClassList,
- fortranOpt ? theTranslator->trCompoundListFortran() : vhdlOpt ? VhdlDocGen::trDesignUnitList() : theTranslator->trCompoundList(),
+ fortranOpt ? theTranslator->trCompoundListFortran() : vhdlOpt ? theTranslator->trDesignUnitList() : theTranslator->trCompoundList(),
QCString(),
- fortranOpt ? theTranslator->trCompoundListDescriptionFortran() : vhdlOpt ? VhdlDocGen::trDesignUnitListDescription() : theTranslator->trCompoundListDescription(),
+ fortranOpt ? theTranslator->trCompoundListDescriptionFortran() : vhdlOpt ? theTranslator->trDesignUnitListDescription() : theTranslator->trCompoundListDescription(),
"annotated"
},
{ "hierarchy",
LayoutNavEntry::ClassHierarchy,
- vhdlOpt ? VhdlDocGen::trDesignUnitHierarchy() : theTranslator->trClassHierarchy(),
+ vhdlOpt ? theTranslator->trDesignUnitHierarchy() : theTranslator->trClassHierarchy(),
QCString(),
theTranslator->trClassHierarchyDescription(),
hasGraphicalHierarchy ? "inherits" : "hierarchy"
},
{ "classmembers",
LayoutNavEntry::ClassMembers,
- fortranOpt ? theTranslator->trCompoundMembersFortran() : vhdlOpt ? VhdlDocGen::trDesignUnitMembers() : theTranslator->trCompoundMembers(),
+ fortranOpt ? theTranslator->trCompoundMembersFortran() : vhdlOpt ? theTranslator->trDesignUnitMembers() : theTranslator->trCompoundMembers(),
QCString(),
fortranOpt ? theTranslator->trCompoundMembersDescriptionFortran(extractAll) : theTranslator->trCompoundMembersDescription(extractAll),
"functions"
diff --git a/src/mangen.cpp b/src/mangen.cpp
index 17e6003..d23b2fe 100644
--- a/src/mangen.cpp
+++ b/src/mangen.cpp
@@ -283,7 +283,7 @@ void ManGenerator::endGroupHeader(int)
upperCase=FALSE;
}
-void ManGenerator::startMemberHeader(const char *)
+void ManGenerator::startMemberHeader(const char *,int)
{
if (!firstCol) t << endl;
t << ".SS \"";
@@ -619,9 +619,9 @@ void ManGenerator::startSection(const char *,const char *,SectionInfo::SectionTy
{
case SectionInfo::Page: startGroupHeader(FALSE); break;
case SectionInfo::Section: startGroupHeader(FALSE); break;
- case SectionInfo::Subsection: startMemberHeader(0); break;
- case SectionInfo::Subsubsection: startMemberHeader(0); break;
- case SectionInfo::Paragraph: startMemberHeader(0); break;
+ case SectionInfo::Subsection: startMemberHeader(0, -1); break;
+ case SectionInfo::Subsubsection: startMemberHeader(0, -1); break;
+ case SectionInfo::Paragraph: startMemberHeader(0, -1); break;
default: ASSERT(0); break;
}
}
diff --git a/src/mangen.h b/src/mangen.h
index b3b9f76..0413ffd 100644
--- a/src/mangen.h
+++ b/src/mangen.h
@@ -99,9 +99,10 @@ class ManGenerator : public OutputGenerator
void endMemberSections() {}
void startHeaderSection() {}
void endHeaderSection();
- void startMemberHeader(const char *);
+ void startMemberHeader(const char *,int);
void endMemberHeader();
void insertMemberAlign(bool) {}
+ void insertMemberAlignLeft(int,bool){}
void startMemberSubtitle() {}
void endMemberSubtitle() {}
//void writeListItem();
@@ -160,7 +161,7 @@ class ManGenerator : public OutputGenerator
void endCenter() {}
void startSmall() {}
void endSmall() {}
- void startMemberDescription(const char *,const char *) { t << "\n.RI \""; firstCol=FALSE; }
+ void startMemberDescription(const char *,const char *,bool) { t << "\n.RI \""; firstCol=FALSE; }
void endMemberDescription() { t << "\""; firstCol=FALSE; }
void startMemberDeclaration() {}
void endMemberDeclaration(const char *,const char *) {}
diff --git a/src/markdown.cpp b/src/markdown.cpp
index f7526dc..0ca95a4 100644
--- a/src/markdown.cpp
+++ b/src/markdown.cpp
@@ -844,7 +844,7 @@ static int processLink(GrowBuf &out,const char *data,int,int size)
}
if (isToc) // special case for [TOC]
{
- if (g_current) g_current->stat=TRUE;
+ out.addStr("@tableofcontents");
}
else if (isImageLink)
{
@@ -1590,15 +1590,15 @@ static int writeTableBlock(GrowBuf &out,const char *data,int size)
int columns,start,end,cc;
i = findTableColumns(data,size,start,end,columns);
-
+
+ int headerStart = start;
+ int headerEnd = end;
+
#ifdef USE_ORIGINAL_TABLES
out.addStr("<table>");
// write table header, in range [start..end]
out.addStr("<tr>");
-
- int headerStart = start;
- int headerEnd = end;
#endif
// read cell alignments
@@ -1712,9 +1712,6 @@ static int writeTableBlock(GrowBuf &out,const char *data,int size)
QVector<QVector<TableCell> > tableContents;
tableContents.setAutoDelete(TRUE);
- int headerStart = start;
- int headerEnd = end;
-
int m=headerStart;
QVector<TableCell> *headerContents = new QVector<TableCell>(columns);
headerContents->setAutoDelete(TRUE);
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 0bd0701..819904f 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -1978,7 +1978,7 @@ void MemberDef::getLabels(QStrList &sl,Definition *container) const
bool extractPrivate = Config_getBool(EXTRACT_PRIVATE);
if (optVhdl)
{
- sl.append(VhdlDocGen::trTypeString(getMemberSpecifiers()));
+ sl.append(theTranslator->trVhdlType(getMemberSpecifiers(),TRUE));
}
else
{
@@ -2576,7 +2576,7 @@ void MemberDef::writeDocumentation(MemberList *ml,
else if (getFileDef()) { scopeName=getFileDef()->displayName(); scopedContainer=getFileDef(); }
ciname = ((GroupDef *)container)->groupTitle();
}
- else if (container->definitionType()==TypeFile && getNamespaceDef())
+ else if (container->definitionType()==TypeFile && getNamespaceDef() && lang != SrcLangExt_Python)
{ // member is in a namespace, but is written as part of the file documentation
// as well, so we need to make sure its label is unique.
memAnchor.prepend("file_");
diff --git a/src/outputgen.h b/src/outputgen.h
index 68356b4..44d34b8 100644
--- a/src/outputgen.h
+++ b/src/outputgen.h
@@ -380,7 +380,7 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void endMemberSections() = 0;
virtual void startHeaderSection() = 0;
virtual void endHeaderSection() = 0;
- virtual void startMemberHeader(const char *anchor) = 0;
+ virtual void startMemberHeader(const char *anchor, int typ) = 0;
virtual void endMemberHeader() = 0;
virtual void startMemberSubtitle() = 0;
virtual void endMemberSubtitle() = 0;
@@ -403,6 +403,7 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void startMemberGroup() = 0;
virtual void endMemberGroup(bool) = 0;
virtual void insertMemberAlign(bool) = 0;
+ virtual void insertMemberAlignLeft(int,bool) = 0;
virtual void startMemberDoc(const char *,const char *,
const char *,const char *,int,int,bool) = 0;
virtual void endMemberDoc(bool) = 0;
@@ -414,7 +415,7 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void writeStartAnnoItem(const char *type,const char *file,
const char *path,const char *name) = 0;
virtual void writeEndAnnoItem(const char *name) = 0;
- virtual void startMemberDescription(const char *anchor,const char *inheritId) = 0;
+ virtual void startMemberDescription(const char *anchor,const char *inheritId, bool typ) = 0;
virtual void endMemberDescription() = 0;
virtual void startMemberDeclaration() = 0;
virtual void endMemberDeclaration(const char *anchor,const char *inheritId) = 0;
diff --git a/src/outputlist.h b/src/outputlist.h
index 0738ed1..2e89101 100644
--- a/src/outputlist.h
+++ b/src/outputlist.h
@@ -191,8 +191,8 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startHeaderSection); }
void endHeaderSection()
{ forall(&OutputGenerator::endHeaderSection); }
- void startMemberHeader(const char *anchor)
- { forall(&OutputGenerator::startMemberHeader,anchor); }
+ void startMemberHeader(const char *anchor, int typ = 2)
+ { forall(&OutputGenerator::startMemberHeader,anchor,typ); }
void endMemberHeader()
{ forall(&OutputGenerator::endMemberHeader); }
void startMemberSubtitle()
@@ -237,6 +237,8 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::endMemberGroup,last); }
void insertMemberAlign(bool templ=FALSE)
{ forall(&OutputGenerator::insertMemberAlign,templ); }
+ void insertMemberAlignLeft(int typ=0, bool templ=FALSE)
+ { forall(&OutputGenerator::insertMemberAlignLeft,typ,templ); }
void writeRuler()
{ forall(&OutputGenerator::writeRuler); }
void writeAnchor(const char *fileName,const char *name)
@@ -306,8 +308,8 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startBold); }
void endBold()
{ forall(&OutputGenerator::endBold); }
- void startMemberDescription(const char *anchor,const char *inheritId=0)
- { forall(&OutputGenerator::startMemberDescription,anchor,inheritId); }
+ void startMemberDescription(const char *anchor,const char *inheritId=0, bool typ = false)
+ { forall(&OutputGenerator::startMemberDescription,anchor,inheritId, typ); }
void endMemberDescription()
{ forall(&OutputGenerator::endMemberDescription); }
void startMemberDeclaration()
diff --git a/src/pre.l b/src/pre.l
index bf1ec9b..37f7115 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -3195,7 +3195,7 @@ void preprocessFile(const char *fileName,BufStr &input,BufStr &output)
{
CondCtx *ctx = g_condStack.pop();
QCString sectionInfo = " ";
- if (ctx->sectionId!=" ") sectionInfo.sprintf(" with label %s ",ctx->sectionId.data());
+ if (ctx->sectionId!=" ") sectionInfo.sprintf(" with label '%s' ",ctx->sectionId.stripWhiteSpace().data());
warn(fileName,ctx->lineNr,"Conditional section%sdoes not have "
"a corresponding \\endcond command within this file.",sectionInfo.data());
delete ctx;
diff --git a/src/pycode.l b/src/pycode.l
index fe1eef5..1b176d6 100644
--- a/src/pycode.l
+++ b/src/pycode.l
@@ -884,7 +884,7 @@ SHORTSTRINGITEM ({SHORTSTRINGCHAR}|{ESCAPESEQ})
SHORTSTRINGCHAR [^\\\n"]
STRINGLITERAL {STRINGPREFIX}?( {SHORTSTRING} | {LONGSTRING})
STRINGPREFIX ("r"|"u"|"ur"|"R"|"U"|"UR"|"Ur"|"uR")
-KEYWORD ("lambda"|"import"|"class"|"assert"|"as"|"from"|"global"|"def"|"True"|"False")
+KEYWORD ("lambda"|"import"|"class"|"assert"|"with"|"as"|"from"|"global"|"def"|"True"|"False")
FLOWKW ("or"|"and"|"is"|"not"|"print"|"for"|"in"|"if"|"try"|"except"|"yield"|"raise"|"break"|"continue"|"pass"|"if"|"return"|"while"|"elif"|"else"|"finally")
QUOTES ("\""[^"]*"\"")
SINGLEQUOTES ("'"[^']*"'")
@@ -1382,21 +1382,43 @@ TARGET ({IDENTIFIER}|"("{TARGET_LIST}")"|"["{TARGET_LIST}"]"|{ATTRIBUT
}
*/
-<*>{STRINGPREFIX}?{TRISINGLEQUOTE} |
+<*>{STRINGPREFIX}?{TRISINGLEQUOTE} {
+ if (YY_START==SingleQuoteString) REJECT;
+ startFontClass("stringliteral");
+ g_stringContext=YY_START;
+ g_doubleQuote=yytext[yyleng-1]=='"';
+ codify(yytext);
+ BEGIN(TripleString);
+ }
<*>{STRINGPREFIX}?{TRIDOUBLEQUOTE} {
- startFontClass("stringliteral");
+ if (YY_START==DoubleQuoteString) REJECT;
+ startFontClass("stringliteral");
g_stringContext=YY_START;
g_doubleQuote=yytext[yyleng-1]=='"';
- codify(yytext);
+ codify(yytext);
BEGIN(TripleString);
}
<*>{STRINGPREFIX}?"'" { // single quoted string
+ if (YY_START==SingleQuoteString ||
+ YY_START==DoubleQuoteString ||
+ YY_START==TripleString
+ )
+ {
+ REJECT;
+ }
startFontClass("stringliteral");
g_stringContext=YY_START;
codify(yytext);
BEGIN(SingleQuoteString);
}
<*>{STRINGPREFIX}?"\"" { // double quoted string
+ if (YY_START==SingleQuoteString ||
+ YY_START==DoubleQuoteString ||
+ YY_START==TripleString
+ )
+ {
+ REJECT;
+ }
startFontClass("stringliteral");
g_stringContext=YY_START;
codify(yytext);
diff --git a/src/pyscanner.l b/src/pyscanner.l
index 5c9aef5..4718e3b 100644
--- a/src/pyscanner.l
+++ b/src/pyscanner.l
@@ -487,7 +487,6 @@ SHORTSTRINGITEM ({SHORTSTRINGCHAR}|{ESCAPESEQ})
SHORTSTRINGCHAR [^\\\n"]
STRINGLITERAL {STRINGPREFIX}?( {SHORTSTRING} | {LONGSTRING})
STRINGPREFIX ("r"|"u"|"ur"|"R"|"U"|"UR"|"Ur"|"uR")
-KEYWORD ("lambda"|"import"|"class"|"assert"|"as"|"from"|"global"|"def"|"True"|"False")
FLOWKW ("or"|"and"|"is"|"not"|"print"|"for"|"in"|"if"|"try"|"except"|"yield"|"raise"|"break"|"continue"|"pass"|"if"|"return"|"while"|"elif"|"else"|"finally")
POUNDCOMMENT "#"[^#\n][^\n]*
SCRIPTCOMMENT "#!".*
diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp
index c85b638..ec6d015 100644
--- a/src/rtfdocvisitor.cpp
+++ b/src/rtfdocvisitor.cpp
@@ -526,9 +526,21 @@ void RTFDocVisitor::visit(DocIncOperator *op)
void RTFDocVisitor::visit(DocFormula *f)
{
if (m_hide) return;
- // TODO: do something sensible here, like including a bitmap
DBG_RTF("{\\comment RTFDocVisitor::visit(DocFormula)}\n");
- m_t << f->text();
+ bool bDisplay = !f->isInline();
+ if (bDisplay)
+ {
+ m_t << "\\par";
+ m_t << "{";
+ m_t << "\\pard\\plain";
+ m_t << "\\pard";
+ m_t << "\\qc";
+ }
+ m_t << "{ \\field\\flddirty {\\*\\fldinst INCLUDEPICTURE \"" << f->relPath() << f->name() << ".png\" \\\\d \\\\*MERGEFORMAT}{\\fldrslt Image}}";
+ if (bDisplay)
+ {
+ m_t << "\\par}";
+ }
m_lastIsPara=FALSE;
}
@@ -1067,7 +1079,7 @@ void RTFDocVisitor::visitPost(DocHtmlHeader *)
{
if (m_hide) return;
DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlHeader)}\n");
- // close open table of contens entry
+ // close open table of contents entry
m_t << "} \\par";
m_t << "}" << endl; // end section
m_lastIsPara=TRUE;
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index 7fcfbb3..64da929 100644
--- a/src/rtfgen.cpp
+++ b/src/rtfgen.cpp
@@ -244,7 +244,22 @@ void RTFGenerator::beginRTFDocument()
t <<"\\red128\\green0\\blue0;";
t <<"\\red128\\green128\\blue0;";
t <<"\\red128\\green128\\blue128;";
- t <<"\\red192\\green192\\blue192;}" << endl;
+ t <<"\\red192\\green192\\blue192;";
+
+ // code highlighting colors. Note order is important see also RTFGenerator::startFontClass
+ t <<"\\red0\\green128\\blue0;"; // keyword = index 17
+ t <<"\\red96\\green64\\blue32;"; // keywordtype
+ t <<"\\rede0\\green128\\blue0;"; // keywordflow
+ t <<"\\red128\\green0\\blue0;"; // comment
+ t <<"\\red128\\green96\\blue32;"; // preprocessor
+ t <<"\\red0\\green32\\blue128;"; // stringliteral
+ t <<"\\red0\\green128\\blue128;"; // charliteral
+ t <<"\\red255\\green0\\blue255;"; // vhdldigit
+ t <<"\\red0\\green0\\blue0;"; // vhdlchar
+ t <<"\\red112\\green0\\blue112;"; // vhdlkeyword
+ t <<"\\red255\\green0\\blue0;"; // vhdllogic
+
+ t <<"}\n";
DBG_RTF(t <<"{\\comment Beginning style list}\n")
t <<"{\\stylesheet\n";
@@ -575,7 +590,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
break;
case isTitlePageAuthor:
{
- t << "Doxgyen. }\n";
+ t << " doxygen.}\n";
t << "{\\creatim " << dateToRTFDateString() << "}\n}";
DBG_RTF(t << "{\\comment end of infoblock}\n");
// setup for this section
@@ -602,7 +617,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
t << rtf_Style_Reset << rtf_Style["Title"]->reference << endl; // set to title style
if (rtf_title)
// User has overridden document title in extensions file
- t << "{\\field\\fldedit {\\*\\fldinst " << rtf_title << " \\\\*MERGEFORMAT}{\\fldrslt " << rtf_title << "}}\\par" << endl;
+ t << "{\\field\\fldedit {\\*\\fldinst TITLE \\\\*MERGEFORMAT}{\\fldrslt " << rtf_title << "}}\\par" << endl;
else
{
DocText *root = validatingParseText(projectName);
@@ -703,7 +718,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
}
else if (vhdlOpt)
{
- t << "{\\tc \\v " << VhdlDocGen::trDesignUnitIndex() << "}"<< endl;
+ t << "{\\tc \\v " << theTranslator->trDesignUnitIndex() << "}"<< endl;
}
else
{
@@ -1626,7 +1641,7 @@ void RTFGenerator::endDescItem()
newParagraph();
}
-void RTFGenerator::startMemberDescription(const char *,const char *)
+void RTFGenerator::startMemberDescription(const char *,const char *,bool)
{
DBG_RTF(t << "{\\comment (startMemberDescription)}" << endl)
t << "{" << endl;
@@ -1639,11 +1654,11 @@ void RTFGenerator::endMemberDescription()
{
DBG_RTF(t << "{\\comment (endMemberDescription)}" << endl)
endEmphasis();
- newParagraph();
+ //newParagraph();
decrementIndentLevel();
- //t << "\\par";
+ t << "\\par";
t << "}" << endl;
- //m_omitParagraph = TRUE;
+ m_omitParagraph = TRUE;
}
void RTFGenerator::startDescList(SectionTypes)
@@ -3041,5 +3056,25 @@ void RTFGenerator::endLabels()
{
}
+void RTFGenerator::startFontClass(const char *name)
+{
+ int cod = 2;
+ QCString qname(name);
+ if (qname == "keyword") cod = 17;
+ else if (qname == "keywordtype") cod = 18;
+ else if (qname == "keywordflow") cod = 19;
+ else if (qname == "comment") cod = 20;
+ else if (qname == "preprocessor") cod = 21;
+ else if (qname == "stringliteral") cod = 22;
+ else if (qname == "charliteral") cod = 23;
+ else if (qname == "vhdldigit") cod = 24;
+ else if (qname == "vhdlchar") cod = 25;
+ else if (qname == "vhdlkeyword") cod = 26;
+ else if (qname == "vhdllogic") cod = 27;
+ t << "{\\cf" << cod << " ";
+}
-
+void RTFGenerator::endFontClass()
+{
+ t << "}";
+}
diff --git a/src/rtfgen.h b/src/rtfgen.h
index d8f6ca7..bb3146a 100644
--- a/src/rtfgen.h
+++ b/src/rtfgen.h
@@ -103,7 +103,7 @@ class RTFGenerator : public OutputGenerator
void endMemberSections() {}
void startHeaderSection() {}
void endHeaderSection() {}
- void startMemberHeader(const char *) { startGroupHeader(FALSE); }
+ void startMemberHeader(const char *,int) { startGroupHeader(FALSE); }
void endMemberHeader() { endGroupHeader(FALSE); }
void startMemberSubtitle();
void endMemberSubtitle();
@@ -120,6 +120,7 @@ class RTFGenerator : public OutputGenerator
void startMemberTemplateParams() {}
void endMemberTemplateParams(const char *,const char *) {}
void insertMemberAlign(bool) {}
+ void insertMemberAlignLeft(int,bool){}
void writeRuler() { rtfwriteRuler_thin(); }
@@ -156,7 +157,7 @@ class RTFGenerator : public OutputGenerator
void startSmall() { t << "{\\sub "; }
void endSmall() { t << "}"; }
- void startMemberDescription(const char *,const char *);
+ void startMemberDescription(const char *,const char *,bool);
void endMemberDescription();
void startMemberDeclaration() {}
void endMemberDeclaration(const char *,const char *) {}
@@ -257,8 +258,8 @@ class RTFGenerator : public OutputGenerator
void writeLabel(const char *l,bool isLast);
void endLabels();
- void startFontClass(const char *) {}
- void endFontClass() {}
+ void startFontClass(const char *);
+ void endFontClass();
void writeCodeAnchor(const char *) {}
void setCurrentDoc(Definition *,const char *,bool) {}
diff --git a/src/scanner.l b/src/scanner.l
index 3609d32..21b845f 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -4793,7 +4793,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
<FuncQual>{ID} { // typically a K&R style C function
if (insideCS && qstrcmp(yytext,"where")==0)
{
- // type contraint for a method
+ // type constraint for a method
delete current->typeConstr;
current->typeConstr = new ArgumentList;
current->typeConstr->append(new Argument);
@@ -5535,7 +5535,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
baseName.resize(0);
BEGIN( BasesProt ) ;
}
- else if (insideCS && qstrcmp(yytext,"where")==0) // C# type contraint
+ else if (insideCS && qstrcmp(yytext,"where")==0) // C# type constraint
{
delete current->typeConstr;
current->typeConstr = new ArgumentList;
@@ -5815,7 +5815,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
QCString baseScope = yytext;
if (insideCS && baseScope.stripWhiteSpace()=="where")
{
- // type contraint for a class
+ // type constraint for a class
delete current->typeConstr;
current->typeConstr = new ArgumentList;
current->typeConstr->append(new Argument);
diff --git a/src/translator.h b/src/translator.h
index 7092174..9da2317 100644
--- a/src/translator.h
+++ b/src/translator.h
@@ -19,6 +19,8 @@
#define TRANSLATOR_H
#include "classdef.h"
+#include "config.h"
+#include "vhdldocgen.h"
/** Abstract base class for all translatable text fragments. */
class Translator
@@ -41,6 +43,36 @@ class Translator
virtual QCString idLanguage() = 0;
virtual QCString latexLanguageSupportCommand() = 0;
+ /*!
+ * Sets the LaTeX font encoding to be used. The default is set to `T1`,
+ * in case another font encoding has to be used this can be specified with
+ * this routine. In case no font encoding is required the empty string
+ * can be returned.
+ */
+ virtual QCString latexFontenc() { return "T1"; }
+ /*!
+ * Sets the commands to be insered directly after the `\\begin{document}`
+ * in the LaTeX document.
+ */
+ virtual QCString latexDocumentPre() { return ""; }
+ /*!
+ * Sets the commands to be insered directly before the `\\end{document}`
+ * in the LaTeX document.
+ */
+ virtual QCString latexDocumentPost() { return ""; }
+ /*!
+ * Set the name to be used as latex command.
+ */
+ virtual QCString latexCommandName()
+ {
+ QCString latex_command = Config_getString(LATEX_CMD_NAME);
+ if (latex_command.isEmpty()) latex_command = "latex";
+ if (Config_getBool(USE_PDFLATEX))
+ {
+ if (latex_command == "latex") latex_command = "pdflatex";
+ }
+ return latex_command;
+ }
// --- Language translation methods -------------------
@@ -570,6 +602,20 @@ class Translator
virtual QCString trSingletonReference(const char *sName) = 0;
virtual QCString trServiceGeneratedFromFiles(bool single) = 0;
virtual QCString trSingletonGeneratedFromFiles(bool single) = 0;
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.8.15
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trDesignUnitHierarchy() = 0;
+ virtual QCString trDesignUnitList() = 0;
+ virtual QCString trDesignUnitMembers() = 0;
+ virtual QCString trDesignUnitListDescription() = 0;
+ virtual QCString trDesignUnitIndex() = 0;
+ virtual QCString trDesignUnits() = 0;
+ virtual QCString trFunctionAndProc() = 0;
+ virtual QCString trVhdlType(uint64 type,bool single) = 0;
+ virtual QCString trCustomReference(const char *name) = 0;
};
#endif
diff --git a/src/translator_adapter.h b/src/translator_adapter.h
index 254876a..e66c9bf 100644
--- a/src/translator_adapter.h
+++ b/src/translator_adapter.h
@@ -41,7 +41,40 @@ class TranslatorAdapterBase : public Translator
};
-class TranslatorAdapter_1_8_4 : public TranslatorAdapterBase
+class TranslatorAdapter_1_8_15 : public TranslatorAdapterBase
+{
+ public:
+ virtual QCString updateNeededMessage()
+ { return createUpdateNeededMessage(idLanguage(),"release 1.8.15"); }
+
+ virtual QCString trDesignUnitHierarchy()
+ { return english.trDesignUnitHierarchy(); }
+
+ virtual QCString trDesignUnitList()
+ { return english.trDesignUnitList(); }
+
+ virtual QCString trDesignUnitMembers()
+ { return english.trDesignUnitMembers(); }
+
+ virtual QCString trDesignUnitListDescription()
+ { return english.trDesignUnitListDescription(); }
+
+ virtual QCString trDesignUnitIndex()
+ { return english.trDesignUnitIndex(); }
+
+ virtual QCString trDesignUnits()
+ { return english.trDesignUnits(); }
+
+ virtual QCString trFunctionAndProc()
+ { return english.trFunctionAndProc(); }
+
+ virtual QCString trVhdlType(uint64 type,bool single)
+ { return english.trVhdlType(type,single); }
+ virtual QCString trCustomReference(const char *name)
+ { return english.trCustomReference(name); }
+};
+
+class TranslatorAdapter_1_8_4 : public TranslatorAdapter_1_8_15
{
public:
virtual QCString updateNeededMessage()
diff --git a/src/translator_am.h b/src/translator_am.h
index 6f5e671..5b4c446 100644
--- a/src/translator_am.h
+++ b/src/translator_am.h
@@ -32,8 +32,8 @@ class TranslatorArmenian : public TranslatorAdapter_1_8_0
/* Used to get the command(s) for the language support. */
virtual QCString latexLanguageSupportCommand()
{
- return "<pre>\\usepackage[latin]{armtex}\n"
- "\\usepackage[armscii8]{inputenc}\n</pre>";
+ return "\\usepackage[latin]{armtex}\n"
+ "\\usepackage[armscii8]{inputenc}\n";
}
// --- Language translation methods -------------------
diff --git a/src/translator_br.h b/src/translator_br.h
index a294ee0..774e554 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -1,5 +1,5 @@
/******************************************************************************
- * Copyright (C) 1997-2017 by Dimitri van Heesch.
+ * Copyright (C) 1997-2018 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
@@ -10,14 +10,16 @@
* Documents produced by Doxygen are derivative workns derived from the
* input used in their production; they are not affected by this license.
*
- * Brazilian Portuguese translation version 20100531
+ * Brazilian Portuguese translation
* Maintainer:
- * Fabio "FJTC" Jun Takada Chino <jun-chino at uol.com.br>
+ * Fabio "FJTC" Jun Takada Chino <fjtc at brokenbits dot com dot br>
* Collaborators:
* Emerson Ferreira <nuskorpios at gmail dot com>
* Thanks to Jorge Ramos, Fernando Carijo and others for their contributions.
*
* History:
+ * 20180612:
+ * - Updated to 1.8.15;
* 20170123:
* - Full translation revision;
* - trLegendDocs() is now synchronized with the English version;
@@ -2082,6 +2084,122 @@ class TranslatorBrazilian : public Translator
return result;
}
+ //////////////////////////////////////////////////////////////////////////
+ // new since 1.8.15
+ //////////////////////////////////////////////////////////////////////////
+
+ /** VHDL design unit hierarchy */
+ virtual QCString trDesignUnitHierarchy()
+ { return "Hierarquia da Unidade de Design"; }
+ /** VHDL design unit list */
+ virtual QCString trDesignUnitList()
+ { return "Lista de Unidades de Design"; }
+ /** VHDL design unit members */
+ virtual QCString trDesignUnitMembers()
+ { return "Membros da Unidade de Design"; }
+ /** VHDL design unit list description */
+ virtual QCString trDesignUnitListDescription()
+ {
+ return "Esta é uma lista de todos os membros de unidades de design "
+ "com ligações para as entidades às quais pertencem:";
+ }
+ /** VHDL design unit index */
+ virtual QCString trDesignUnitIndex()
+ { return "Índice de Unidades de Design"; }
+ /** VHDL design units */
+ virtual QCString trDesignUnits()
+ { return "Unidades de Design"; }
+ /** VHDL functions/procedures/processes */
+ virtual QCString trFunctionAndProc()
+ { return "Funções/Procedimentos/Processos"; }
+ /** VHDL type */
+ virtual QCString trVhdlType(uint64 type,bool single)
+ {
+ switch(type)
+ {
+ case VhdlDocGen::LIBRARY:
+ if (single) return "Biblioteca";
+ else return "Bibliotecas";
+ case VhdlDocGen::PACKAGE:
+ if (single) return "Pacote";
+ else return "Pacotes";
+ case VhdlDocGen::SIGNAL:
+ if (single) return "Sinal";
+ else return "Sinais";
+ case VhdlDocGen::COMPONENT:
+ if (single) return "Componente";
+ else return "Componentes";
+ case VhdlDocGen::CONSTANT:
+ if (single) return "Constante";
+ else return "Constantes";
+ case VhdlDocGen::ENTITY:
+ if (single) return "Entidade";
+ else return "Entidades";
+ case VhdlDocGen::TYPE:
+ if (single) return "Tipo";
+ else return "Tipos";
+ case VhdlDocGen::SUBTYPE:
+ if (single) return "Subtipo";
+ else return "Subtipos";
+ case VhdlDocGen::FUNCTION:
+ if (single) return "Função";
+ else return "Funções";
+ case VhdlDocGen::RECORD:
+ if (single) return "Registro";
+ else return "Registros";
+ case VhdlDocGen::PROCEDURE:
+ if (single) return "Procedimento";
+ else return "Procedimentos";
+ case VhdlDocGen::ARCHITECTURE:
+ if (single) return "Arquitetura";
+ else return "Arquiteturas";
+ case VhdlDocGen::ATTRIBUTE:
+ if (single) return "Atributo";
+ else return "Atributos";
+ case VhdlDocGen::PROCESS:
+ if (single) return "Processo";
+ else return "Processos";
+ case VhdlDocGen::PORT:
+ if (single) return "Porta";
+ else return "Portas";
+ case VhdlDocGen::USE:
+ if (single) return "cláusula de uso";
+ else return "cláusulas de uso";
+ case VhdlDocGen::GENERIC:
+ if (single) return "Generico";
+ else return "Genericos";
+ case VhdlDocGen::PACKAGE_BODY:
+ return "Corpo do Pacote";
+ case VhdlDocGen::UNITS:
+ return "Unidades";
+ case VhdlDocGen::SHAREDVARIABLE:
+ if (single) return "Variável Compartilhada";
+ else return "Variáveis Compartilhadas";
+ case VhdlDocGen::VFILE:
+ if (single) return "Arquivo";
+ else return "Arquivos";
+ case VhdlDocGen::GROUP:
+ if (single) return "Grupo";
+ else return "Grupos";
+ case VhdlDocGen::INSTANTIATION:
+ if (single) return "Instância";
+ else return "Instâncias";
+ case VhdlDocGen::ALIAS:
+ if (single) return "Apelido";
+ else return "Apelidos";
+ case VhdlDocGen::CONFIG:
+ if (single) return "Configuração";
+ else return "Configurações";
+ case VhdlDocGen::MISCELLANEOUS:
+ return "Outros"; // Is this correct for VHDL?
+ case VhdlDocGen::UCF_CONST:
+ return "Restrições";
+ default:
+ return "Classe";
+ }
+ }
+ virtual QCString trCustomReference(const char *name)
+ { return "Referência de " + QCString(name); }
//////////////////////////////////////////////////////////////////////////
diff --git a/src/translator_cn.h b/src/translator_cn.h
index fc0cf3c..0e559c1 100644
--- a/src/translator_cn.h
+++ b/src/translator_cn.h
@@ -24,7 +24,7 @@
*/
#define CN_SPC " "
-class TranslatorChinese : public Translator
+class TranslatorChinese : public TranslatorAdapter_1_8_15
{
public:
/*! Used for identification of the language. The identification
@@ -53,8 +53,20 @@ class TranslatorChinese : public Translator
*/
virtual QCString latexLanguageSupportCommand()
{
+ return "\\usepackage{CJKutf8}\n";
+ }
+ virtual QCString latexFontenc()
+ {
return "";
}
+ virtual QCString latexDocumentPre()
+ {
+ return "\\begin{CJK}{UTF8}{min}\n";
+ }
+ virtual QCString latexDocumentPost()
+ {
+ return "\\end{CJK}\n";
+ }
/*! used in the compound documentation before a list of related functions.
*/
diff --git a/src/translator_cz.h b/src/translator_cz.h
index 056d0e4..9d6c489 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -85,7 +85,7 @@
// something else. It is difficult to find the general translation
// for all kinds in the Czech language.
-class TranslatorCzech : public Translator
+class TranslatorCzech : public TranslatorAdapter_1_8_15
{
public:
// --- Language control methods -------------------
@@ -96,7 +96,13 @@ class TranslatorCzech : public Translator
virtual QCString latexLanguageSupportCommand()
{
return "\\usepackage[T2A]{fontenc}\n"
- "\\usepackage[czech]{babel}\n";
+ "\\usepackage[czech]{babel}\n"
+ "\\usepackage{regexpatch}\n"
+ "\\makeatletter\n"
+ "% Change the `-` delimiter to an active character\n"
+ "\\xpatchparametertext\\@@@cmidrule{-}{\\cA-}{}{}\n"
+ "\\xpatchparametertext\\@cline{-}{\\cA-}{}{}\n"
+ "\\makeatother\n";
}
// --- Language translation methods -------------------
diff --git a/src/translator_de.h b/src/translator_de.h
index d63bdcf..8e6ec2c 100644
--- a/src/translator_de.h
+++ b/src/translator_de.h
@@ -316,8 +316,17 @@ class TranslatorGerman : public Translator
/*! This is an introduction to the class hierarchy. */
virtual QCString trClassHierarchyDescription()
- { return "Die Liste der Ableitungen ist -mit Einschränkungen- "
- "alphabetisch sortiert:";
+ {
+ if (Config_getBool(OPTIMIZE_OUTPUT_VHDL))
+ {
+ return "Hier folgt eine hierarchische Auflistung der "
+ "Entwurfseinheiten:";
+ }
+ else
+ {
+ return "Die Liste der Ableitungen ist -mit Einschränkungen- "
+ "alphabetisch sortiert:";
+ }
}
/*! This is an introduction to the list with all files. */
@@ -469,6 +478,10 @@ class TranslatorGerman : public Translator
{
return "Datenstruktur-Dokumentation";
}
+ else if (Config_getBool(OPTIMIZE_OUTPUT_VHDL))
+ {
+ return "Entwurfseinheiten-Dokumentation";
+ }
else
{
return "Klassen-Dokumentation";
@@ -2125,6 +2138,123 @@ class TranslatorGerman : public Translator
}
//////////////////////////////////////////////////////////////////////////
+// new since 1.8.15
+//////////////////////////////////////////////////////////////////////////
+
+ /** VHDL design unit hierarchy */
+ virtual QCString trDesignUnitHierarchy()
+ { return "Entwurfseinheiten-Hierarchie"; }
+ /** VHDL design unit list */
+ virtual QCString trDesignUnitList()
+ { return "Auflistung der Entwurfseinheiten"; }
+ /** VHDL design unit members */
+ virtual QCString trDesignUnitMembers()
+ { return "Entwurfseinheiten-Elemente"; }
+ /** VHDL design unit list description */
+ virtual QCString trDesignUnitListDescription()
+ {
+ return "Hier folgt die Aufzählung aller Entwurfseinheiten und deren "
+ "Elemente mit einer Kurzbeschreibung:";
+ }
+ /** VHDL design unit index */
+ virtual QCString trDesignUnitIndex()
+ { return "Entwurfseinheiten-Verzeichnis"; }
+ /** VHDL design units */
+ virtual QCString trDesignUnits()
+ { return "Entwurfseinheiten"; }
+ /** VHDL functions/procedures/processes */
+ virtual QCString trFunctionAndProc()
+ { return "Funktionen/Prozeduren/Prozesse"; }
+ /** VHDL type */
+ virtual QCString trVhdlType(uint64 type,bool single)
+ {
+ switch(type)
+ {
+ case VhdlDocGen::LIBRARY:
+ if (single) return "Bibliothek";
+ else return "Bibliotheken";
+ case VhdlDocGen::PACKAGE:
+ if (single) return "Paket";
+ else return "Pakete";
+ case VhdlDocGen::SIGNAL:
+ if (single) return "Signal";
+ else return "Signale";
+ case VhdlDocGen::COMPONENT:
+ if (single) return "Komponente";
+ else return "Komponenten";
+ case VhdlDocGen::CONSTANT:
+ if (single) return "Konstante";
+ else return "Konstanten";
+ case VhdlDocGen::ENTITY:
+ if (single) return "Entwurfseinheit";
+ else return "Entwurfseinheiten";
+ case VhdlDocGen::TYPE:
+ if (single) return "Typ";
+ else return "Typen";
+ case VhdlDocGen::SUBTYPE:
+ if (single) return "Subtyp";
+ else return "Subtypen";
+ case VhdlDocGen::FUNCTION:
+ if (single) return "Funktion";
+ else return "Funktionen";
+ case VhdlDocGen::RECORD:
+ if (single) return "Datenstruktur";
+ else return "Datenstrukturen";
+ case VhdlDocGen::PROCEDURE:
+ if (single) return "Prozedur";
+ else return "Prozeduren";
+ case VhdlDocGen::ARCHITECTURE:
+ if (single) return "Architektur";
+ else return "Architekturen";
+ case VhdlDocGen::ATTRIBUTE:
+ if (single) return "Attribut";
+ else return "Attribute";
+ case VhdlDocGen::PROCESS:
+ if (single) return "Prozess";
+ else return "Prozesse";
+ case VhdlDocGen::PORT:
+ if (single) return "Schnittstelle";
+ else return "Schnittstellen";
+ case VhdlDocGen::USE:
+ if (single) return "Use Klausel";
+ else return "Use Klauseln";
+ case VhdlDocGen::GENERIC:
+ if (single) return "Parameter";
+ else return "Parameter";
+ case VhdlDocGen::PACKAGE_BODY:
+ return "Paketkörper";
+ case VhdlDocGen::UNITS:
+ return "Einheiten";
+ case VhdlDocGen::SHAREDVARIABLE:
+ if (single) return "Geteilte Variable";
+ else return "Geteilte Variablen";
+ case VhdlDocGen::VFILE:
+ if (single) return "Datei";
+ else return "Dateien";
+ case VhdlDocGen::GROUP:
+ if (single) return "Gruppe";
+ else return "Gruppen";
+ case VhdlDocGen::INSTANTIATION:
+ if (single) return "Instanziierung";
+ else return "Instanziierungen";
+ case VhdlDocGen::ALIAS:
+ if (single) return "Alias";
+ else return "Aliase";
+ case VhdlDocGen::CONFIG:
+ if (single) return "Konfiguration";
+ else return "Konfigurationen";
+ case VhdlDocGen::MISCELLANEOUS:
+ return "Verschiedenes";
+ case VhdlDocGen::UCF_CONST:
+ return "Constraints";
+ default:
+ return "Klasse";
+ }
+ }
+ virtual QCString trCustomReference(const char *name)
+ { return QCString(name)+"-Referenz"; }
+
+//////////////////////////////////////////////////////////////////////////
};
diff --git a/src/translator_dk.h b/src/translator_dk.h
index e98cfa8..70e9032 100644
--- a/src/translator_dk.h
+++ b/src/translator_dk.h
@@ -116,8 +116,7 @@ class TranslatorDanish : public TranslatorAdapter_1_8_0
virtual QCString latexLanguageSupportCommand()
{
return
- "\\usepackage[danish]{babel}\n"
- "\\usepackage[T1]{fontenc}\n";
+ "\\usepackage[danish]{babel}\n";
}
// --- Language translation methods -------------------
diff --git a/src/translator_en.h b/src/translator_en.h
index 190ba79..d12621e 100644
--- a/src/translator_en.h
+++ b/src/translator_en.h
@@ -224,8 +224,16 @@ class TranslatorEnglish : public Translator
/*! This is an introduction to the class hierarchy. */
virtual QCString trClassHierarchyDescription()
- { return "This inheritance list is sorted roughly, "
- "but not completely, alphabetically:";
+ {
+ if (Config_getBool(OPTIMIZE_OUTPUT_VHDL))
+ {
+ return "Here is a hierarchical list of all entities:";
+ }
+ else
+ {
+ return "This inheritance list is sorted roughly, "
+ "but not completely, alphabetically:";
+ }
}
/*! This is an introduction to the list with all files. */
@@ -1993,6 +2001,123 @@ class TranslatorEnglish : public Translator
}
//////////////////////////////////////////////////////////////////////////
+// new since 1.8.15
+//////////////////////////////////////////////////////////////////////////
+
+ /** VHDL design unit hierarchy */
+ virtual QCString trDesignUnitHierarchy()
+ { return "Design Unit Hierarchy"; }
+ /** VHDL design unit list */
+ virtual QCString trDesignUnitList()
+ { return "Design Unit List"; }
+ /** VHDL design unit members */
+ virtual QCString trDesignUnitMembers()
+ { return "Design Unit Members"; }
+ /** VHDL design unit list description */
+ virtual QCString trDesignUnitListDescription()
+ {
+ return "Here is a list of all design unit members with links to "
+ "the Entities they belong to:";
+ }
+ /** VHDL design unit index */
+ virtual QCString trDesignUnitIndex()
+ { return "Design Unit Index"; }
+ /** VHDL design units */
+ virtual QCString trDesignUnits()
+ { return "Design Units"; }
+ /** VHDL functions/procedures/processes */
+ virtual QCString trFunctionAndProc()
+ { return "Functions/Procedures/Processes"; }
+ /** VHDL type */
+ virtual QCString trVhdlType(uint64 type,bool single)
+ {
+ switch(type)
+ {
+ case VhdlDocGen::LIBRARY:
+ if (single) return "Library";
+ else return "Libraries";
+ case VhdlDocGen::PACKAGE:
+ if (single) return "Package";
+ else return "Packages";
+ case VhdlDocGen::SIGNAL:
+ if (single) return "Signal";
+ else return "Signals";
+ case VhdlDocGen::COMPONENT:
+ if (single) return "Component";
+ else return "Components";
+ case VhdlDocGen::CONSTANT:
+ if (single) return "Constant";
+ else return "Constants";
+ case VhdlDocGen::ENTITY:
+ if (single) return "Entity";
+ else return "Entities";
+ case VhdlDocGen::TYPE:
+ if (single) return "Type";
+ else return "Types";
+ case VhdlDocGen::SUBTYPE:
+ if (single) return "Subtype";
+ else return "Subtypes";
+ case VhdlDocGen::FUNCTION:
+ if (single) return "Function";
+ else return "Functions";
+ case VhdlDocGen::RECORD:
+ if (single) return "Record";
+ else return "Records";
+ case VhdlDocGen::PROCEDURE:
+ if (single) return "Procedure";
+ else return "Procedures";
+ case VhdlDocGen::ARCHITECTURE:
+ if (single) return "Architecture";
+ else return "Architectures";
+ case VhdlDocGen::ATTRIBUTE:
+ if (single) return "Attribute";
+ else return "Attributes";
+ case VhdlDocGen::PROCESS:
+ if (single) return "Process";
+ else return "Processes";
+ case VhdlDocGen::PORT:
+ if (single) return "Port";
+ else return "Ports";
+ case VhdlDocGen::USE:
+ if (single) return "use clause";
+ else return "Use Clauses";
+ case VhdlDocGen::GENERIC:
+ if (single) return "Generic";
+ else return "Generics";
+ case VhdlDocGen::PACKAGE_BODY:
+ return "Package Body";
+ case VhdlDocGen::UNITS:
+ return "Units";
+ case VhdlDocGen::SHAREDVARIABLE:
+ if (single) return "Shared Variable";
+ else return "Shared Variables";
+ case VhdlDocGen::VFILE:
+ if (single) return "File";
+ else return "Files";
+ case VhdlDocGen::GROUP:
+ if (single) return "Group";
+ else return "Groups";
+ case VhdlDocGen::INSTANTIATION:
+ if (single) return "Instantiation";
+ else return "Instantiations";
+ case VhdlDocGen::ALIAS:
+ if (single) return "Alias";
+ else return "Aliases";
+ case VhdlDocGen::CONFIG:
+ if (single) return "Configuration";
+ else return "Configurations";
+ case VhdlDocGen::MISCELLANEOUS:
+ return "Miscellaneous";
+ case VhdlDocGen::UCF_CONST:
+ return "Constraints";
+ default:
+ return "Class";
+ }
+ }
+ virtual QCString trCustomReference(const char *name)
+ { return QCString(name)+" Reference"; }
+
+//////////////////////////////////////////////////////////////////////////
};
diff --git a/src/translator_es.h b/src/translator_es.h
index 8922297..5f89f24 100644
--- a/src/translator_es.h
+++ b/src/translator_es.h
@@ -34,7 +34,7 @@
* Updated to 1.8.4 by Bartomeu Creus Navarro (17-julio-2013)
*/
-class TranslatorSpanish : public Translator
+class TranslatorSpanish : public TranslatorAdapter_1_8_15
{
public:
diff --git a/src/translator_fr.h b/src/translator_fr.h
index 9775a29..b0fb5b1 100644
--- a/src/translator_fr.h
+++ b/src/translator_fr.h
@@ -103,7 +103,7 @@
// Translator class (by the local maintainer) when the localized
// translator is made up-to-date again.
-class TranslatorFrench : public Translator
+class TranslatorFrench : public TranslatorAdapter_1_8_15
{
public:
diff --git a/src/translator_gr.h b/src/translator_gr.h
index 8b7afe1..6ed43db 100644
--- a/src/translator_gr.h
+++ b/src/translator_gr.h
@@ -42,7 +42,7 @@
#ifndef TRANSLATOR_GR_H
#define TRANSLATOR_GR_H
-class TranslatorGreek : public Translator
+class TranslatorGreek : public TranslatorAdapter_1_8_15
{
public:
@@ -59,8 +59,8 @@ class TranslatorGreek : public Translator
virtual QCString latexLanguageSupportCommand()
{
- //return "\\usepackage[greek,english]{babel}\n\\usepackage[iso-8859-7]{inputenc}\n";
- return "\\usepackage[greek,english]{babel}\n";
+ return "\\usepackage[greek,english]{babel}\n"
+ "\\usepackage{alphabeta}\n";
}
// --- Language translation methods -------------------
diff --git a/src/translator_it.h b/src/translator_it.h
index 8f08b5a..9638a01 100644
--- a/src/translator_it.h
+++ b/src/translator_it.h
@@ -89,7 +89,7 @@
#ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
-class TranslatorItalian : public Translator
+class TranslatorItalian : public TranslatorAdapter_1_8_15
{
public:
diff --git a/src/translator_je.h b/src/translator_je.h
index 835a516..d555421 100644
--- a/src/translator_je.h
+++ b/src/translator_je.h
@@ -36,7 +36,19 @@ class TranslatorJapaneseEn : public TranslatorEnglish
{ return "japanese-en"; }
virtual QCString latexLanguageSupportCommand()
{
- return "platex";
+ return "\\usepackage{CJKutf8}\n";
+ }
+ virtual QCString latexFontenc()
+ {
+ return "";
+ }
+ virtual QCString latexDocumentPre()
+ {
+ return "\\begin{CJK}{UTF8}{min}\n";
+ }
+ virtual QCString latexDocumentPost()
+ {
+ return "\\end{CJK}\n";
}
virtual QCString trRTFansicp()
{
diff --git a/src/translator_jp.h b/src/translator_jp.h
index c4f92c2..fc0d65d 100644
--- a/src/translator_jp.h
+++ b/src/translator_jp.h
@@ -69,7 +69,7 @@ Doxygen の開発の方でもそれはそれでいーんじゃん?みたいな
#ifndef TRANSLATOR_JP_H
#define TRANSLATOR_JP_H
-class TranslatorJapanese : public Translator
+class TranslatorJapanese : public TranslatorAdapter_1_8_15
{
public:
virtual QCString idLanguage()
@@ -77,8 +77,20 @@ class TranslatorJapanese : public Translator
virtual QCString latexLanguageSupportCommand()
{
+ return "\\usepackage{CJKutf8}\n";
+ }
+ virtual QCString latexFontenc()
+ {
return "";
}
+ virtual QCString latexDocumentPre()
+ {
+ return "\\begin{CJK}{UTF8}{min}\n";
+ }
+ virtual QCString latexDocumentPost()
+ {
+ return "\\end{CJK}\n";
+ }
/*! used in the compound documentation before a list of related functions. */
virtual QCString trRelatedFunctions()
diff --git a/src/translator_ke.h b/src/translator_ke.h
index 525cf84..c9f488c 100644
--- a/src/translator_ke.h
+++ b/src/translator_ke.h
@@ -35,12 +35,22 @@ class TranslatorKoreanEn : public TranslatorEnglish
{ return "korean-en"; }
virtual QCString latexLanguageSupportCommand()
{
- return "\\usepackage{hfont}\n";
+ return "\\usepackage{kotex}\n";
}
virtual QCString trRTFansicp()
{
return "949";
}
+ virtual QCString latexCommandName()
+ {
+ QCString latex_command = Config_getString(LATEX_CMD_NAME);
+ if (latex_command.isEmpty()) latex_command = "latex";
+ if (Config_getBool(USE_PDFLATEX))
+ {
+ if (latex_command == "latex") latex_command = "xelatex";
+ }
+ return latex_command;
+ }
/*! Used as ansicpg for RTF fcharset
* \see trRTFansicp() for a table of possible values.
diff --git a/src/translator_kr.h b/src/translator_kr.h
index 7e95e3b..fb1c356 100644
--- a/src/translator_kr.h
+++ b/src/translator_kr.h
@@ -48,7 +48,7 @@
Translator class (by the local maintainer) when the localized
translator is made up-to-date again.
*/
-class TranslatorKorean : public Translator
+class TranslatorKorean : public TranslatorAdapter_1_8_15
{
protected:
friend class TranslatorAdapterBase;
@@ -86,7 +86,17 @@ class TranslatorKorean : public Translator
// I'm not sure what this should be.
// When I figure it out, I'll update this.
// see http://www.ktug.or.kr/jsboard/read.php?table=operate&no=4422&page=1
- return "\\usepackage{hfont}\n";
+ return "\\usepackage{kotex}\n";
+ }
+ virtual QCString latexCommandName()
+ {
+ QCString latex_command = Config_getString(LATEX_CMD_NAME);
+ if (latex_command.isEmpty()) latex_command = "latex";
+ if (Config_getBool(USE_PDFLATEX))
+ {
+ if (latex_command == "latex") latex_command = "xelatex";
+ }
+ return latex_command;
}
// --- Language translation methods -------------------
diff --git a/src/translator_lv.h b/src/translator_lv.h
index 2736bb0..bd579da 100644
--- a/src/translator_lv.h
+++ b/src/translator_lv.h
@@ -76,7 +76,7 @@ class TranslatorLatvian : public TranslatorAdapter_1_8_4
*/
virtual QCString latexLanguageSupportCommand()
{
- return "\\usepackage[LV]{fontenc}\n"
+ return "\\usepackage[T2A]{fontenc}\n"
"\\usepackage[latvian]{babel}\n";
}
diff --git a/src/translator_nl.h b/src/translator_nl.h
index 241cf97..c0c8c9b 100644
--- a/src/translator_nl.h
+++ b/src/translator_nl.h
@@ -93,8 +93,15 @@ class TranslatorDutch : public Translator
QCString trSearch()
{ return "Zoeken"; }
QCString trClassHierarchyDescription()
- { return "Deze inheritance lijst is min of meer alfabetisch "
- "gesorteerd:";
+ {
+ if (Config_getBool(OPTIMIZE_OUTPUT_VHDL))
+ {
+ return "Hieronder is een hi&euml;rarchische lijst met alle entiteiten:";
+ }
+ else
+ {
+ return "Deze inheritance lijst is min of meer alfabetisch gesorteerd:";
+ }
}
QCString trFileListDescription(bool extractAll)
{
@@ -1586,6 +1593,123 @@ class TranslatorDutch : public Translator
}
//////////////////////////////////////////////////////////////////////////
+// new since 1.8.15
+//////////////////////////////////////////////////////////////////////////
+
+ /** VHDL design unit hierarchy */
+ virtual QCString trDesignUnitHierarchy()
+ { return "Ontwerp Eenheid Hi&euml;rarchie"; }
+ /** VHDL design unit list */
+ virtual QCString trDesignUnitList()
+ { return "Ontwerp Eenheid Lijst"; }
+ /** VHDL design unit members */
+ virtual QCString trDesignUnitMembers()
+ { return "Ontwerp Eenheid Members"; }
+ /** VHDL design unit list description */
+ virtual QCString trDesignUnitListDescription()
+ {
+ return "hieronder volgt de lijst met all ontwerp eenheden met links "
+ "naar de entiteiten waar ze bij behoren:";
+ }
+ /** VHDL design unit index */
+ virtual QCString trDesignUnitIndex()
+ { return "Ontwerp Eenheid Index"; }
+ /** VHDL design units */
+ virtual QCString trDesignUnits()
+ { return "Ontwerp Eenheden"; }
+ /** VHDL functions/procedures/processes */
+ virtual QCString trFunctionAndProc()
+ { return "Functies/Procedures/Processen"; }
+ /** VHDL type */
+ virtual QCString trVhdlType(uint64 type,bool single)
+ {
+ switch(type)
+ {
+ case VhdlDocGen::LIBRARY:
+ if (single) return "Bibliotheek";
+ else return "Bibliotheken";
+ case VhdlDocGen::PACKAGE:
+ if (single) return "Package";
+ else return "Packages";
+ case VhdlDocGen::SIGNAL:
+ if (single) return "Signal";
+ else return "Signals";
+ case VhdlDocGen::COMPONENT:
+ if (single) return "Bestanddeel";
+ else return "Bestanddelen";
+ case VhdlDocGen::CONSTANT:
+ if (single) return "Konstante";
+ else return "Konstanten";
+ case VhdlDocGen::ENTITY:
+ if (single) return "Entiteit";
+ else return "Entiteiten";
+ case VhdlDocGen::TYPE:
+ if (single) return "Type";
+ else return "Types";
+ case VhdlDocGen::SUBTYPE:
+ if (single) return "Ondertype";
+ else return "Ondertypes";
+ case VhdlDocGen::FUNCTION:
+ if (single) return "Funktie";
+ else return "Funkties";
+ case VhdlDocGen::RECORD:
+ if (single) return "Record";
+ else return "Records";
+ case VhdlDocGen::PROCEDURE:
+ if (single) return "Procedure";
+ else return "Procedures";
+ case VhdlDocGen::ARCHITECTURE:
+ if (single) return "Architectuur";
+ else return "Architecturen";
+ case VhdlDocGen::ATTRIBUTE:
+ if (single) return "Attribuut";
+ else return "Attributen";
+ case VhdlDocGen::PROCESS:
+ if (single) return "Proces";
+ else return "Processen";
+ case VhdlDocGen::PORT:
+ if (single) return "Poort";
+ else return "Porten";
+ case VhdlDocGen::USE:
+ if (single) return "gebruiks clausule";
+ else return "Gebruiks Clausules";
+ case VhdlDocGen::GENERIC:
+ if (single) return "Algemeen";
+ else return "Algemene";
+ case VhdlDocGen::PACKAGE_BODY:
+ return "Package Body";
+ case VhdlDocGen::UNITS:
+ return "Eenheden";
+ case VhdlDocGen::SHAREDVARIABLE:
+ if (single) return "Gedeelde Variable";
+ else return "Gedeelde Variablen";
+ case VhdlDocGen::VFILE:
+ if (single) return "Bestand";
+ else return "Bestanden";
+ case VhdlDocGen::GROUP:
+ if (single) return "Groep";
+ else return "Groepen";
+ case VhdlDocGen::INSTANTIATION:
+ if (single) return "Instanti&euml;ring";
+ else return "Instanti&euml;ringen";
+ case VhdlDocGen::ALIAS:
+ if (single) return "Alias";
+ else return "Aliases";
+ case VhdlDocGen::CONFIG:
+ if (single) return "Configuratie";
+ else return "Configuraties";
+ case VhdlDocGen::MISCELLANEOUS:
+ return "Diverse";
+ case VhdlDocGen::UCF_CONST:
+ return "Limiteringen";
+ default:
+ return "Klasse";
+ }
+ }
+ virtual QCString trCustomReference(const char *name)
+ { return QCString(name)+" Referentie"; }
+
+//////////////////////////////////////////////////////////////////////////
};
#endif
diff --git a/src/translator_no.h b/src/translator_no.h
index 58b596a..eccd952 100644
--- a/src/translator_no.h
+++ b/src/translator_no.h
@@ -72,8 +72,7 @@ class TranslatorNorwegian : public TranslatorAdapter_1_4_6
virtual QCString latexLanguageSupportCommand()
{
return
- "\\usepackage[norwegian]{babel}\n"
- "\\usepackage[T1]{fontenc}\n";
+ "\\usepackage[norsk]{babel}\n";
}
// --- Language translation methods -------------------
diff --git a/src/translator_pl.h b/src/translator_pl.h
index 421f407..e0ecc8f 100644
--- a/src/translator_pl.h
+++ b/src/translator_pl.h
@@ -44,8 +44,14 @@ class TranslatorPolish : public TranslatorAdapter_1_8_2
*/
QCString latexLanguageSupportCommand()
{
- return "\\usepackage{polski}\n"
- "\\usepackage[T1]{fontenc}\n";
+ return "\\usepackage[polish]{babel}\n"
+ "\\let\\lll\\undefined\n"; /* to overcome problems with the <<<
+ symbol as defined in the amssymb
+ package, and the Polish symbol
+ "Latin Small Letter L With Stroke"
+ &lstrok; or &#322; or &#x0142;
+ We take the amssymb symbol as leading.
+ */
}
// --- Language translation methods -------------------
diff --git a/src/translator_pt.h b/src/translator_pt.h
index c58bf64..2506f7f 100644
--- a/src/translator_pt.h
+++ b/src/translator_pt.h
@@ -1,5 +1,5 @@
/******************************************************************************
- * Copyright (C) 1997-2015 by Dimitri van Heesch.
+ * Copyright (C) 1997-2018 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
@@ -10,9 +10,9 @@
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
- * Portuguese translation version 20110428
+ * Portuguese translation version
* Maintainer (from 04/28/2011):
- * Fabio "FJTC" Jun Takada Chino <jun-chino at uol.com.br>
+ * Fabio "FJTC" Jun Takada Chino <fjtc at brokenbits dot com dot br>
* Maintainer (until 04/28/2011):
* Rui Godinho Lopes <rui at ruilopes.com>
*
@@ -24,6 +24,8 @@
* VERSION HISTORY
* ---------------
* History:
+ * 20180612:
+ * - Updated to 1.8.15;
* 20131129:
* - Updated to 1.8.5;
* - Translation in the method trFileMembers() fixed;
@@ -85,7 +87,10 @@ class TranslatorPortuguese : public Translator
* the empty string is returned in this implementation.
*/
virtual QCString latexLanguageSupportCommand()
- { return "Portuguese"; }
+ {
+ return
+ "\\usepackage[portuges]{babel}\n";
+ }
// --- Language translation methods -------------------
@@ -2016,6 +2021,125 @@ class TranslatorPortuguese : public Translator
return result;
}
+ //////////////////////////////////////////////////////////////////////////
+ // new since 1.8.15
+ //////////////////////////////////////////////////////////////////////////
+
+ /** VHDL design unit hierarchy */
+ virtual QCString trDesignUnitHierarchy()
+ { return "Hierarquia da Unidade de Design"; }
+ /** VHDL design unit list */
+ virtual QCString trDesignUnitList()
+ { return "Lista de Unidades de Design"; }
+ /** VHDL design unit members */
+ virtual QCString trDesignUnitMembers()
+ { return "Membros da Unidade de Design"; }
+ /** VHDL design unit list description */
+ virtual QCString trDesignUnitListDescription()
+ {
+ return "Esta é uma lista de todos os membros de unidades de design "
+ "com ligações para as entidades às quais pertencem:";
+ }
+ /** VHDL design unit index */
+ virtual QCString trDesignUnitIndex()
+ { return "Índice de Unidades de Design"; }
+ /** VHDL design units */
+ virtual QCString trDesignUnits()
+ { return "Unidades de Design"; }
+ /** VHDL functions/procedures/processes */
+ virtual QCString trFunctionAndProc()
+ { return "Funções/Procedimentos/Processos"; }
+ /** VHDL type */
+ virtual QCString trVhdlType(uint64 type,bool single)
+ {
+ switch(type)
+ {
+ case VhdlDocGen::LIBRARY:
+ if (single) return "Biblioteca";
+ else return "Bibliotecas";
+ case VhdlDocGen::PACKAGE:
+ if (single) return "Pacote";
+ else return "Pacotes";
+ case VhdlDocGen::SIGNAL:
+ if (single) return "Sinal";
+ else return "Sinais";
+ case VhdlDocGen::COMPONENT:
+ if (single) return "Componente";
+ else return "Componentes";
+ case VhdlDocGen::CONSTANT:
+ if (single) return "Constante";
+ else return "Constantes";
+ case VhdlDocGen::ENTITY:
+ if (single) return "Entidade";
+ else return "Entidades";
+ case VhdlDocGen::TYPE:
+ if (single) return "Tipo";
+ else return "Tipos";
+ case VhdlDocGen::SUBTYPE:
+ if (single) return "Subtipo";
+ else return "Subtipos";
+ case VhdlDocGen::FUNCTION:
+ if (single) return "Função";
+ else return "Funções";
+ case VhdlDocGen::RECORD:
+ if (single) return "Registro";
+ else return "Registros";
+ case VhdlDocGen::PROCEDURE:
+ if (single) return "Procedimento";
+ else return "Procedimentos";
+ case VhdlDocGen::ARCHITECTURE:
+ if (single) return "Arquitetura";
+ else return "Arquiteturas";
+ case VhdlDocGen::ATTRIBUTE:
+ if (single) return "Atributo";
+ else return "Atributos";
+ case VhdlDocGen::PROCESS:
+ if (single) return "Processo";
+ else return "Processos";
+ case VhdlDocGen::PORT:
+ if (single) return "Porta";
+ else return "Portas";
+ case VhdlDocGen::USE:
+ if (single) return "cláusula de uso";
+ else return "cláusulas de uso";
+ case VhdlDocGen::GENERIC:
+ if (single) return "Generico";
+ else return "Genericos";
+ case VhdlDocGen::PACKAGE_BODY:
+ return "Corpo do Pacote";
+ case VhdlDocGen::UNITS:
+ return "Unidades";
+ case VhdlDocGen::SHAREDVARIABLE:
+ if (single) return "Variável Compartilhada";
+ else return "Variáveis Compartilhadas";
+ case VhdlDocGen::VFILE:
+ if (single) return "Ficheiro";
+ else return "Ficheiros";
+ case VhdlDocGen::GROUP:
+ if (single) return "Grupo";
+ else return "Grupos";
+ case VhdlDocGen::INSTANTIATION:
+ if (single) return "Instância";
+ else return "Instâncias";
+ case VhdlDocGen::ALIAS:
+ if (single) return "Apelido";
+ else return "Apelidos";
+ case VhdlDocGen::CONFIG:
+ if (single) return "Configuração";
+ else return "Configurações";
+ case VhdlDocGen::MISCELLANEOUS:
+ return "Outros"; // Is this correct for VHDL?
+ case VhdlDocGen::UCF_CONST:
+ return "Restrições";
+ default:
+ return "Classe";
+ }
+ }
+ virtual QCString trCustomReference(const char *name)
+ { return "Referência de " + QCString(name); }
+
+//////////////////////////////////////////////////////////////////////////
+
//////////////////////////////////////////////////////////////////////////
};
diff --git a/src/translator_ro.h b/src/translator_ro.h
index 661578b..6f0c197 100644
--- a/src/translator_ro.h
+++ b/src/translator_ro.h
@@ -42,7 +42,7 @@
#define TRANSLATOR_RO_H
-class TranslatorRomanian : public Translator
+class TranslatorRomanian : public TranslatorAdapter_1_8_15
{
public:
diff --git a/src/translator_ru.h b/src/translator_ru.h
index 54c0202..9d92888 100644
--- a/src/translator_ru.h
+++ b/src/translator_ru.h
@@ -26,7 +26,7 @@
#ifndef TRANSLATOR_RU_H
#define TRANSLATOR_RU_H
-class TranslatorRussian : public Translator
+class TranslatorRussian : public TranslatorAdapter_1_8_15
{
public:
/*! Used for identification of the language. */
diff --git a/src/translator_sc.h b/src/translator_sc.h
index d2b3954..e8191df 100644
--- a/src/translator_sc.h
+++ b/src/translator_sc.h
@@ -71,6 +71,11 @@ class TranslatorSerbianCyrillic : public TranslatorAdapter_1_6_0
*/
virtual QCString latexLanguageSupportCommand()
{
+ return "\\usepackage[T2A]{fontenc}\n"
+ "\\usepackage[russian]{babel}\n";
+ }
+ virtual QCString latexFontenc()
+ {
return "";
}
diff --git a/src/translator_si.h b/src/translator_si.h
index 792053e..2dd7e5b 100644
--- a/src/translator_si.h
+++ b/src/translator_si.h
@@ -36,7 +36,7 @@ class TranslatorSlovene : public TranslatorAdapter_1_4_6
*/
QCString latexLanguageSupportCommand()
{
- return "\\usepackage[slovene]{babel}\n\\usepackage[T1]{fontenc}\n";
+ return "\\usepackage[slovene]{babel}\n";
}
QCString trRelatedFunctions()
{ return "Povezane funkcije"; }
diff --git a/src/translator_sk.h b/src/translator_sk.h
index 3a925ec..9ee8252 100644
--- a/src/translator_sk.h
+++ b/src/translator_sk.h
@@ -32,7 +32,7 @@
#ifndef TRANSLATOR_SK_H
#define TRANSLATOR_SK_H
-class TranslatorSlovak : public Translator
+class TranslatorSlovak : public TranslatorAdapter_1_8_15
{
public:
// --- Language control methods -------------------
@@ -41,8 +41,14 @@ class TranslatorSlovak : public Translator
{ return "slovak"; }
virtual QCString latexLanguageSupportCommand()
- { return "\\usepackage[slovak]{babel}\n"; }
-
+ { return "\\usepackage[slovak]{babel}\n"
+ "\\usepackage{regexpatch}\n"
+ "\\makeatletter\n"
+ "% Change the `-` delimiter to an active character\n"
+ "\\xpatchparametertext\\@@@cmidrule{-}{\\cA-}{}{}\n"
+ "\\xpatchparametertext\\@cline{-}{\\cA-}{}{}\n"
+ "\\makeatother\n";
+ }
// --- Language translation methods -------------------
/*! used in the compound documentation before a list of related functions. */
diff --git a/src/translator_sv.h b/src/translator_sv.h
index 88fffd9..5da89df 100644
--- a/src/translator_sv.h
+++ b/src/translator_sv.h
@@ -120,7 +120,7 @@ Problem!
#ifndef TRANSLATOR_SE_H
#define TRANSLATOR_SE_H
-class TranslatorSwedish : public Translator
+class TranslatorSwedish : public TranslatorAdapter_1_8_15
{
public:
diff --git a/src/translator_tw.h b/src/translator_tw.h
index 26a6db6..9e9092d 100644
--- a/src/translator_tw.h
+++ b/src/translator_tw.h
@@ -41,7 +41,7 @@
// Translator class (by the local maintainer) when the localized
// translator is made up-to-date again.
-class TranslatorChinesetraditional : public Translator
+class TranslatorChinesetraditional : public TranslatorAdapter_1_8_15
{
public:
@@ -72,8 +72,20 @@ class TranslatorChinesetraditional : public Translator
*/
virtual QCString latexLanguageSupportCommand()
{
+ return "\\usepackage{CJKutf8}\n";
+ }
+ virtual QCString latexFontenc()
+ {
return "";
}
+ virtual QCString latexDocumentPre()
+ {
+ return "\\begin{CJK}{UTF8}{min}\n";
+ }
+ virtual QCString latexDocumentPost()
+ {
+ return "\\end{CJK}\n";
+ }
// --- Language translation methods -------------------
diff --git a/src/translator_vi.h b/src/translator_vi.h
index a0046b0..b391b0c 100644
--- a/src/translator_vi.h
+++ b/src/translator_vi.h
@@ -78,9 +78,23 @@ class TranslatorVietnamese : public TranslatorAdapter_1_6_0
*/
virtual QCString latexLanguageSupportCommand()
{
+ return
+ "\\usepackage[vietnamese]{babel}\n";
+ }
+ virtual QCString latexFontenc()
+ {
return "";
}
-
+ virtual QCString latexCommandName()
+ {
+ QCString latex_command = Config_getString(LATEX_CMD_NAME);
+ if (latex_command.isEmpty()) latex_command = "latex";
+ if (Config_getBool(USE_PDFLATEX))
+ {
+ if (latex_command == "latex") latex_command = "xelatex";
+ }
+ return latex_command;
+ }
// --- Language translation methods -------------------
/*! used in the compound documentation before a list of related functions. */
diff --git a/src/util.cpp b/src/util.cpp
index 9762892..ea68cd7 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -323,7 +323,6 @@ int guessSection(const char *name)
n.right(4)==".c++" ||
n.right(5)==".java" ||
n.right(2)==".m" ||
- n.right(2)==".M" ||
n.right(3)==".mm" ||
n.right(3)==".ii" || // inline
n.right(4)==".ixx" ||
@@ -1782,7 +1781,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
pc = c;
i++;
c = src[i];
- *dst+=c;
+ *dst++=c;
}
else if (c=='"')
{
@@ -7395,23 +7394,23 @@ int nextUtf8CharPosition(const QCString &utf8Str,int len,int startPos)
{
if (((uchar)c&0xE0)==0xC0)
{
- bytes++; // 11xx.xxxx: >=2 byte character
+ bytes+=1; // 11xx.xxxx: >=2 byte character
}
if (((uchar)c&0xF0)==0xE0)
{
- bytes++; // 111x.xxxx: >=3 byte character
+ bytes+=2; // 111x.xxxx: >=3 byte character
}
if (((uchar)c&0xF8)==0xF0)
{
- bytes++; // 1111.xxxx: >=4 byte character
+ bytes+=3; // 1111.xxxx: >=4 byte character
}
if (((uchar)c&0xFC)==0xF8)
{
- bytes++; // 1111.1xxx: >=5 byte character
+ bytes+=4; // 1111.1xxx: >=5 byte character
}
if (((uchar)c&0xFE)==0xFC)
{
- bytes++; // 1111.1xxx: 6 byte character
+ bytes+=5; // 1111.1xxx: 6 byte character
}
}
else if (c=='&') // skip over character entities
@@ -7445,11 +7444,10 @@ QCString parseCommentAsText(const Definition *scope,const MemberDef *md,
root->accept(visitor);
delete visitor;
delete root;
- QCString result = convertCharEntitiesToUTF8(s.data());
+ QCString result = convertCharEntitiesToUTF8(s.data()).stripWhiteSpace();
int i=0;
int charCnt=0;
int l=result.length();
- bool addEllipsis=FALSE;
while ((i=nextUtf8CharPosition(result,l,i))<l)
{
charCnt++;
@@ -7460,19 +7458,17 @@ QCString parseCommentAsText(const Definition *scope,const MemberDef *md,
while ((i=nextUtf8CharPosition(result,l,i))<l && charCnt<100)
{
charCnt++;
- if (result.at(i)>=0 && isspace(result.at(i)))
- {
- addEllipsis=TRUE;
- }
- else if (result.at(i)==',' ||
- result.at(i)=='.' ||
- result.at(i)=='?')
+ if (result.at(i)==',' ||
+ result.at(i)=='.' ||
+ result.at(i)=='!' ||
+ result.at(i)=='?')
{
+ i++; // we want to be "behind" last inspected character
break;
}
}
}
- if (addEllipsis || charCnt==100) result=result.left(i)+"...";
+ if ( i < l) result=result.left(i)+"...";
return result.data();
}
diff --git a/src/vhdlcode.l b/src/vhdlcode.l
index ce1f92b..618258f 100644
--- a/src/vhdlcode.l
+++ b/src/vhdlcode.l
@@ -94,7 +94,7 @@ static QCString g_exampleFile;
static QCString g_classScope;
-static QCString g_CurrScope;
+static bool g_CurrARCH = FALSE;
static FileDef * g_sourceFileDef;
static Definition * g_currentDefinition;
@@ -109,7 +109,7 @@ static int g_braceCount=0;
static void writeFont(const char *s,const char* text);
static void generateMemLink(CodeOutputInterface &ol,QCString &clName,QCString& memberName);
static bool writeColoredWord(QCString& word );
-static void generateClassOrGlobalLink(CodeOutputInterface &ol,const char *clName, bool typeOnly=FALSE);
+static void generateClassOrGlobalLink(CodeOutputInterface &ol,const char *clName, bool typeOnly=FALSE, const char *curr_class=0);
static void endFontClass();
static void startFontClass(const char *s);
//-------------------------------------------------------------------
@@ -291,7 +291,7 @@ static void writeWord(const char *word,const char* curr_class=0,bool classLink=F
}
else
{
- generateClassOrGlobalLink(*g_code,temp);
+ generateClassOrGlobalLink(*g_code,temp,FALSE,curr_class);
}
}
else
@@ -328,7 +328,7 @@ static void writeWord(const char *word,const char* curr_class=0,bool classLink=F
}
else
{
- generateClassOrGlobalLink(*g_code,temp);
+ generateClassOrGlobalLink(*g_code,temp,FALSE,curr_class);
}
}
else
@@ -383,7 +383,7 @@ static void codifyLines(const char *text,const char *cl=0,bool classlink=FALSE,b
if (comment)
writeFont("keyword",sp);
else
- writeWord(sp,cl,classlink);
+ writeWord(sp,cl,classlink);
done=TRUE;
}
}
@@ -510,7 +510,7 @@ static void generateMemLink(CodeOutputInterface &ol,QCString &clName,QCString& m
}// generateMemLink
-static void generateClassOrGlobalLink(CodeOutputInterface &ol,const char *clName, bool /*typeOnly*/)
+static void generateClassOrGlobalLink(CodeOutputInterface &ol,const char *clName, bool /*typeOnly*/, const char *curr_class)
{
QCString className=clName;
@@ -521,6 +521,11 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,const char *clName
//bool isLocal=FALSE;
className.stripPrefix("_");
cd = getClass(className.data());
+ if (!cd && curr_class)
+ {
+ if (QCString(curr_class).contains(QRegExp("::"+QCString(clName)+"$"))) cd = getClass(curr_class);
+ }
+
while (cd)
{
//className.stripPrefix("_");
@@ -759,7 +764,7 @@ DIGITSS [0-9]+|[0-9]+("#")*[0-9_a-fA-F\+\.\-]+("#")*
ALLTYPESMAP {B}*[_a-zA-Z0-9. ]+{BN}*
ALLTYPESMAP1 {BN}*[_a-zA-Z0-9.() ]+{BN}*
-ARCHITECTURE ^{B}*("architecture"){BN}+{FUNCNAME}{BN}+("of"){BN}+{FUNCNAME}
+ARCHITECTURE ^{B}*("architecture"){BN}+{FUNCNAME}{BN}+("of"){BN}+{FUNCNAME}{BN}+("is")
PROCESS ({BN}*{FUNCNAME}{BN}*[:]+{BN}*("process"){BN}*[(]*)|[^a-zA-Z]("process "|"process("){BN}*[ (]*|[^a-zA-Z]("process"){BN}+
END1 {B}*("end "){BN}+("if"|"case"|"loop"|"generate"|"for")
@@ -768,7 +773,7 @@ END3 {BN}*[^a-zA-Z]("end"){BN}+{FUNCNAME}{BN}*[;]
END4 {B}*("end"){BN}+"function"{BN}+{FUNCNAME}{BN}*[;]
ENDEFUNC {END3}|{END4}|{END2}
-KEYWORD ("new"|"event"|"break"|"case"|"end"|"loop"|"else"|"for"|"goto"|"if"|"return"|"generate"|"is"|"while"|"in")
+KEYWORD ("of"|"new"|"event"|"break"|"case"|"end"|"loop"|"else"|"for"|"goto"|"if"|"return"|"generate"|"is"|"while"|"in")
TYPEKW ^{B}*("type"|"subtype"|"constant"|"attribute"|"signal"|"variable","alias","configuration")
FUNC ^{B}*("function"|"procedure"){BN}*{FUNCNAME}{BN}*("(")
@@ -807,6 +812,7 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI
%x ClassVar
%x ClassesName
%x Map
+%x End
%x Body
%%
@@ -1058,14 +1064,7 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI
g_CurrClass.append(vhdlcodeYYtext);
g_CurrClass=g_CurrClass.stripWhiteSpace();
- if (!writeColoredWord(g_CurrScope))
- {
- generateClassOrGlobalLink(*g_code,vhdlcodeYYtext);
- }
- else
- {
- codifyLines(vhdlcodeYYtext,g_CurrClass.data());
- }
+ generateClassOrGlobalLink(*g_code,vhdlcodeYYtext);
BEGIN(Bases);
}
@@ -1284,6 +1283,7 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI
//temp+=("-");
//temp+=VhdlDocGen::getIndexWord(vhdlcodeYYtext,3);
QCString temp = VhdlDocGen::getIndexWord(vhdlcodeYYtext,3);
+ g_CurrARCH = TRUE;
temp+="::";
temp+=VhdlDocGen::getIndexWord(vhdlcodeYYtext,1);
g_CurrClass=temp;
@@ -1291,7 +1291,6 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI
codifyLines(vhdlcodeYYtext,temp.data(),TRUE);
//generateClassOrGlobalLink(*g_code,temp.data());
isPackageBody=FALSE;
- BEGIN(ClassName);
}
@@ -1371,6 +1370,41 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI
}
+<Bases>"end"{BN}+"architecture"{BN}+{FUNCNAME} {
+ codifyLines(vhdlcodeYYtext,g_CurrClass.data(),TRUE);
+ g_CurrARCH = FALSE;
+ }
+<Bases>"end"{BN}+{FUNCNAME} {
+ if (g_CurrARCH)
+ {
+ codifyLines(vhdlcodeYYtext,g_CurrClass.data(),TRUE);
+ g_CurrARCH = FALSE;
+ }
+ else
+ REJECT;
+ }
+<Bases>"end" {
+ appStringLower(g_PrevString,vhdlcodeYYtext);
+ QCString temp(vhdlcodeYYtext);
+ temp=temp.stripWhiteSpace();
+
+ writeColoredWord(temp);
+ BEGIN(End);
+ }
+<End>{ID} {
+ appStringLower(g_PrevString,vhdlcodeYYtext);
+ QCString temp(vhdlcodeYYtext);
+ temp=temp.stripWhiteSpace();
+
+ if (!writeColoredWord(temp))
+ {
+ generateClassOrGlobalLink(*g_code,temp.data());
+ }
+ }
+<End>";" {
+ codifyLines(vhdlcodeYYtext);
+ BEGIN(Bases);
+ }
<Bases>{KEYWORD} { // found keyword
QCString qcs(vhdlcodeYYtext);
if (!writeColoredWord(qcs))
diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp
index dcf7f42..007c45f 100644
--- a/src/vhdldocgen.cpp
+++ b/src/vhdldocgen.cpp
@@ -61,7 +61,7 @@
#include "vhdlcode.h"
#include "plantuml.h"
//#define DEBUGFLOW
-#define theTranslator_vhdlType VhdlDocGen::trVhdlType
+#define theTranslator_vhdlType theTranslator->trVhdlType
static QDict<QCString> g_vhdlKeyDict0(17,FALSE);
static QDict<QCString> g_vhdlKeyDict1(17,FALSE);
@@ -968,7 +968,6 @@ QCString VhdlDocGen::getClassTitle(const ClassDef *cd)
int ii=cd->protection();
pageTitle+=" ";
pageTitle+=theTranslator_vhdlType(ii+2,TRUE);
- pageTitle+=" ";
return pageTitle;
} // getClassTitle
@@ -1241,42 +1240,6 @@ QCString VhdlDocGen::getProtectionName(int prot)
return "";
}
-QCString VhdlDocGen::trTypeString(uint64 type)
-{
- switch(type)
- {
- case VhdlDocGen::LIBRARY: return "Library";
- case VhdlDocGen::ENTITY: return "Entity";
- case VhdlDocGen::PACKAGE_BODY: return "Package Body";
- case VhdlDocGen::ATTRIBUTE: return "Attribute";
- case VhdlDocGen::PACKAGE: return "Package";
- case VhdlDocGen::SIGNAL: return "Signal";
- case VhdlDocGen::COMPONENT: return "Component";
- case VhdlDocGen::CONSTANT: return "Constant";
- case VhdlDocGen::TYPE: return "Type";
- case VhdlDocGen::SUBTYPE: return "Subtype";
- case VhdlDocGen::FUNCTION: return "Function";
- case VhdlDocGen::RECORD: return "Record";
- case VhdlDocGen::PROCEDURE: return "Procedure";
- case VhdlDocGen::ARCHITECTURE: return "Architecture";
- case VhdlDocGen::USE: return "Package";
- case VhdlDocGen::PROCESS: return "Process";
- case VhdlDocGen::PORT: return "Port";
- case VhdlDocGen::GENERIC: return "Generic";
- case VhdlDocGen::UNITS: return "Units";
- //case VhdlDocGen::PORTMAP: return "Port Map";
- case VhdlDocGen::SHAREDVARIABLE: return "Shared Variable";
- case VhdlDocGen::GROUP: return "Group";
- case VhdlDocGen::VFILE: return "File";
- case VhdlDocGen::INSTANTIATION: return "Instantiation";
- case VhdlDocGen::ALIAS: return "Alias";
- case VhdlDocGen::CONFIG: return "Configuration";
- case VhdlDocGen::MISCELLANEOUS: return "Miscellaneous";
- case VhdlDocGen::UCF_CONST: return "Constraints";
- default: return "";
- }
-} // convertType
-
/*!
* deletes a char backwards in a string
*/
@@ -1790,7 +1753,7 @@ void VhdlDocGen::writeVhdlDeclarations(MemberList* ml,
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,theTranslator_vhdlType(VhdlDocGen::GROUP,FALSE),0,FALSE,VhdlDocGen::GROUP);
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,theTranslator_vhdlType(VhdlDocGen::INSTANTIATION,FALSE),0,FALSE,VhdlDocGen::INSTANTIATION);
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,theTranslator_vhdlType(VhdlDocGen::ALIAS,FALSE),0,FALSE,VhdlDocGen::ALIAS);
- VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,theTranslator_vhdlType(VhdlDocGen::MISCELLANEOUS),0,FALSE,VhdlDocGen::MISCELLANEOUS);
+ VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,theTranslator_vhdlType(VhdlDocGen::MISCELLANEOUS,TRUE),0,FALSE,VhdlDocGen::MISCELLANEOUS);
// configurations must be added to global file definitions.
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,nd,fd,gd,theTranslator_vhdlType(VhdlDocGen::CONFIG,FALSE),0,FALSE,VhdlDocGen::CONFIG);
@@ -2096,19 +2059,21 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol,
writeLink(mdef,ol);
ol.docify(" ");
- ol.insertMemberAlign();
if (mm==VhdlDocGen::GENERIC)
{
+ ol.insertMemberAlign();
ol.startBold();
VhdlDocGen::formatString(largs,ol,mdef);
ol.endBold();
}
else
{
+ ol.insertMemberAlignLeft(isAnonymous, false);
ol.docify(" ");
ol.startBold();
VhdlDocGen::formatString(ltype,ol,mdef);
ol.endBold();
+ ol.insertMemberAlign();
ol.docify(" ");
VhdlDocGen::formatString(largs,ol,mdef);
}
@@ -2263,11 +2228,11 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol,
ol.endMemberItem();
if (!mdef->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC) /* && !annMemb */)
{
- QCString s=mdef->briefDescription();
- ol.startMemberDescription(mdef->anchor());
+ QCString s=mdef->briefDescription();
+ ol.startMemberDescription(mdef->anchor(), NULL, mm == VhdlDocGen::PORT);
ol.generateDoc(mdef->briefFile(),mdef->briefLine(),
- mdef->getOuterScope()?mdef->getOuterScope():d,
- mdef,s.data(),TRUE,FALSE,0,TRUE,FALSE);
+ mdef->getOuterScope()?mdef->getOuterScope():d,
+ mdef,s.data(),TRUE,FALSE,0,TRUE,FALSE);
if (detailsVisible)
{
ol.pushGeneratorState();
@@ -2364,7 +2329,7 @@ void VhdlDocGen::writeVHDLDeclarations(MemberList* ml,OutputList &ol,
if (title)
{
- ol.startMemberHeader(title);
+ ol.startMemberHeader(title,type == VhdlDocGen::PORT ? 3 : 2);
ol.parseText(title);
ol.endMemberHeader();
ol.docify(" ");
@@ -2416,7 +2381,7 @@ bool VhdlDocGen::writeClassType( ClassDef *& cd,
OutputList &ol ,QCString & cname)
{
int id=cd->protection();
- QCString qcs = VhdlDocGen::trTypeString(id+2);
+ QCString qcs = theTranslator->trVhdlType(id+2,TRUE);
cname=VhdlDocGen::getClassName(cd);
ol.startBold();
ol.writeString(qcs.data());
@@ -2426,128 +2391,6 @@ bool VhdlDocGen::writeClassType( ClassDef *& cd,
return FALSE;
}// writeClassLink
-QCString VhdlDocGen::trVhdlType(uint64 type,bool sing)
-{
- switch(type)
- {
- case VhdlDocGen::LIBRARY:
- if (sing) return "Library";
- else return "Libraries";
- case VhdlDocGen::PACKAGE:
- if (sing) return "Package";
- else return "Packages";
- case VhdlDocGen::SIGNAL:
- if (sing) return "Signal";
- else return "Signals";
- case VhdlDocGen::COMPONENT:
- if (sing) return "Component";
- else return "Components";
- case VhdlDocGen::CONSTANT:
- if (sing) return "Constant";
- else return "Constants";
- case VhdlDocGen::ENTITY:
- if (sing) return "Entity";
- else return "Entities";
- case VhdlDocGen::TYPE:
- if (sing) return "Type";
- else return "Types";
- case VhdlDocGen::SUBTYPE:
- if (sing) return "Subtype";
- else return "Subtypes";
- case VhdlDocGen::FUNCTION:
- if (sing) return "Function";
- else return "Functions";
- case VhdlDocGen::RECORD:
- if (sing) return "Record";
- else return "Records";
- case VhdlDocGen::PROCEDURE:
- if (sing) return "Procedure";
- else return "Procedures";
- case VhdlDocGen::ARCHITECTURE:
- if (sing) return "Architecture";
- else return "Architectures";
- case VhdlDocGen::ATTRIBUTE:
- if (sing) return "Attribute";
- else return "Attributes";
- case VhdlDocGen::PROCESS:
- if (sing) return "Process";
- else return "Processes";
- case VhdlDocGen::PORT:
- if (sing) return "Port";
- else return "Ports";
- case VhdlDocGen::USE:
- if (sing) return "use clause";
- else return "Use Clauses";
- case VhdlDocGen::GENERIC:
- if (sing) return "Generic";
- else return "Generics";
- case VhdlDocGen::PACKAGE_BODY:
- return "Package Body";
- case VhdlDocGen::UNITS:
- return "Units";
- case VhdlDocGen::SHAREDVARIABLE:
- if (sing) return "Shared Variable";
- return "Shared Variables";
- case VhdlDocGen::VFILE:
- if (sing) return "File";
- return "Files";
- case VhdlDocGen::GROUP:
- if (sing) return "Group";
- return "Groups";
- case VhdlDocGen::INSTANTIATION:
- if (sing) return "Instantiation";
- else return "Instantiations";
- case VhdlDocGen::ALIAS:
- if (sing) return "Alias";
- return "Aliases";
- case VhdlDocGen::CONFIG:
- if (sing) return "Configuration";
- return "Configurations";
- case VhdlDocGen::MISCELLANEOUS:
- return "Miscellaneous";
- case VhdlDocGen::UCF_CONST:
- return "Constraints";
- default:
- return "Class";
- }
-}
-
-QCString VhdlDocGen::trDesignUnitHierarchy()
-{
- return "Design Unit Hierarchy";
-}
-
-QCString VhdlDocGen::trDesignUnitList()
-{
- return "Design Unit List";
-}
-
-QCString VhdlDocGen::trDesignUnitMembers()
-{
- return "Design Unit Members";
-}
-
-QCString VhdlDocGen::trDesignUnitListDescription()
-{
- return "Here is a list of all design unit members with links to "
- "the Entities they belong to:";
-}
-
-QCString VhdlDocGen::trDesignUnitIndex()
-{
- return "Design Unit Index";
-}
-
-QCString VhdlDocGen::trDesignUnits()
-{
- return "Design Units";
-}
-
-QCString VhdlDocGen::trFunctionAndProc()
-{
- return "Functions/Procedures/Processes";
-}
-
/*! writes a link if the string is linkable else a formatted string */
@@ -3993,7 +3836,7 @@ void FlowChart::createSVG()
//const MemberDef *m=VhdlDocGen::getFlowMember();
//if (m)
- // fprintf(stderr,"\n creating flowchart : %s %s in file %s \n",VhdlDocGen::trTypeString(m->getMemberSpecifiers()),m->name().data(),m->getFileDef()->name().data());
+ // fprintf(stderr,"\n creating flowchart : %s %s in file %s \n",theTranslator->trVhdlType(m->getMemberSpecifiers(),TRUE),m->name().data(),m->getFileDef()->name().data());
QCString dir=" -o \""+ov+qcs+"\"";
ov+="/flow_design.dot";
diff --git a/src/vhdldocgen.h b/src/vhdldocgen.h
index bd190ca..9dd8417 100644
--- a/src/vhdldocgen.h
+++ b/src/vhdldocgen.h
@@ -150,33 +150,6 @@ class VhdlDocGen
static bool isMisc(const MemberDef *mdef);
//-----------------------------------------------------
- // translatable items
-
- static QCString trTypeString(uint64 type);
- static QCString trVhdlType(uint64 type,bool sing=true);
-
- // trClassHierarchy.
- static QCString trDesignUnitHierarchy();
-
- // trCompoundList
- static QCString trDesignUnitList();
-
- // trCompoundMembers.
- static QCString trDesignUnitMembers();
-
- // trCompoundListDescription
- static QCString trDesignUnitListDescription();
-
- // trCompounds
- static QCString trDesignUnits();
-
- // trCompoundIndex
- static QCString trDesignUnitIndex();
-
- // trFunctions
- static QCString trFunctionAndProc();
-
- //-----------------------------------------------------
static void prepareComment(QCString&);
static void formatString(const QCString&,OutputList& ol,const MemberDef*);