summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/doxygen_manual.css2
-rw-r--r--doc/formulas.doc5
-rw-r--r--src/clangparser.cpp1
-rw-r--r--src/classdef.cpp22
-rw-r--r--src/context.cpp18
-rw-r--r--src/docparser.cpp26
-rw-r--r--src/dot.cpp17
-rw-r--r--src/doxygen.cpp6
-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/index.cpp16
-rw-r--r--src/latexdocvisitor.cpp46
-rw-r--r--src/layout.cpp28
-rw-r--r--src/markdown.cpp13
-rw-r--r--src/memberdef.cpp2
-rw-r--r--src/pycode.l30
-rw-r--r--src/pyscanner.l1
-rw-r--r--src/rtfdocvisitor.cpp16
-rw-r--r--src/rtfgen.cpp51
-rw-r--r--src/rtfgen.h4
-rw-r--r--src/translator.h15
-rw-r--r--src/translator_adapter.h35
-rw-r--r--src/translator_br.h2
-rw-r--r--src/translator_cn.h2
-rw-r--r--src/translator_cz.h10
-rw-r--r--src/translator_de.h134
-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.h2
-rw-r--r--src/translator_it.h2
-rw-r--r--src/translator_jp.h2
-rw-r--r--src/translator_kr.h2
-rw-r--r--src/translator_nl.h2
-rw-r--r--src/translator_pt.h2
-rw-r--r--src/translator_ro.h2
-rw-r--r--src/translator_ru.h2
-rw-r--r--src/translator_sk.h12
-rw-r--r--src/translator_sv.h2
-rw-r--r--src/translator_tw.h2
-rw-r--r--src/util.cpp2
-rw-r--r--src/vhdldocgen.cpp167
-rw-r--r--src/vhdldocgen.h27
-rw-r--r--templates/html/doxygen.css8
-rw-r--r--templates/html/dynsections.js6
-rw-r--r--templates/html/htmldirtree.tpl2
-rw-r--r--templates/html/navtree.js2
49 files changed, 696 insertions, 367 deletions
diff --git a/doc/doxygen_manual.css b/doc/doxygen_manual.css
index 51cc8b0..87d560c 100644
--- a/doc/doxygen_manual.css
+++ b/doc/doxygen_manual.css
@@ -1554,7 +1554,7 @@ table.markdownTable {
}
table.markdownTable td, table.markdownTable th {
- border: 1px solid ##37;
+ border: 1px solid #2D4068;
padding: 3px 7px 2px;
}
diff --git a/doc/formulas.doc b/doc/formulas.doc
index ee4ff61..f505155 100644
--- a/doc/formulas.doc
+++ b/doc/formulas.doc
@@ -17,9 +17,8 @@
/*! \page formulas Including formulas
Doxygen allows you to put \LaTeX formulas in the
-output (this works only for the HTML and \LaTeX output,
-not for the RTF nor for the man page output). To be able to include
-formulas (as images) in the HTML documentation, you will also need to
+output (this works only for the HTML, \LaTeX and RTF output. To be able to include
+formulas (as images) in the HTML and RTF documentation, you will also need to
have the following tools installed
<ul>
<li>\c latex: the \LaTeX compiler, needed to parse the formulas.
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/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 29c6ca7..205e818 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -3505,14 +3505,34 @@ 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")
+ 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()=="right")
+ 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;
}
}
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 263b59f..bc244b7 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -11558,6 +11558,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/formula.cpp b/src/formula.cpp
index 9e48b2d..46e2075 100644
--- a/src/formula.cpp
+++ b/src/formula.cpp
@@ -25,7 +25,6 @@
#include "util.h"
#include "message.h"
#include "config.h"
-#include "language.h"
#include "portable.h"
#include "index.h"
#include "doxygen.h"
@@ -97,7 +96,7 @@ void FormulaList::generateBitmaps(const char *path)
{
//printf("Running latex...\n");
//system("latex _formulas.tex </dev/null >/dev/null");
- QCString latexCmd = theTranslator->latexCommandName();
+ 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/index.cpp b/src/index.cpp
index 24c0290..3706bbf 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 69eddf7..7fd27bb 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -948,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
{
@@ -961,7 +961,7 @@ static void writeEndTableCommand(FTextStream &t,const DocNode *n)
{
if (tableIsNested(n))
{
- t << "\\end{tabularx}\n";
+ t << "\\end{tabularx}}\n";
}
else
{
@@ -1008,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);
}
}
@@ -1034,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?
{
@@ -1058,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
{
@@ -1102,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())
{
@@ -1144,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
@@ -1159,6 +1156,7 @@ void LatexDocVisitor::visitPre(DocHtmlCell *c)
}
int cs = c->colSpan();
+ int a = c->alignment();
if (cs>1 && row)
{
setInColSpan(TRUE);
@@ -1167,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)
@@ -1181,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 ";
@@ -1194,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/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/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..9be2ecb 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
{
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..7e3f104 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;
}
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index 9a6f549..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
{
@@ -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 1eb7db0..bb3146a 100644
--- a/src/rtfgen.h
+++ b/src/rtfgen.h
@@ -258,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/translator.h b/src/translator.h
index f572f57..9da2317 100644
--- a/src/translator.h
+++ b/src/translator.h
@@ -20,6 +20,7 @@
#include "classdef.h"
#include "config.h"
+#include "vhdldocgen.h"
/** Abstract base class for all translatable text fragments. */
class Translator
@@ -601,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_br.h b/src/translator_br.h
index a294ee0..3d12f08 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -45,7 +45,7 @@
#ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H
-class TranslatorBrazilian : public Translator
+class TranslatorBrazilian : public TranslatorAdapter_1_8_15
{
public:
diff --git a/src/translator_cn.h b/src/translator_cn.h
index e53f31d..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
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_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 0ae3e2f..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:
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_jp.h b/src/translator_jp.h
index 43c5dc2..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()
diff --git a/src/translator_kr.h b/src/translator_kr.h
index 80ccc78..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;
diff --git a/src/translator_nl.h b/src/translator_nl.h
index 241cf97..b6d0d1d 100644
--- a/src/translator_nl.h
+++ b/src/translator_nl.h
@@ -18,7 +18,7 @@
#ifndef TRANSLATOR_NL_H
#define TRANSLATOR_NL_H
-class TranslatorDutch : public Translator
+class TranslatorDutch : public TranslatorAdapter_1_8_15
{
public:
QCString idLanguage()
diff --git a/src/translator_pt.h b/src/translator_pt.h
index 25c5762..6bbe2bc 100644
--- a/src/translator_pt.h
+++ b/src/translator_pt.h
@@ -55,7 +55,7 @@
#define TRANSLATOR_PT_H
-class TranslatorPortuguese : public Translator
+class TranslatorPortuguese : public TranslatorAdapter_1_8_15
{
public:
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_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 46237ca..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:
diff --git a/src/util.cpp b/src/util.cpp
index ff0d0c6..352cb87 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -1781,7 +1781,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
pc = c;
i++;
c = src[i];
- *dst+=c;
+ *dst++=c;
}
else if (c=='"')
{
diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp
index 6625d16..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);
@@ -2418,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());
@@ -2428,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 */
@@ -3995,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*);
diff --git a/templates/html/doxygen.css b/templates/html/doxygen.css
index 1425dc1..8a1235a 100644
--- a/templates/html/doxygen.css
+++ b/templates/html/doxygen.css
@@ -167,6 +167,14 @@ ul {
overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
}
+#side-nav ul {
+ overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
+}
+
+#main-nav ul {
+ overflow: visible; /* reset ul rule for the navigation bar drop down lists */
+}
+
.fragment {
text-align: left;
direction: ltr;
diff --git a/templates/html/dynsections.js b/templates/html/dynsections.js
index c1ce122..ea0a7b3 100644
--- a/templates/html/dynsections.js
+++ b/templates/html/dynsections.js
@@ -60,7 +60,7 @@ function toggleLevel(level)
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
- a.html('&#9654;');
+ a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
@@ -87,7 +87,7 @@ function toggleFolder(id)
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
- currentRowSpans.filter(".arrow").html('&#9654;');
+ currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
@@ -97,7 +97,7 @@ function toggleFolder(id)
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
- childRowsSpans.filter(".arrow").html('&#9654;');
+ childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
diff --git a/templates/html/htmldirtree.tpl b/templates/html/htmldirtree.tpl
index 6d3ef8c..a6b9b21 100644
--- a/templates/html/htmldirtree.tpl
+++ b/templates/html/htmldirtree.tpl
@@ -20,7 +20,7 @@
{% else %}
<span style="width:{{ (node.level)*16 }}px;display:inline-block;">&#160;</span>
<span id="arr_{{ node.id }}" class="arrow" onclick="toggleFolder('{{ node.id}}')">
- {%if node.level+1<tree.preferredDepth %}&#9660;{% else %}&#9654;{% endif %}
+ {%if node.level+1<tree.preferredDepth %}&#9660;{% else %}&#9658;{% endif %}
</span>
{% endif %}
{% if node.namespace %}
diff --git a/templates/html/navtree.js b/templates/html/navtree.js
index e310bc9..7ce2935 100644
--- a/templates/html/navtree.js
+++ b/templates/html/navtree.js
@@ -23,7 +23,7 @@
*/
var navTreeSubIndices = new Array();
var arrowDown = '&#9660;';
-var arrowRight = '&#9654;';
+var arrowRight = '&#9658;';
function getData(varName)
{