summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--INSTALL4
-rw-r--r--README4
-rwxr-xr-xconfigure4
-rw-r--r--doc/config.doc6
-rw-r--r--doc/doxygen_manual.tex54
-rw-r--r--doc/doxygen_usage.doc1
-rw-r--r--doc/language.doc4
-rw-r--r--doc/perlmod.doc5
-rw-r--r--doc/translator_report.txt35
-rw-r--r--src/classdef.cpp2
-rw-r--r--src/code.l3
-rw-r--r--src/config.l7
-rw-r--r--src/docparser.cpp12
-rw-r--r--src/doxygen_css.h15
-rw-r--r--src/fortrancode.l4
-rw-r--r--src/ftvhelp.cpp4
-rw-r--r--src/htmlgen.cpp4
-rw-r--r--src/htmlhelp.cpp46
-rw-r--r--src/htmlhelp.h3
-rw-r--r--src/pre.l23
-rw-r--r--src/scanner.l34
-rw-r--r--src/translator_ru.h922
-rw-r--r--src/vhdlcode.l4
-rw-r--r--src/vhdldocgen.cpp79
-rw-r--r--src/vhdldocgen.h11
-rw-r--r--src/vhdlscanner.l63
26 files changed, 849 insertions, 504 deletions
diff --git a/INSTALL b/INSTALL
index 41e76c7..eb15914 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,7 @@
-DOXYGEN Version 1.5.5-20080420
+DOXYGEN Version 1.5.6
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
-Dimitri van Heesch (20 April 2008)
+Dimitri van Heesch (17 May 2008)
diff --git a/README b/README
index 05034c9..563cf65 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-DOXYGEN Version 1.5.5_20080420
+DOXYGEN Version 1.5.6
Please read INSTALL for compilation instructions.
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
-Dimitri van Heesch (dimitri@stack.nl) (20 April 2008)
+Dimitri van Heesch (dimitri@stack.nl) (17 May 2008)
diff --git a/configure b/configure
index 409cb36..956336c 100755
--- a/configure
+++ b/configure
@@ -17,10 +17,10 @@
doxygen_version_major=1
doxygen_version_minor=5
-doxygen_version_revision=5
+doxygen_version_revision=6
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
-doxygen_version_mmn=20080420
+doxygen_version_mmn=NO
bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
diff --git a/doc/config.doc b/doc/config.doc
index c47e7bb..b0a4cb5 100644
--- a/doc/config.doc
+++ b/doc/config.doc
@@ -1358,6 +1358,12 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
with previous releases of Doxygen, the values YES and NO are equivalent
to FRAME and NONE respectively.
+ Via custom stylesheets (see \ref cfg_html_stylesheet "HTML_STYLESHEET")
+ one can further \ref doxygen_finetune "fine tune" the look of the index.
+ As an example, the default style sheet generated by doxygen has an
+ example that shows how to put an image at the root of the tree instead of
+ the \ref cfg_project_name "project name".
+
\anchor cfg_treeview_width
<dt>\c TREEVIEW_WIDTH <dd>
\addindex TREEVIEW_WIDTH
diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex
index 9e8efb2..5a46eb9 100644
--- a/doc/doxygen_manual.tex
+++ b/doc/doxygen_manual.tex
@@ -46,34 +46,34 @@ Written by Dimitri van Heesch\\[2ex]
\pagenumbering{arabic}
\include{index}
\part{User Manual}
-\input{install}
-\input{starting}
-\input{docblocks}
-\input{lists}
-\input{grouping}
-\input{formulas}
-\input{diagrams}
-\input{preprocessing}
-\input{autolink}
-\input{output}
-\input{external}
-\input{faq}
-\input{trouble}
+\chapter{Installation}\label{install}\hypertarget{install}{}\input{install}
+\chapter{Getting Started}\label{starting}\hypertarget{starting}{}\input{starting}
+\chapter{Documenting the code}\label{docblocks}\hypertarget{docblocks}{}\input{docblocks}
+\chapter{Lists}\label{lists}\hypertarget{lists}{}\input{lists}
+\chapter{Grouping}\label{grouping}\hypertarget{grouping}{}\input{grouping}
+\chapter{Including Formulas}\label{formulas}\hypertarget{formulas}{}\input{formulas}
+\chapter{Graphs and diagrams}\label{diagrams}\hypertarget{diagrams}{}\input{diagrams}
+\chapter{Preprocessing}\label{preprocessing}\hypertarget{preprocessing}{}\input{preprocessing}
+\chapter{Automatic link generation}\label{autolink}\hypertarget{autolink}{}\input{autolink}
+\chapter{Output Formats}\label{output}\hypertarget{output}{}\input{output}
+\chapter{Custom Commands}\label{custcmd}\hypertarget{custcmd}{}\input{custcmd}
+\chapter{Link to external documentation}\label{external}\hypertarget{external}{}\input{external}
+\chapter{Frequently Asked Questions}\label{faq}\hypertarget{faq}{}\input{faq}
+\chapter{Troubleshootinh}\label{trouble}\hypertarget{trouble}{}\input{trouble}
\part{Reference Manual}
-\input{features}
-\input{history}
-\input{doxygen_usage}
-\input{doxytag_usage}
-\input{doxywizard_usage}
-\input{installdox_usage}
-\input{config}
-\input{commands}
-\input{htmlcmds}
-\input{xmlcmds}
+\chapter{Features}\label{features}\hypertarget{features}{}\input{features}
+\chapter{Doxygen History}\label{history}\hypertarget{history}{}\input{history}
+\chapter{Doxygen usage}\label{doxygen_usage}\hypertarget{doxygen_usage}{}\input{doxygen_usage}
+\chapter{Doxytag usage}\label{doxytag_usage}\hypertarget{doxytag_usage}{}\input{doxytag_usage}
+\chapter{Doxywizard usage}\label{doxywizard_usage}\hypertarget{doxywizard_usage}{}\input{doxywizard_usage}
+\chapter{Installdox usage}\label{installdox_usage}\hypertarget{installdox_usage}{}\input{installdox_usage}
+\chapter{Configuration}\label{config}\hypertarget{config}{}\input{config}
+\chapter{Special Commands}\label{commands}\hypertarget{commands}{}\input{commands}
+\chapter{HTML commands}\label{htmlcmds}\hypertarget{htmlcmds}{}\input{htmlcmds}
+\chapter{XML commands}\label{xmlcmds}\hypertarget{xmlcmds}{}\input{xmlcmds}
\part{Developers Manual}
-\input{arch}
-\input{perlmod}
-%\input{perlmod_tree}
-\input{langhowto}
+\chapter{Doxygen's internals}\label{arch}\hypertarget{arch}{}\input{arch}
+\chapter{Perl Module Output format}\label{perlmod}\hypertarget{perlmod}{}\input{perlmod}
+\chapter{Internationalization}\label{langhowto}\hypertarget{langhowto}{}\input{langhowto}
\printindex
\end{document}
diff --git a/doc/doxygen_usage.doc b/doc/doxygen_usage.doc
index e74ae1b..3529e8d 100644
--- a/doc/doxygen_usage.doc
+++ b/doc/doxygen_usage.doc
@@ -54,6 +54,7 @@ to the new configuration file. Any new options will have their default value.
Note that comments that you may have added in the original configuration file
will be lost.
+\anchor doxygen_finetune
If you want to fine-tune the way the output looks, doxygen allows you
generate default style sheet, header, and footer files that you can edit
afterwards:
diff --git a/doc/language.doc b/doc/language.doc
index 9526b0b..62957ae 100644
--- a/doc/language.doc
+++ b/doc/language.doc
@@ -229,7 +229,7 @@ when the translator was updated.
<td>Russian</td>
<td>Alexandr Chelpanov</td>
<td>cav at cryptopro dot ru</td>
- <td>1.5.4</td>
+ <td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Serbian</td>
@@ -352,7 +352,7 @@ when the translator was updated.
\hline
Romanian & Alexandru Iosup & {\tt\tiny aiosup@yahoo.com} & 1.4.1 \\
\hline
- Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & 1.5.4 \\
+ Russian & Alexandr Chelpanov & {\tt\tiny cav@cryptopro.ru} & up-to-date \\
\hline
Serbian & Dejan Milosavljevic & {\tt\tiny dmilos@email.com} & 1.4.1 \\
\hline
diff --git a/doc/perlmod.doc b/doc/perlmod.doc
index becbdf2..4a0ae91 100644
--- a/doc/perlmod.doc
+++ b/doc/perlmod.doc
@@ -168,10 +168,13 @@ tree.
<p>As you can see, the documentation contained in <b>$doxydocs</b>
does not present any special impediment to be processed by a simple
-Perl script. To be able to generate meaningful output using the
+Perl script.
+<!--
+To be able to generate meaningful output using the
documentation contained in <b>$doxydocs</b> you'll probably need to
know the semantics of the nodes of the documentation tree, which we
present in \ref perlmod_tree "this page".
+-->
\section doxymodel_format Data structure describing the Perl Module documentation tree.
diff --git a/doc/translator_report.txt b/doc/translator_report.txt
index 1e0c1b9..c1311f7 100644
--- a/doc/translator_report.txt
+++ b/doc/translator_report.txt
@@ -9,7 +9,7 @@ German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean
Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and
Ukrainian.
-Of them, 13 translators are up-to-date, 21 translators are based on
+Of them, 14 translators are up-to-date, 20 translators are based on
some adapter class, and 2 are English based.
----------------------------------------------------------------------
@@ -30,6 +30,7 @@ still may be some details listed even for them:
TranslatorItalian
TranslatorKorean
TranslatorPersian
+ TranslatorRussian
TranslatorSpanish -- Change the base class to Translator.
----------------------------------------------------------------------
@@ -38,7 +39,6 @@ obsolete at the end). The other info shows the estimation of Doxygen
version when the class was last updated and number of methods that
must be implemented to become up-to-date:
- TranslatorRussian 1.5.4 22 methods to implement
TranslatorMacedonian 1.5.04 22 methods to implement
Note: Change the base class to TranslatorAdapter_1_5_4.
@@ -690,37 +690,6 @@ TranslatorRomanian (TranslatorAdapter_1_4_1) 24 methods to implement
virtual QCString trNoDescriptionAvailable()
-TranslatorRussian (TranslatorAdapter_1_5_4) 22 methods to implement
------------------
-
- Implements 194 of the required methods.
-
- Missing methods (should be implemented):
-
- virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
- virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
- virtual QCString trSubprograms()
- virtual QCString trModulesListDescription(bool extractAll)
- virtual QCString trModulesList()
- virtual QCString trTypeConstraints()
- virtual QCString trMemberFunctionDocumentationFortran()
- virtual QCString trCompoundListDescriptionFortran()
- virtual QCString trTypeDocumentation()
- virtual QCString trModuleReference(const char * namespaceName)
- virtual QCString trModulesMemberDescription(bool extractAll)
- virtual QCString trModulesMembers()
- virtual QCString trModulesIndex()
- virtual QCString trCompoundListFortran()
- virtual QCString trDataTypes()
- virtual QCString trCompoundIndexFortran()
- virtual QCString trSubprogram(bool first_capital, bool singular)
- virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
- virtual QCString trType(bool first_capital, bool singular)
- virtual QCString trModule(bool first_capital, bool singular)
- virtual QCString trCompoundMembersFortran()
- virtual QCString trSubprogramDocumentation()
-
-
TranslatorSerbian (TranslatorAdapter_1_4_1) 24 methods to implement
-----------------
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 5f4f391..cf4b4be 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -943,7 +943,7 @@ void ClassDef::showUsedFiles(OutputList &ol)
}
ol.writeListItem();
- QCString path=fd->getPath().copy();
+ QCString path=fd->getPath();
if (Config_getBool("FULL_PATH_NAMES"))
{
ol.docify(stripFromPath(path));
diff --git a/src/code.l b/src/code.l
index 7a44298..01e504e 100644
--- a/src/code.l
+++ b/src/code.l
@@ -2170,6 +2170,8 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
}
<UsingName>\n { codifyLines(yytext); BEGIN(Body); }
<UsingName>. { codifyLines(yytext); BEGIN(Body); }
+<Body,FuncCall>"$"?"this"("->"|".") { g_code->codify(yytext); // this-> for C++, this. for C#
+ }
<Body>{KEYWORD}/([^a-z_A-Z0-9]) {
startFontClass("keyword");
codifyLines(yytext);
@@ -2409,7 +2411,6 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
g_code->codify(yytext);
endFontClass();
}
-<Body,FuncCall>"$"?"this->" { g_code->codify(yytext); }
<Body>"."|"->" {
g_code->codify(yytext);
g_memCallContext = YY_START;
diff --git a/src/config.l b/src/config.l
index 7d30e6f..9d49c92 100644
--- a/src/config.l
+++ b/src/config.l
@@ -2413,6 +2413,13 @@ void Config::create()
FALSE
);
cb->addDependency("GENERATE_HTML");
+ cs = addString(
+ "CHM_INDEX_ENCODING",
+ "If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING\n"
+ "is used to encode HtmlHelp index (hhk), content (hhc) and project file\n"
+ "content.\n"
+ );
+ cs->addDependency("GENERATE_HTML");
cb = addBool(
"BINARY_TOC",
"If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag \n"
diff --git a/src/docparser.cpp b/src/docparser.cpp
index f24b916..279d0e9 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -400,7 +400,11 @@ static void checkUndocumentedParams()
QString argName = g_memberDef->isDefine() ? a->type : a->name;
argName=argName.stripWhiteSpace();
if (argName.right(3)=="...") argName=argName.left(argName.length()-3);
- if (!argName.isEmpty() && g_paramsFound.find(argName)==0 && a->docs.isEmpty())
+ if (getLanguageFromFileName(g_memberDef->getDefFileName())==SrcLangExt_Python && argName=="self")
+ {
+ // allow undocumented self parameter for Python
+ }
+ else if (!argName.isEmpty() && g_paramsFound.find(argName)==0 && a->docs.isEmpty())
{
found = TRUE;
break;
@@ -418,7 +422,11 @@ static void checkUndocumentedParams()
{
QString argName = g_memberDef->isDefine() ? a->type : a->name;
argName=argName.stripWhiteSpace();
- if (!argName.isEmpty() && g_paramsFound.find(argName)==0)
+ if (getLanguageFromFileName(g_memberDef->getDefFileName())==SrcLangExt_Python && argName=="self")
+ {
+ // allow undocumented self parameter for Python
+ }
+ else if (!argName.isEmpty() && g_paramsFound.find(argName)==0)
{
if (!first)
{
diff --git a/src/doxygen_css.h b/src/doxygen_css.h
index 89b4cc9..2c42fd5 100644
--- a/src/doxygen_css.h
+++ b/src/doxygen_css.h
@@ -417,6 +417,21 @@
" margin-top: 1em; \n"
" font-size: 11pt; \n"
"}\n"
+"\n"
+"/* The following two styles can be used to replace the root node title */\n"
+"/* with an image of your choice. Simply uncomment the next two styles, */\n"
+"/* specify the name of your image and be sure to set \'height\' to the */\n"
+"/* proper pixel height of your image. */\n"
+"\n"
+"/* .directory h3.swap { */\n"
+"/* height: 61px; */\n"
+"/* background-repeat: no-repeat; */\n"
+"/* background-image: url(\"yourimage.gif\"); */\n"
+"/* } */\n"
+"/* .directory h3.swap span { */\n"
+"/* display: none; */\n"
+"/* } */\n"
+"\n"
".directory > h3 { \n"
" margin-top: 0; \n"
"}\n"
diff --git a/src/fortrancode.l b/src/fortrancode.l
index 85699de..fb2b641 100644
--- a/src/fortrancode.l
+++ b/src/fortrancode.l
@@ -348,8 +348,8 @@ static bool getFortranTypeDefs(const QCString &tname, const QCString &moduleName
searches for definition of function memberName
@param memberName the name of the function/variable
@param moduleName name of enclosing module or null, if global entry
- @param memberDef the entry, if found or null
- @param useList array of data of USE-statement
+ @param md the entry, if found or null
+ @param usedict array of data of USE-statement
@returns true, if found
*/
static bool getFortranDefs(const QCString &memberName, const QCString &moduleName,
diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp
index 5decfec..f0a77b6 100644
--- a/src/ftvhelp.cpp
+++ b/src/ftvhelp.cpp
@@ -705,7 +705,7 @@ void FTVHelp::generateTreeView(QString* OutString)
t << "\n";
t << " <body class=\"ftvtree\">\n";
t << " <div class=\"directory\">\n";
- t << " <h3>";
+ t << " <h3 class=\"swap\"><span>";
QCString &projName = Config_getString("PROJECT_NAME");
if (projName.isEmpty())
{
@@ -715,7 +715,7 @@ void FTVHelp::generateTreeView(QString* OutString)
{
t << projName;
}
- t << "</h3>\n";
+ t << "</span></h3>\n";
}
else
{
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 82d6176..71f237d 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -1444,7 +1444,7 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket)
t << " <td>";
if (closeBracket) t << "&nbsp;)";
t << "&nbsp;</td>" << endl;
- t << " <td width=\"100%\">";
+ t << " <td>";
}
else
{
@@ -1455,7 +1455,7 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList,bool closeBracket)
t << " <td>";
if (closeBracket) t << ")";
t << "</td>" << endl;
- t << " <td></td><td></td><td width=\"100%\">";
+ t << " <td></td><td></td><td>";
}
}
else
diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp
index 542dba1..0944c15 100644
--- a/src/htmlhelp.cpp
+++ b/src/htmlhelp.cpp
@@ -22,12 +22,14 @@
#include <stdlib.h>
#include <qlist.h>
#include <qdict.h>
+#include "qtextcodec.h"
#include "htmlhelp.h"
#include "config.h"
#include "message.h"
#include "doxygen.h"
#include "language.h"
+#include "portable.h"
//----------------------------------------------------------------------------
@@ -268,8 +270,13 @@ HtmlHelp::HtmlHelp() : indexFileDict(1009)
dc = 0;
cf = kf = 0;
index = new HtmlHelpIndex;
+ m_fromUtf8 = (void *)(-1);
}
+HtmlHelp::~HtmlHelp()
+{
+ if (m_fromUtf8!=(void *)(-1)) portable_iconv_close(m_fromUtf8);
+}
#if 0
/*! return a reference to the one and only instance of this class.
*/
@@ -289,6 +296,10 @@ static QDict<QCString> s_languageDict;
*/
void HtmlHelp::initialize()
{
+ const char *str = Config_getString("CHM_INDEX_ENCODING");
+ if(!str) str = "Windows-1250";
+ m_fromUtf8 = portable_iconv_open(str,"UTF-8");
+
/* open the contents file */
QCString fName = Config_getString("HTML_OUTPUT") + "/index.hhc";
cf = new QFile(fName);
@@ -299,7 +310,7 @@ void HtmlHelp::initialize()
}
/* Write the header of the contents file */
cts.setDevice(cf);
- cts.setEncoding(QTextStream::UnicodeUTF8);
+ cts.setEncoding(QTextStream::Latin1);
cts << "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n"
"<HTML><HEAD></HEAD><BODY>\n"
"<OBJECT type=\"text/site properties\">\n"
@@ -317,7 +328,7 @@ void HtmlHelp::initialize()
}
/* Write the header of the contents file */
kts.setDevice(kf);
- kts.setEncoding(QTextStream::UnicodeUTF8);
+ kts.setEncoding(QTextStream::Latin1);
kts << "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n"
"<HTML><HEAD></HEAD><BODY>\n"
"<OBJECT type=\"text/site properties\">\n"
@@ -409,7 +420,7 @@ void HtmlHelp::createProjectFile()
{
QTextStream t(&f);
#if QT_VERSION >= 200
- t.setEncoding(QTextStream::UnicodeUTF8);
+ t.setEncoding(QTextStream::Latin1);
#endif
@@ -430,7 +441,7 @@ void HtmlHelp::createProjectFile()
"Language=" << getLanguageString() << endl;
if (Config_getBool("BINARY_TOC")) t << "Binary TOC=YES\n";
if (Config_getBool("GENERATE_CHI")) t << "Create CHI file=YES\n";
- t << "Title=" << Config_getString("PROJECT_NAME") << endl << endl;
+ t << "Title=" << recode(Config_getString("PROJECT_NAME")) << endl << endl;
t << "[WINDOWS]" << endl;
@@ -440,7 +451,7 @@ void HtmlHelp::createProjectFile()
// the font-size one is not normally settable by the HTML Help Workshop
// utility but the way to set it is described here:
// http://support.microsoft.com/?scid=kb%3Ben-us%3B240062&x=17&y=18
- t << "main=\"" << Config_getString("PROJECT_NAME") << "\",\"index.hhc\","
+ t << "main=\"" << recode(Config_getString("PROJECT_NAME")) << "\",\"index.hhc\","
"\"index.hhk\",\"" << indexName << "\",\"" <<
indexName << "\",,,,,0x23520,,0x10387e,,,,,,,,0" << endl << endl;
@@ -527,6 +538,28 @@ void HtmlHelp::decContentsDepth()
--dc;
}
+QCString HtmlHelp::recode(const QCString &s)
+{
+ int iSize = s.length();
+ int oSize = iSize*4+1;
+ QCString output(oSize);
+ size_t iLeft = iSize;
+ size_t oLeft = oSize;
+ const char *iPtr = s.data();
+ char *oPtr = output.data();
+ if (!portable_iconv(m_fromUtf8,&iPtr,&iLeft,&oPtr,&oLeft))
+ {
+ oSize -= oLeft;
+ output.resize(oSize+1);
+ output.at(oSize)='\0';
+ return output;
+ }
+ else
+ {
+ return s;
+ }
+}
+
/*! Add an list item to the contents file.
* \param isDir boolean indicating if this is a dir or file entry
* \param name the name of the item.
@@ -546,10 +579,9 @@ void HtmlHelp::addContentsItem(bool isDir,
file = 0;
anchor = 0;
}
-
int i; for (i=0;i<dc;i++) cts << " ";
cts << "<LI><OBJECT type=\"text/sitemap\">";
- cts << "<param name=\"Name\" value=\"" << name << "\">";
+ cts << "<param name=\"Name\" value=\"" << recode(name) << "\">";
if (file) // made file optional param - KPW
{
cts << "<param name=\"Local\" value=\"" << file << Doxygen::htmlFileExtension;
diff --git a/src/htmlhelp.h b/src/htmlhelp.h
index 23a5d19..3113252 100644
--- a/src/htmlhelp.h
+++ b/src/htmlhelp.h
@@ -64,6 +64,7 @@ class HtmlHelp : public IndexIntf
public:
//static HtmlHelp *getInstance();
HtmlHelp();
+ ~HtmlHelp();
void initialize();
void finalize();
void incContentsDepth();
@@ -88,6 +89,8 @@ class HtmlHelp : public IndexIntf
QStrList indexFiles;
QDict<void> indexFileDict;
static HtmlHelp *theInstance;
+ QCString recode(const QCString &s);
+ void *m_fromUtf8;
};
#endif /* HTMLHELP_H */
diff --git a/src/pre.l b/src/pre.l
index e226148..8fd51e6 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -726,6 +726,7 @@ static void expandExpression(QCString &expr,QCString *rest,int pos)
//printf("expandExpression(%s,%s)\n",expr.data(),rest ? rest->data() : 0);
QCString macroName;
QCString expMacro;
+ bool definedTest=FALSE;
int i=pos,l,p,len;
while ((p=getNextId(expr,i,&l))!=-1) // search for an macro name
{
@@ -737,7 +738,14 @@ static void expandExpression(QCString &expr,QCString *rest,int pos)
if (g_expandedDict->find(macroName)==0) // expand macro
{
Define *def=isDefined(macroName);
- if (def && def->nargs==-1) // simple macro
+ if (definedTest) // macro name was found after defined
+ {
+ if (def) expMacro = " 1 "; else expMacro = " 0 ";
+ replaced=TRUE;
+ len=l;
+ definedTest=FALSE;
+ }
+ else if (def && def->nargs==-1) // simple macro
{
// substitute the definition of the macro
//printf("macro `%s'->`%s'\n",macroName.data(),def->definition.data());
@@ -759,6 +767,11 @@ static void expandExpression(QCString &expr,QCString *rest,int pos)
replaced=replaceFunctionMacro(expr,rest,p+l,len,def,expMacro);
len+=l;
}
+ else if (macroName=="defined")
+ {
+ //printf("found defined inside macro definition '%s'\n",expr.right(expr.length()-p).data());
+ definedTest=TRUE;
+ }
if (replaced) // expand the macro and rescan the expression
{
@@ -767,7 +780,7 @@ static void expandExpression(QCString &expr,QCString *rest,int pos)
QCString resultExpr=expMacro;
QCString restExpr=expr.right(expr.length()-len-p);
processConcatOperators(resultExpr);
- if (!def->nonRecursive)
+ if (def && !def->nonRecursive)
{
g_expandedDict->insert(macroName,def);
expandExpression(resultExpr,&restExpr,0);
@@ -1900,6 +1913,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
outputChar('*');outputChar('/');
if (--g_commentCount<=0)
{
+ if (g_lastCContext==Start)
+ // small hack to make sure that ^... rule will
+ // match when going to Start... Example: "/*...*/ some stuff..."
+ {
+ YY_CURRENT_BUFFER->yy_at_bol=1;
+ }
BEGIN(g_lastCContext);
}
}
diff --git a/src/scanner.l b/src/scanner.l
index b42e115..e05e38b 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -598,6 +598,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
%x ClassCategory
%x ClassTemplSpec
%x CliPropertyType
+%x CliPropertyIndex
%x CliOverride
%x Bases
%x BasesProt
@@ -934,8 +935,9 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
addType( current );
current->name = yytext;
}
-<CliPropertyType>"["{ID}"]" { // C++/CLI indexed property
- current->args = yytext;
+<CliPropertyType>"[" { // C++/CLI indexed property
+ current->name += yytext;
+ BEGIN( CliPropertyIndex );
}
<CliPropertyType>"{" {
curlyCount=0;
@@ -955,6 +957,13 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
addType( current );
current->type += yytext;
}
+<CliPropertyIndex>"]" {
+ BEGIN( CliPropertyType );
+ current->name+=yytext;
+ }
+<CliPropertyIndex>. {
+ current->name+=yytext;
+ }
<FindMembers>{B}*"property"{BN}+ {
if (!current->type.isEmpty())
{
@@ -1719,7 +1728,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
sharpCount++;
}
<EndTemplate>">>" {
- if (insideJava || insideCS)
+ if (insideJava || insideCS || insideCli)
{
unput('>');
unput(' ');
@@ -4034,6 +4043,16 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
if ( insidePHP && !containsWord(current->type,"function"))
{
initEntry();
+ if ( *yytext == '{' )
+ {
+ lastCurlyContext = FindMembers;
+ curlyCount=0;
+ BEGIN( SkipCurly );
+ }
+ else
+ {
+ BEGIN( FindMembers );
+ }
}
else
{
@@ -4543,7 +4562,9 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
<ClassVar>":" {
current->type.resize(0);
if ((current->spec & Entry::Interface) ||
- (current->spec & Entry::Struct) ||
+ (current->spec & Entry::Struct) ||
+ (current->spec & Entry::Ref) ||
+ (current->spec & Entry::Value) ||
insidePHP || insideCS || insideD || insideObjC
)
baseProt=Public;
@@ -4704,6 +4725,11 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
}
<Specialization>{BN}+ { lineCount(); *specName +=' '; }
<Specialization>"<<" { *specName += yytext; }
+<Specialization>">>"/{B}*"::" { // M$ C++ extension to allow >> to close a template...
+ unput('>');
+ unput(' ');
+ unput('>');
+ }
<Specialization>">>" {
if (insideCS) // for C# >> ends a nested template
{
diff --git a/src/translator_ru.h b/src/translator_ru.h
index f20856e..96047a5 100644
--- a/src/translator_ru.h
+++ b/src/translator_ru.h
@@ -19,54 +19,15 @@
* Nickolay Semyonov
* Andrey V. Stolyarov released Feb 14, 2001
* Alexandr V. Chelpanov <cav@cryptopro.ru> released Sep 25, 2004
- *
- * list documentation .
- *
- * Modules ,
- * ,
- * ., ,
- * doxygen \group.
- *
- * decode ,
- * .
- *
- * related functions - "
- * ", " ",
- * related to class, related to template, package ..
- * member.
- *
- * members member
- * .
- *
- * Compounds , .
- *
- * ?? .
- *
- * : Vitaly A. Repin <vitaly@radio.hop.stu.neva.ru>,
- * <bbman@mail.ru>
+ * Благодарности: Vitaly A. Repin <vitaly@radio.hop.stu.neva.ru>,
+ * Михаил Глушенков <bbman@mail.ru>
*/
#ifndef TRANSLATOR_RU_H
#define TRANSLATOR_RU_H
-class TranslatorRussian : public TranslatorAdapter_1_5_4
+class TranslatorRussian : public Translator
{
- private:
- /*! The decode() inline assumes the source written in the
- Koi8-R encoding (maintainer dependent).
- */
- inline QCString decode(const QCString & sInput)
- {
- //if (Config_getBool("USE_WINDOWS_ENCODING"))
- //{
- // return Koi8RToWindows1251(sInput);
- //}
- //else
- //{
- return sInput;
- //}
- }
-
public:
/*! Used for identification of the language. */
virtual QCString idLanguage()
@@ -75,117 +36,103 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
/* Used to get the command(s) for the language support. */
virtual QCString latexLanguageSupportCommand()
{
- //if (Config_getBool("USE_WINDOWS_ENCODING"))
- //{
- // return "\\usepackage[cp1251]{inputenc}\n\\usepackage[russian]{babel}\n";
- //}
- //else
- //{
return "\\usepackage[T2A]{fontenc}\n\\usepackage[russian]{babel}\n";
- //}
}
/*! return the language charset. This will be used for the HTML output */
virtual QCString idLanguageCharset()
{
- //if (Config_getBool("USE_WINDOWS_ENCODING"))
- //{
- // return "Windows-1251";
- //}
- //else
- //{
- return "koi8-r";
- //}
+ return "utf-8";
}
// --- Language translation methods -------------------
/*! used in the compound documentation before a list of related functions. */
virtual QCString trRelatedFunctions()
- { return decode(" "); }
+ { return "Относящиеся к классу функции"; }
/*! subscript for the related functions. */
virtual QCString trRelatedSubscript()
- { return decode("( )"); }
+ { return "(не члены класса)"; }
/*! header that is put before the detailed description of files, classes and namespaces. */
virtual QCString trDetailedDescription()
- { return decode(" "); }
+ { return "Подробное описание"; }
/*! header that is put before the list of typedefs. */
virtual QCString trMemberTypedefDocumentation()
- { return decode(" "); }
+ { return "Определения типов"; }
/*! header that is put before the list of enumerations. */
virtual QCString trMemberEnumerationDocumentation()
- { return decode(""); }
+ { return "Перечисления"; }
/*! header that is put before the list of member functions. */
virtual QCString trMemberFunctionDocumentation()
- { return decode(""); }
+ { return "Методы"; }
/*! header that is put before the list of member attributes. */
virtual QCString trMemberDataDocumentation()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return decode( "" );
+ return "Поля";
}
else
{
- return decode( " " );
+ return "Данные класса";
}
}
/*! this is the text of a link put after brief descriptions. */
virtual QCString trMore()
- { return decode("..."); }
+ { return "Подробнее..."; }
/*! put in the class documentation */
/* Dosn't use when optimization for C is on. */
virtual QCString trListOfAllMembers()
{
- return decode( " " );
+ return "Полный список членов класса";
}
/*! used as the title of the "list of all members" page of a class */
/* Dosn't use when optimization for C is on. */
virtual QCString trMemberList()
{
- return decode( "C " );
+ return "Cписок членов класса";
}
/*! this is the first part of a sentence that is followed by a class name */
/* Dosn't use when optimization for C is on. */
virtual QCString trThisIsTheListOfAllMembers()
- { return decode(" "); }
+ { return "Полный список членов класса "; }
/*! this is the remainder of the sentence after the class name */
/* Dosn't use when optimization for C is on. */
virtual QCString trIncludingInheritedMembers()
- { return decode(", "); }
+ { return ", включая наследуемые из базового класса"; }
/*! this is put at the author sections at the bottom of man pages.
* parameter s is name of the project name.
*/
virtual QCString trGeneratedAutomatically(const char *s)
- { QCString result=decode(" Doxygen");
- if (s) result+=decode(" ")+s;
- result+=decode(" .");
+ { QCString result="Автоматически создано Doxygen";
+ if (s) result+=QCString(" для ")+s;
+ result+=" из исходного текста.";
return result;
}
/*! put after an enum name in the list of all members */
virtual QCString trEnumName()
- { return decode(""); }
+ { return "перечисление"; }
/*! put after an enum value in the list of all members */
virtual QCString trEnumValue()
- { return decode(" "); }
+ { return "элементы перечисления"; }
/*! put after an undocumented member in the list of all members */
virtual QCString trDefinedIn()
- { return decode(" "); }
+ { return "определено в"; }
// quick reference sections
@@ -193,39 +140,39 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
* compounds or files (see the \\group command).
*/
virtual QCString trModules()
- { return decode(""); }
+ { return "Группы"; }
/*! This is put above each page as a link to the class hierarchy */
virtual QCString trClassHierarchy()
- { return decode(" "); }
+ { return "Иерархия классов"; }
/*! This is put above each page as a link to the list of annotated classes */
virtual QCString trCompoundList()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return decode( " " );
+ return "Структуры данных";
}
else
{
- return decode( "" );
+ return "Классы";
}
}
/*! This is put above each page as a link to the list of documented files */
virtual QCString trFileList()
- { return decode(""); }
+ { return "Файлы"; }
/*! This is put above each page as a link to all members of compounds. */
virtual QCString trCompoundMembers()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return decode( " " );
+ return "Поля структур";
}
else
{
- return decode( " " );
+ return "Члены классов";
}
}
@@ -233,34 +180,34 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
/*??*/
virtual QCString trFileMembers()
{
- return decode( " " );
+ return "Список членов всех файлов";
}
/*! This is put above each page as a link to all related pages. */
virtual QCString trRelatedPages()
- /* ?? ". : " , ,
- . */
- { return decode(""); }
+ /* ?? Вариант перевода "См. также: " более удачный, но не в заголовке,
+ как в данном случае. */
+ { return "Описания"; }
/*! This is put above each page as a link to all examples. */
virtual QCString trExamples()
- { return decode(""); }
+ { return "Примеры"; }
/*! This is put above each page as a link to the search engine. */
virtual QCString trSearch()
- { return decode(""); }
+ { return "Поиск"; }
/*! This is an introduction to the class hierarchy. */
virtual QCString trClassHierarchyDescription()
- { return decode(" ."); }
+ { return "Иерархия классов."; }
/*! This is an introduction to the list with all files. */
virtual QCString trFileListDescription(bool extractAll)
{
- QCString result=" ";
- if (!extractAll) result+=" ";
- result+=".";
- return decode(result);
+ QCString result="Полный список ";
+ if (!extractAll) result+="документированных ";
+ result+="файлов.";
+ return result;
}
/*! This is an introduction to the annotated compound list. */
@@ -268,94 +215,94 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return decode( " ." );
+ return "Структуры данных с их кратким описанием.";
}
else
{
- return decode( " ." );
+ return "Классы с их кратким описанием.";
}
}
/*! This is an introduction to the page with all class members. */
virtual QCString trCompoundMembersDescription(bool extractAll)
{
- QCString result=" ";
- if(!extractAll) result+=" ";
+ QCString result="Список всех ";
+ if(!extractAll) result+="документированных ";
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
- result+=" ";
+ result+="членов структур данных со ссылками на ";
else
- result+=" ";
+ result+="членов классов со ссылками на ";
if(!extractAll)
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
- result+=" .";
+ result+="документацию по структуре для каждого члена.";
else
- result+=" .";
+ result+="документацию по классу для каждого члена.";
}
else
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
- result += "";
+ result += "структуры";
else
- result += "";
- result+=", .";
+ result += "классы";
+ result+=", к которым они принадлежат.";
}
- return decode( result );
+ return result;
}
/*! This is an introduction to the page with all file members. */
virtual QCString trFileMembersDescription(bool extractAll)
{
- QCString result=" ";
- if (!extractAll) result+=" ";
+ QCString result="Список всех ";
+ if (!extractAll) result+="документированных ";
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- result+=", , , "
- " ";
+ result+="функций, переменных, макроопределений, "
+ "перечислений и определений типов";
}
else
{
- result+=" ";
+ result+="членов файлов ";
}
- result+=" ";
+ result+=" со ссылками на ";
if (extractAll)
- result+=", .";
+ result+="файлы, к которым они принадлежат.";
else
- result+=".";
- return decode( result );
+ result+="документацию.";
+ return result;
}
/*! This is an introduction to the page with the list of all examples */
virtual QCString trExamplesDescription()
- { return decode(" ."); }
+ { return "Полный список примеров."; }
/*! This is an introduction to the page with the list of related pages */
virtual QCString trRelatedPagesDescription()
- { return decode(" ."); }
+ { return "Полный список дополнительных описаний."; }
/*! This is an introduction to the page with the list of class/file groups */
virtual QCString trModulesDescription()
- { return decode(" ."); }
+ { return "Полный список групп."; }
// index titles (the project name is prepended for these)
/*! This is used in HTML as the title of index.html. */
virtual QCString trDocumentation()
- { return decode(""); }
+ { return "Документация"; }
/*! This is used in LaTeX as the title of the chapter with the
* index of all groups.
*/
virtual QCString trModuleIndex()
- { return decode(" "); }
+ { return "Алфавитный указатель групп"; }
/*! This is used in LaTeX as the title of the chapter with the
* class hierarchy.
*/
virtual QCString trHierarchicalIndex()
- { return decode(" "); }
+ { return "Иерархический список классов"; }
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index.
@@ -364,11 +311,11 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return decode( " " );
+ return "Алфавитный указатель структур данных";
}
else
{
- return decode( " " );
+ return "Алфавитный указатель классов";
}
}
@@ -376,13 +323,13 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
* list of all files.
*/
virtual QCString trFileIndex()
- { return decode( " " ); }
+ { return "Список файлов"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all groups.
*/
virtual QCString trModuleDocumentation()
- { return decode(""); }
+ { return "Группы"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all classes, structs and unions.
@@ -391,11 +338,11 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return decode( " " );
+ return "Структуры данных";
}
else
{
- return decode( "" );
+ return "Классы";
}
}
@@ -403,101 +350,101 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
* the documentation of all files.
*/
virtual QCString trFileDocumentation()
- { return decode(""); }
+ { return "Файлы"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all examples.
*/
virtual QCString trExampleDocumentation()
- { return decode(""); }
+ { return "Примеры"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages.
*/
virtual QCString trPageDocumentation()
- { return decode(" "); }
+ { return "Тематические описания"; }
/*! This is used in LaTeX as the title of the document */
virtual QCString trReferenceManual()
- { return decode(""); }
+ { return "Оглавление"; }
/*! This is used in the documentation of a file as a header before the
* list of defines
*/
virtual QCString trDefines()
- { return decode(""); }
+ { return "Макросы"; }
/*! This is used in the documentation of a file as a header before the
* list of function prototypes
*/
virtual QCString trFuncProtos()
- { return decode(" "); }
+ { return "Прототипы функций"; }
/*! This is used in the documentation of a file as a header before the
* list of typedefs
*/
virtual QCString trTypedefs()
- { return decode(" "); }
+ { return "Определения типов"; }
/*! This is used in the documentation of a file as a header before the
* list of enumerations
*/
virtual QCString trEnumerations()
- { return decode(""); }
+ { return "Перечисления"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) functions
*/
virtual QCString trFunctions()
- { return decode(""); }
+ { return "Функции"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
virtual QCString trVariables()
- { return decode(""); }
+ { return "Переменные"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
virtual QCString trEnumerationValues()
- { return decode(" "); }
+ { return "Элементы перечислений"; }
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
*/
virtual QCString trDefineDocumentation()
- { return decode(""); }
+ { return "Макросы"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes
*/
virtual QCString trFunctionPrototypeDocumentation()
- { return decode(" "); }
+ { return "Прототипы функций"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs
*/
virtual QCString trTypedefDocumentation()
- { return decode(""); }
+ { return "Типы"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types
*/
virtual QCString trEnumerationTypeDocumentation()
- { return decode(""); }
+ { return "Перечисления"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions
*/
virtual QCString trFunctionDocumentation()
- { return decode(""); }
+ { return "Функции"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables
*/
virtual QCString trVariableDocumentation()
- { return decode(""); }
+ { return "Переменные"; }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds
@@ -506,11 +453,11 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return decode( " " );
+ return "Структуры данных";
}
else
{
- return decode( "" );
+ return "Классы";
}
}
@@ -523,60 +470,60 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trGeneratedAt(const char *date,const char *projName)
{
- QCString result=decode(" ");
- if (projName) result+=decode(" ")+projName;
- result+=decode(". : ")+date;
- result+=decode(". ");
+ QCString result="Документация ";
+ if (projName) result+=QCString("по ")+projName;
+ result+=QCString(". Последние изменения: ")+date;
+ result+=". Создано системой";
return result;
}
/*! This is part of the sentence used in the standard footer of each page.
*/
virtual QCString trWrittenBy()
{
- return decode(":");
+ return "Автор:";
}
/*! this text is put before a class diagram */
virtual QCString trClassDiagram(const char *clName)
{
- return decode(" :")+clName+":";
+ return QCString("Граф наследования:")+clName+":";
}
/*! this text is generated when the \\internal command is used. */
virtual QCString trForInternalUseOnly()
- { return decode(" "); }
+ { return "Только для внутреннего использования"; }
/*! this text is generated when the \\warning command is used. */
virtual QCString trWarning()
- { return decode(""); }
+ { return "Предупреждения"; }
/*! this text is generated when the \\version command is used. */
virtual QCString trVersion()
- { return decode(""); }
+ { return "Версия"; }
/*! this text is generated when the \\date command is used. */
virtual QCString trDate()
- { return decode(""); }
+ { return "Дата"; }
/*! this text is generated when the \\return command is used. */
virtual QCString trReturns()
- { return decode(""); }
+ { return "Возвращает"; }
/*! this text is generated when the \\sa command is used. */
virtual QCString trSeeAlso()
- { return decode(". "); }
+ { return "См. также"; }
/*! this text is generated when the \\param command is used. */
virtual QCString trParameters()
- { return decode(""); }
+ { return "Аргументы"; }
/*! this text is generated when the \\exception command is used. */
virtual QCString trExceptions()
- { return decode(""); }
+ { return "Исключения"; }
/*! this text is used in the title page of a LaTeX document. */
virtual QCString trGeneratedBy()
- { return decode(" "); }
+ { return "Создано системой"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990307
@@ -584,22 +531,22 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
/*! used as the title of page containing all the index of all namespaces. */
virtual QCString trNamespaceList()
- { return decode(" "); }
+ { return "Пространства имен"; }
/*! used as an introduction to the namespace list */
virtual QCString trNamespaceListDescription(bool extractAll)
{
- QCString result=" ";
- if (!extractAll) result+=" ";
- result+=" .";
- return decode(result);
+ QCString result="Полный список ";
+ if (!extractAll) result+="документированных ";
+ result+="пространств имен.";
+ return result;
}
/*! used in the class documentation as a header before the list of all
* friends of a class
*/
virtual QCString trFriends()
- { return decode(""); }
+ { return "Друзья"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990405
@@ -609,8 +556,8 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
* related classes
*/
virtual QCString trRelatedFunctionDocumentation()
- { return decode(" , "
- " "); }
+ { return "Документация по друзьям класса и функциям, отноносящимся"
+ " к классу"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
@@ -624,67 +571,67 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
QCString result;
if (isTemplate)
{
- result=" ";
+ result="Шаблон ";
switch(compType)
{
- case ClassDef::Class: result+=""; break;
- case ClassDef::Struct: result+=""; break;
- case ClassDef::Union: result+=""; break;
- case ClassDef::Interface: result+=""; break;
- case ClassDef::Protocol: result+="protocol"; break; // translate me!
- case ClassDef::Category: result+="category"; break; // translate me!
- case ClassDef::Exception: result+=""; break;
+ case ClassDef::Class: result+="класса"; break;
+ case ClassDef::Struct: result+="структуры"; break;
+ case ClassDef::Union: result+="объединения"; break;
+ case ClassDef::Interface: result+="интерфейса"; break;
+ case ClassDef::Protocol: result+="протокола"; break;
+ case ClassDef::Category: result+="категории"; break;
+ case ClassDef::Exception: result+="исключения"; break;
}
}
else
{
switch(compType)
{
- case ClassDef::Class: result+=""; break;
- case ClassDef::Struct: result+=""; break;
- case ClassDef::Union: result+=""; break;
- case ClassDef::Interface: result+=""; break;
- case ClassDef::Protocol: result+="protocol"; break; // translate me!
- case ClassDef::Category: result+="category"; break; // translate me!
- case ClassDef::Exception: result+=""; break;
+ case ClassDef::Class: result+="Класс"; break;
+ case ClassDef::Struct: result+="Структура"; break;
+ case ClassDef::Union: result+="Объединение"; break;
+ case ClassDef::Interface: result+="Интерфейс"; break;
+ case ClassDef::Protocol: result+="Протокол"; break;
+ case ClassDef::Category: result+="Категория"; break;
+ case ClassDef::Exception: result+="Исключение"; break;
}
}
result+=" ";
- return decode(result)+clName;
+ return result+clName;
}
/*! used as the title of the HTML page of a file */
virtual QCString trFileReference(const char *fileName)
{
- return decode(" ")+fileName;
+ return QCString("Файл ")+fileName;
}
/*! used as the title of the HTML page of a namespace */
virtual QCString trNamespaceReference(const char *namespaceName)
{
- return decode(" ")+namespaceName;
+ return QCString("Пространство имен ")+namespaceName;
}
virtual QCString trPublicMembers()
- { return decode(" "); }
+ { return "Открытые члены"; }
virtual QCString trPublicSlots()
- { return decode(" "); }
+ { return "Открытые слоты"; }
virtual QCString trSignals()
- { return decode(""); }
+ { return "Сигналы"; }
virtual QCString trStaticPublicMembers()
- { return decode(" "); }
+ { return "Открытые статические члены"; }
virtual QCString trProtectedMembers()
- { return decode(" "); }
+ { return "Защищенные члены"; }
virtual QCString trProtectedSlots()
- { return decode(" "); }
+ { return "Защищенные слоты"; }
virtual QCString trStaticProtectedMembers()
- { return decode(" "); }
+ { return "Защищенные статические члены"; }
virtual QCString trPrivateMembers()
- { return decode(" "); }
+ { return "Закрытые члены"; }
virtual QCString trPrivateSlots()
- { return decode(" "); }
+ { return "Закрытые слоты"; }
virtual QCString trStaticPrivateMembers()
- { return decode(" "); }
+ { return "Закрытые статические члены"; }
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
@@ -705,7 +652,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
if (i<numEntries-2) // not the fore last entry
result+=", ";
else // the fore last entry
- result+=decode( " " );
+ result+=" и ";
}
}
return result;
@@ -716,7 +663,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trInheritsList(int numEntries)
{
- return decode(" :")+trWriteList(numEntries)+".";
+ return "Базовые классы:"+trWriteList(numEntries)+".";
}
/*! used in class documentation to produce a list of super classes,
@@ -724,7 +671,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trInheritedByList(int numEntries)
{
- return decode(" :")+trWriteList(numEntries)+".";
+ return "Производные классы:"+trWriteList(numEntries)+".";
}
/*! used in member documentation blocks to produce a list of
@@ -732,12 +679,12 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trReimplementedFromList(int numEntries)
{
- QCString result=" ";
+ QCString result="Переопределяет метод";
if(numEntries>1)
- result+=" ";
+ result+="ы предков";
else
- result+=" ";
- return decode(result+" ")+trWriteList(numEntries)+".";
+ result+=" предка";
+ return result+" "+trWriteList(numEntries)+".";
}
/*! used in member documentation blocks to produce a list of
@@ -745,33 +692,33 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trReimplementedInList(int numEntries)
{
- return decode(" ")+trWriteList(numEntries)+".";
+ return "Переопределяется в "+trWriteList(numEntries)+".";
}
/*! This is put above each page as a link to all members of namespaces. */
virtual QCString trNamespaceMembers()
- { return decode(" "); }
+ { return "Члены пространств имен"; }
/*! This is an introduction to the page with all namespace members */
virtual QCString trNamespaceMemberDescription(bool extractAll)
{
- QCString result=" ";
- if (!extractAll) result+=" ";
- result+=" .";
- return decode(result);
+ QCString result="Полный список ";
+ if (!extractAll) result+="документированных ";
+ result+="членов простанств имен.";
+ return result;
}
/*! This is used in LaTeX as the title of the chapter with the
* index of all namespaces.
*/
virtual QCString trNamespaceIndex()
- { return decode(" "); }
+ { return "Алфавитный указатель пространств имен"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces.
*/
virtual QCString trNamespaceDocumentation()
- { return decode(" "); }
+ { return "Пространства имен"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990522
@@ -781,7 +728,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
* namespaces in a file.
*/
virtual QCString trNamespaces()
- { return decode( " " ); }
+ { return "Пространства имен"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990728
@@ -794,39 +741,41 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
bool single)
{ // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
- QCString result=(QCString)" ";
+ QCString result=QCString("Объявления и описания членов ");
switch(compType)
{
- case ClassDef::Class: result+="";
- if (single) result+=''; else result+="";
+ case ClassDef::Class: result+="класс";
+ if (single) result+="а"; else result+="ов";
break;
- case ClassDef::Struct: result+="";
- if (single) result+='';
+ case ClassDef::Struct: result+="структур";
+ if (single) result+="ы";
break;
- case ClassDef::Union: result+="";
- if (single) result+=''; else result+='';
+ case ClassDef::Union: result+="объединени";
+ if (single) result+="я"; else result+="й";
break;
- case ClassDef::Interface: result+="";
- if (single) result+=''; else result+="";
+ case ClassDef::Interface: result+="интерфейс";
+ if (single) result+="а"; else result+="ов";
break;
- case ClassDef::Protocol: result+="Protocol"; // translate me!
+ case ClassDef::Protocol: result+="протокол";
+ if (single) result+="а"; else result+="ов";
break;
- case ClassDef::Category: result+="Category"; // translate me!
+ case ClassDef::Category: result+="категори";
+ if (single) result+="и"; else result+="й";
break;
- case ClassDef::Exception: result+="";
- if (single) result+=''; else result+='';
+ case ClassDef::Exception: result+="исключени";
+ if (single) result+="я"; else result+="й";
break;
}
- result+=" ";
- if (single) result+=":"; else result+=":";
- return decode(result);
+ result+=" находятся в файл";
+ if (single) result+="е:"; else result+="ах:";
+ return result;
}
/*! This is in the (quick) index as a link to the alphabetical compound
* list.
*/
virtual QCString trAlphabeticalList()
- { return decode(" "); }
+ { return "Алфавитный указатель"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
@@ -834,18 +783,18 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
/*! This is used as the heading text for the retval command. */
virtual QCString trReturnValues()
- { return decode(" "); }
+ { return "Возвращаемые значения"; }
/*! This is in the (quick) index as a link to the main page (index.html)
*/
virtual QCString trMainPage()
- { return decode(" "); }
+ { return "Титульная страница"; }
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual QCString trPageAbbreviation()
- { return decode("."); }
+ { return "стр."; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991106
@@ -853,11 +802,11 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
virtual QCString trDefinedAtLineInSourceFile()
{
- return decode(". @1 @0");
+ return "См. определение в файле @1 строка @0";
}
virtual QCString trDefinedInSourceFile()
{
- return decode(". @0");
+ return "См. определение в файле @0";
}
//////////////////////////////////////////////////////////////////////////
@@ -866,7 +815,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
virtual QCString trDeprecated()
{
- return decode(".");
+ return "Уст.";
}
//////////////////////////////////////////////////////////////////////////
@@ -876,68 +825,68 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
/*! this text is put before a collaboration diagram */
virtual QCString trCollaborationDiagram(const char *clName)
{
- return (QCString)decode(" ")+clName+":";
+ return (QCString)"Граф связей класса "+clName+":";
}
/*! this text is put before an include dependency graph */
virtual QCString trInclDepGraph(const char *fName)
{
- return decode(" ")+fName+":";
+ return (QCString)"Граф включаемых заголовочных файлов для "+fName+":";
}
/*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation()
{
- return decode("()");
+ return "Конструктор(ы)";
}
/*! Used in the file documentation to point to the corresponding sources. */
virtual QCString trGotoSourceCode()
{
- return decode(". .");
+ return "См. исходные тексты.";
}
/*! Used in the file sources to point to the corresponding documentation. */
virtual QCString trGotoDocumentation()
{
- return decode(". .");
+ return "См. документацию.";
}
/*! Text for the \\pre command */
virtual QCString trPrecondition()
{
- return decode("");
+ return "Предусловие";
}
/*! Text for the \\post command */
virtual QCString trPostcondition()
{
- return decode("");
+ return "Постусловие";
}
/*! Text for the \\invariant command */
virtual QCString trInvariant()
{
- return decode("");
+ return "Инвариант";
}
/*! Text shown before a multi-line variable/enum initialization */
virtual QCString trInitialValue()
{
- return decode("");
+ return "Инициализатор";
}
/*! Text used the source code in the file index */
virtual QCString trCode()
{
- return decode(" ");
+ return "Исходные тексты";
}
virtual QCString trGraphicalHierarchy()
{
- return decode(" . .");
+ return "Иерархия классов. Графический вид.";
}
virtual QCString trGotoGraphicalHierarchy()
{
- return decode(". .");
+ return "см. графический вид.";
}
virtual QCString trGotoTextualHierarchy()
{
- return decode(". .");
+ return "см. текстовый вид.";
}
virtual QCString trPageIndex()
{
- return decode(" ");
+ return "Алфавитный указатель тематических описаний";
}
//////////////////////////////////////////////////////////////////////////
@@ -946,50 +895,50 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
virtual QCString trNote()
{
- return decode("");
+ return "Заметки";
}
virtual QCString trPublicTypes()
{
- return decode(" ");
+ return "Открытые типы";
}
virtual QCString trPublicAttribs()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return decode( " " );
+ return "Поля данных";
}
else
{
- return decode( " " );
+ return "Открытые атрибуты";
}
}
virtual QCString trStaticPublicAttribs()
{
- return decode(" ");
+ return "Статические открытые данные";
}
virtual QCString trProtectedTypes()
{
- return decode(" ");
+ return "Защищенные типы";
}
virtual QCString trProtectedAttribs()
{
- return decode(" ");
+ return "Защищенные данные";
}
virtual QCString trStaticProtectedAttribs()
{
- return decode(" ");
+ return "Статические защищенные данные";
}
virtual QCString trPrivateTypes()
{
- return decode(" ");
+ return "Закрытые типы";
}
virtual QCString trPrivateAttribs()
{
- return decode(" ");
+ return "Закрытые данные";
}
virtual QCString trStaticPrivateAttribs()
{
- return decode(" ");
+ return "Закрытые статические данные";
}
@@ -1001,13 +950,13 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
virtual QCString trTodo()
/*??*/
{
- return decode(" ");
+ return "Необходимо сделать";
}
/*! Used as the header of the todo list */
virtual QCString trTodoList()
/*??*/
{
- return decode(" ");
+ return "Список задач";
}
//////////////////////////////////////////////////////////////////////////
@@ -1016,24 +965,24 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
virtual QCString trReferencedBy()
{
- return decode(" ");
+ return "Используется в";
}
virtual QCString trRemarks()
{
- return decode(".");
+ return "Прим.";
}
virtual QCString trAttention()
{
- return decode("");
+ return "Внимание";
}
virtual QCString trInclByDepGraph()
{
- return decode(" , :");
+ return "Граф файлов, в которые включается этот файл:";
}
virtual QCString trSince()
/*??*/
{
- return decode(" ");
+ return "Начиная с";
}
//////////////////////////////////////////////////////////////////////////
@@ -1043,32 +992,32 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
/*! title of the graph legend page */
virtual QCString trLegendTitle()
{
- return decode("");
+ return "Легенда";
}
/*! page explaining how the dot graph's should be interpreted */
virtual QCString trLegendDocs()
{
- return decode(
- ", .<p>\n"
- " :\n"
+ return
+ "Обозначения, используемые в графах.<p>\n"
+ "Рассмотрим следующий пример:\n"
"\\code\n"
- "/*! - */\n"
+ "/*! Невидимый класс из-за усечения */\n"
"class Invisible { };\n\n"
- "/*! , */\n"
+ "/*! Усеченный класс, отношение наследования скрыто */\n"
"class Truncated : public Invisible { };\n\n"
- "/* */\n"
+ "/* Недокументированный класс */\n"
"class Undocumented { };\n\n"
- "/*! */\n"
+ "/*! Открытое наследование */\n"
"class PublicBase : public Truncated { };\n\n"
- "/*! */\n"
+ "/*! Шаблон класса */\n"
"template<class T> class Templ {};\n\n"
- "/*! */\n"
+ "/*! Защищенное наследование */\n"
"class ProtectedBase { };\n\n"
- "/*! */\n"
+ "/*! Закрытое наследование */\n"
"class PrivateBase { };\n\n"
- "/*! , Inherited */\n"
+ "/*! Класс, используемый классом Inherited */\n"
"class Used { };\n\n"
- "/*! , */\n"
+ "/*! Класс, порожденный от других классов */\n"
"class Inherited : public PublicBase,\n"
" protected ProtectedBase,\n"
" private PrivateBase,\n"
@@ -1079,39 +1028,39 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
" Used *m_usedClass;\n"
"};\n"
"\\endcode\n"
- " \\c MAX_DOT_GRAPH_HEIGHT "
- " 240, :"
+ "Если \\c MAX_DOT_GRAPH_HEIGHT в конфигурационном файле "
+ "установлен в 240, получится следующий граф:"
"<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
"<p>\n"
- " :\n"
+ "Прямоугольники в этом графе имеют следующее значение:\n"
"<ul>\n"
- "<li> , "
- " .\n"
- "<li> .\n"
- "<li> .\n"
- "<li> , \n"
- " / . , "
- " .\n"
+ "<li>Заполненный черный прямоугольник представляет структуру или класс, "
+ "для которого создан граф.\n"
+ "<li>Прямоугольник с черной границей обозначает документированную структуру или класс.\n"
+ "<li>Прямоугольник с серой границей обозначает недокументированную структуру или класс.\n"
+ "<li>Прямоугольник с красной границей обозначает документированную структуру или класс, для которого\n"
+ " не все отношения наследования/содержания показаны. Граф усечен, "
+ "если он не поместился в указанных границах.\n"
"</ul>\n"
- " :\n"
+ "Стрелки имеют следующее значение:\n"
"<ul>\n"
- "<li>- "
- " .\n"
- "<li>- .\n"
- "<li>- .\n"
- "<li> , "
- " ."
- " , "
- " . \n"
- "<li> "
- ", . "
- " .\n"
- "</ul>\n");
+ "<li>Темно-синяя стрелка используется для изображения отношения открытого наследования "
+ "между двумя классами.\n"
+ "<li>Темно-зеленая стрелка используется при защищенном наследовании.\n"
+ "<li>Темно-красная стрелка используется при закрытом наследовании.\n"
+ "<li>Фиолетовая стрелка используется, если класс содержится в"
+ "другом класе или используется другим классом."
+ "Со стрелкой указывается переменная, "
+ "через которую доступен указываемый класс или структура. \n"
+ "<li>Желтая стрелка используется для связи подстановки шаблона и "
+ "шаблона, на основе которого эта подстановка выполнена. С шаблоном"
+ "указывается параметр подстановки.\n"
+ "</ul>\n";
}
/*! text for the link to the legend page */
virtual QCString trLegend()
{
- return decode(". ");
+ return "см. легенду";
}
//////////////////////////////////////////////////////////////////////////
@@ -1121,12 +1070,12 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
/*! Used as a marker that is put before a test item */
virtual QCString trTest()
{
- return decode("");
+ return "Тест";
}
/*! Used as the header of the test list */
virtual QCString trTestList()
{
- return decode(" ");
+ return "Список тестов";
}
//////////////////////////////////////////////////////////////////////////
@@ -1136,7 +1085,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
/*! Used as a section header for KDE-2 IDL methods */
virtual QCString trDCOPMethods()
{
- return decode("DCOP ");
+ return "DCOP Методы";
}
//////////////////////////////////////////////////////////////////////////
@@ -1146,12 +1095,12 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
/*! Used as a section header for IDL properties */
virtual QCString trProperties()
{
- return decode("");
+ return "Свойства";
}
/*! Used as a section header for IDL property documentation */
virtual QCString trPropertyDocumentation()
{
- return decode(" ");
+ return "Полный список свойств";
}
//////////////////////////////////////////////////////////////////////////
@@ -1163,37 +1112,37 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- return decode( " " );
+ return "Структуры данных";
}
else
{
- return decode( "" );
+ return "Классы";
}
}
/*! Used as the title of a Java package */
virtual QCString trPackage(const char *name)
{
- return decode(" ")+name;
+ return QCString("Пакет ")+name;
}
/*! Title of the package index page */
virtual QCString trPackageList()
{
- return decode(" ");
+ return "Полный список пакетов ";
}
/*! The description of the package index page */
virtual QCString trPackageListDescription()
{
- return decode(" .");
+ return "Полный список документированных пакетов.";
}
/*! The link name in the Quick links header for each page */
virtual QCString trPackages()
{
- return decode("");
+ return "Пакеты";
}
/*! Text shown before a multi-line define */
virtual QCString trDefineValue()
{
- return decode(":");
+ return "Макроопределение:";
}
//////////////////////////////////////////////////////////////////////////
@@ -1203,12 +1152,12 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
/*! Used as a marker that is put before a \\bug item */
virtual QCString trBug()
{
- return decode("");
+ return "Ошибка";
}
/*! Used as the header of the bug list */
virtual QCString trBugList()
{
- return decode("");
+ return "Ошибки";
}
//////////////////////////////////////////////////////////////////////////
@@ -1227,7 +1176,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
/*! Used as header RTF general index */
virtual QCString trRTFGeneralIndex()
{
- return decode(" ");
+ return "Алфавитный указатель";
}
/*! This is used for translation of the word that will possibly
@@ -1238,14 +1187,14 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
- QCString result((first_capital ? " " : " "));
- return decode(result);
+ QCString result((first_capital ? "Структуры данных" : "структуры данных"));
+ return result;
}
else
{
- QCString result((first_capital ? "" : ""));
- if(!singular) result+="";
- return decode(result);
+ QCString result((first_capital ? "Класс" : "класс"));
+ if(!singular) result+="ы";
+ return result;
}
}
@@ -1255,9 +1204,9 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trFile(bool first_capital, bool singular)
{
- QCString result((first_capital ? "" : ""));
- if (!singular) result+="";
- return decode(result);
+ QCString result((first_capital ? "Файл" : "файл"));
+ if (!singular) result+="ы";
+ return result;
}
/*! This is used for translation of the word that will possibly
@@ -1266,9 +1215,9 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trNamespace(bool first_capital, bool singular)
{
- QCString result((first_capital ? "" : ""));
- result+=(singular?" ":" ");
- return decode(result);
+ QCString result((first_capital ? "Пространств" : "пространств"));
+ result+=(singular?"о имен":"а имен");
+ return result;
}
/*! This is used for translation of the word that will possibly
@@ -1277,9 +1226,9 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trGroup(bool first_capital, bool singular)
{
- QCString result((first_capital ? "" : ""));
- result+=(singular ? "" : "");
- return decode(result);
+ QCString result((first_capital ? "Групп" : "групп"));
+ result+=(singular ? "а" : "ы");
+ return result;
}
/*! This is used for translation of the word that will possibly
@@ -1288,9 +1237,9 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trPage(bool first_capital, bool singular)
{
- QCString result((first_capital ? "" : ""));
- result+=(singular ? "" : "");
- return decode(result);
+ QCString result((first_capital ? "Страниц" : "страниц"));
+ result+=(singular ? "а" : "ы");
+ return result;
}
/*! This is used for translation of the word that will possibly
@@ -1299,9 +1248,9 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trMember(bool first_capital, bool singular)
{
- QCString result((first_capital ? "" : ""));
- if (!singular) result+="";
- return decode(result);
+ QCString result((first_capital ? "Член" : "член"));
+ if (!singular) result+="ы";
+ return result;
}
/*! This is used for translation of the word that will possibly
@@ -1310,9 +1259,9 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trGlobal(bool first_capital, bool singular)
{
- QCString result((first_capital ? "" : ""));
- result+=(singular ? "" : "");
- return decode(result);
+ QCString result((first_capital ? "Глобальны" : "глобальны"));
+ result+=(singular ? "й" : "е");
+ return result;
}
//////////////////////////////////////////////////////////////////////////
@@ -1323,9 +1272,9 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
* for the author section in man pages. */
virtual QCString trAuthor(bool first_capital, bool singular)
{
- QCString result((first_capital ? "" : ""));
- if (!singular) result+="";
- return decode(result);
+ QCString result((first_capital ? "Автор" : "автор"));
+ if (!singular) result+="ы";
+ return result;
}
//////////////////////////////////////////////////////////////////////////
@@ -1336,7 +1285,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trReferences()
{
- return decode(" ");
+ return "Перекрестные ссылки";
}
//////////////////////////////////////////////////////////////////////////
@@ -1348,7 +1297,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trImplementedFromList(int numEntries)
{
- return decode(" ")+trWriteList(numEntries)+".";
+ return "Замещает "+trWriteList(numEntries)+".";
}
/*! used in member documentation blocks to produce a list of
@@ -1356,7 +1305,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trImplementedInList(int numEntries)
{
- return decode(" ")+trWriteList(numEntries)+".";
+ return "Замещается в "+trWriteList(numEntries)+".";
}
//////////////////////////////////////////////////////////////////////////
@@ -1368,7 +1317,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trRTFTableOfContents()
{
- return decode("");
+ return "Оглавление";
}
//////////////////////////////////////////////////////////////////////////
@@ -1380,7 +1329,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trDeprecatedList()
{
- return decode( " " );
+ return "Список устаревших определений и описаний";
}
//////////////////////////////////////////////////////////////////////////
@@ -1392,12 +1341,12 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trEvents()
{
- return decode( "" );
+ return "События";
}
/*! Header used for the documentation section of a class' events. */
virtual QCString trEventDocumentation()
{
- return decode( "C" );
+ return "Cобытия";
}
//////////////////////////////////////////////////////////////////////////
@@ -1408,35 +1357,35 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trPackageTypes()
{
- return decode( " " );
+ return "Типы с областью видимости пакета";
}
/*! Used as a heading for a list of Java class functions with package
* scope.
*/
virtual QCString trPackageMembers()
{
- return decode( " " );
+ return "Функции с областью видимости пакета";
}
/*! Used as a heading for a list of static Java class functions with
* package scope.
*/
virtual QCString trStaticPackageMembers()
{
- return decode( " " );
+ return "Статические функции с областью видимости пакета";
}
/*! Used as a heading for a list of Java class variables with package
* scope.
*/
virtual QCString trPackageAttribs()
{
- return decode( " " );
+ return "Переменные с областью видимости пакета";
}
/*! Used as a heading for a list of static Java class variables with
* package scope.
*/
virtual QCString trStaticPackageAttribs()
{
- return decode( " " );
+ return "Статические переменные с областью видимости пакета";
}
//////////////////////////////////////////////////////////////////////////
@@ -1448,12 +1397,12 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trAll()
{
- return decode( "" );
+ return "Указатель";
}
/*! Put in front of the call graph for a function. */
virtual QCString trCallGraph()
{
- return decode( " :" );
+ return "Граф вызовов:";
}
//////////////////////////////////////////////////////////////////////////
@@ -1466,14 +1415,14 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trSearchForIndex()
{
- return decode( "" );
+ return "Поиск";
}
/*! This string is used as the title for the page listing the search
* results.
*/
virtual QCString trSearchResultsTitle()
{
- return decode( " " );
+ return "Результаты поиска";
}
/*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found.
@@ -1487,16 +1436,16 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
{
if (numDocuments==0)
{
- return decode( " , ." );
+ return "К сожалению, по Вашему запросу ничего не найдено.";
}
else if( numDocuments == 1 )
{
- return decode( " 1 ." );
+ return "Найден 1 документ.";
}
else
{
- return decode( "() <b>$num</b> (). "
- " ." );
+ return "Найден(о) <b>$num</b> документ(ов). "
+ "Документы отсортированы по релевантности.";
}
}
/*! This string is put before the list of matched words, for each search
@@ -1504,7 +1453,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trSearchMatches()
{
- return decode( ":" );
+ return "Найдено:";
}
//////////////////////////////////////////////////////////////////////////
@@ -1515,7 +1464,7 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trSourceFile(QCString& filename)
{
- return decode( " " + filename );
+ return "Исходный файл " + filename;
}
//////////////////////////////////////////////////////////////////////////
@@ -1526,40 +1475,40 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
* hierarchy.
*/
virtual QCString trDirIndex()
- { return decode( " " ); }
+ { return "Дерево директорий"; }
/*! This is used as the name of the chapter containing the documentation
* of the directories.
*/
virtual QCString trDirDocumentation()
- { return decode( "" ); }
+ { return "Директории"; }
/*! This is used as the title of the directory index and also in the
* Quick links of a HTML page, to link to the directory hierarchy.
*/
virtual QCString trDirectories()
- { return decode( " " ); }
+ { return "Алфавитный указатель директорий"; }
/*! This returns a sentences that introduces the directory hierarchy.
* and the fact that it is sorted alphabetically per level
*/
virtual QCString trDirDescription()
- { return decode( " " ); }
+ { return "Дерево директорий"; }
/*! This returns the title of a directory page. The name of the
* directory is passed via \a dirName.
*/
virtual QCString trDirReference(const char *dirName)
- { QCString result=QCString(" ")+ dirName; return decode( result ); }
+ { QCString result=QCString("Содержание директории ")+ dirName; return result; }
/*! This returns the word directory with or without starting capital
* (\a first_capital) and in sigular or plural form (\a singular).
*/
virtual QCString trDir(bool first_capital, bool singular)
{
- QCString result((first_capital ? "" : ""));
- if (singular) result+=""; else result+="";
- return decode( result );
+ QCString result((first_capital ? "Директори" : "директори"));
+ if (singular) result+="я"; else result+="и";
+ return result;
}
//////////////////////////////////////////////////////////////////////////
@@ -1571,9 +1520,9 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
*/
virtual QCString trOverloadText()
{
- return decode( " "
- " . "
- " ." );
+ return "Эта функция перегружена и предоставляется исключительно "
+ "для удобства использования. Она отличается от вышеупомянутой "
+ "только фактическими аргументами.";
}
//////////////////////////////////////////////////////////////////////////
@@ -1583,16 +1532,227 @@ class TranslatorRussian : public TranslatorAdapter_1_5_4
/*! This is used to introduce a caller (or called-by) graph */
virtual QCString trCallerGraph()
{
- return decode( " :" );
+ return "Граф вызова функции:";
}
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
virtual QCString trEnumerationValueDocumentation()
- { return decode( " " ); }
+ { return "Элементы перечислений"; }
+
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.5.4 (mainly for Fortran)
+//////////////////////////////////////////////////////////////////////////
+ // Простите переводчика, уже лет 20 не писал на фортране...
+ // Любые замечания приму с благодарностью.
+
+ /*! header that is put before the list of member subprograms (Fortran). */
+ virtual QCString trMemberFunctionDocumentationFortran()
+ { return "Функции/подпрограммы"; }
+
+ /*! This is put above each page as a link to the list of annotated data types (Fortran). */
+ virtual QCString trCompoundListFortran()
+ { return "Типы данных"; }
+
+ /*! This is put above each page as a link to all members of compounds (Fortran). */
+ virtual QCString trCompoundMembersFortran()
+ { return "Поля данных"; }
+
+ /*! This is an introduction to the annotated compound list (Fortran). */
+ virtual QCString trCompoundListDescriptionFortran()
+ { return "Аннотированный список типов данных:"; }
+
+ /*! This is an introduction to the page with all data types (Fortran). */
+ virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
+ {
+ QCString result="Список всех ";
+ if (!extractAll)
+ {
+ result+="документированных ";
+ }
+ result+="членов типа со ссылками ";
+ if (!extractAll)
+ {
+ result+="на документацию для каждого члена:";
+ }
+ else
+ {
+ result+="на содержащую структуру:";
+ }
+ return result;
+ }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * annotated compound index (Fortran).
+ */
+ virtual QCString trCompoundIndexFortran()
+ { return "Типы данных"; }
+
+ /*! This is used in LaTeX as the title of the chapter containing
+ * the documentation of all data types (Fortran).
+ */
+ virtual QCString trTypeDocumentation()
+ { return "Оглавление типов данных"; }
+
+ /*! This is used in the documentation of a file as a header before the
+ * list of (global) subprograms (Fortran).
+ */
+ virtual QCString trSubprograms()
+ { return "Функции/подпрограммы"; }
+
+ /*! This is used in the documentation of a file/namespace before the list
+ * of documentation blocks for subprograms (Fortran)
+ */
+ virtual QCString trSubprogramDocumentation()
+ { return "Функции/подпрограммы"; }
+
+ /*! This is used in the documentation of a file/namespace/group before
+ * the list of links to documented compounds (Fortran)
+ */
+ virtual QCString trDataTypes()
+ { return "Типы данных"; }
+
+ /*! used as the title of page containing all the index of all modules (Fortran). */
+ virtual QCString trModulesList()
+ { return "Указатель модулей"; }
+ /*! used as an introduction to the modules list (Fortran) */
+ virtual QCString trModulesListDescription(bool extractAll)
+ {
+ QCString result="Аннотированный список";
+ if (!extractAll) result+="документированных ";
+ result+="модулей:";
+ return result;
+ }
+
+ /*! used as the title of the HTML page of a module/type (Fortran) */
+ virtual QCString trCompoundReferenceFortran(const char *clName,
+ ClassDef::CompoundType compType,
+ bool isTemplate)
+ {
+ QCString result=(QCString)clName;
+ if (isTemplate)
+ {
+ switch(compType)
+ {
+ case ClassDef::Class: result+=" Модуль"; break;
+ case ClassDef::Struct: result+=" Тип"; break;
+ case ClassDef::Union: result+=" Объединение"; break;
+ case ClassDef::Interface: result+=" Интерфейс"; break;
+ case ClassDef::Protocol: result+=" Протокол"; break;
+ case ClassDef::Category: result+=" Категория"; break;
+ case ClassDef::Exception: result+=" Исключение"; break;
+ }
+ }
+ else
+ {
+ if (isTemplate) result+=" Шаблон ";
+ switch(compType)
+ {
+ case ClassDef::Class: result+="модуля"; break;
+ case ClassDef::Struct: result+="типа"; break;
+ case ClassDef::Union: result+="объединения"; break;
+ case ClassDef::Interface: result+="интерфейса"; break;
+ case ClassDef::Protocol: result+="протокола"; break;
+ case ClassDef::Category: result+="категории"; break;
+ case ClassDef::Exception: result+="исключения"; break;
+ }
+ }
+ return result;
+ }
+ /*! used as the title of the HTML page of a module (Fortran) */
+ virtual QCString trModuleReference(const char *namespaceName)
+ {
+ return QCString("Модуль ") + namespaceName;
+ }
+
+ /*! This is put above each page as a link to all members of modules. (Fortran) */
+ virtual QCString trModulesMembers()
+ { return "Члены модуля"; }
+
+ /*! This is an introduction to the page with all modules members (Fortran) */
+ virtual QCString trModulesMemberDescription(bool extractAll)
+ {
+ QCString result="Список всех ";
+ if (!extractAll) result+="документированных ";
+ result+="модулей со ссылками ";
+ if (extractAll)
+ {
+ result+="на документацию для каждого члена:";
+ }
+ else
+ {
+ result+="на модули, их содержащие:";
+ }
+ return result;
+ }
+
+ /*! This is used in LaTeX as the title of the chapter with the
+ * index of all modules (Fortran).
+ */
+ virtual QCString trModulesIndex()
+ { return "Указатель модулей"; }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trModule(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Модул" : "модул"));
+ if (singular) result+="ь"; else result+="и";
+ return result;
+ }
+ /*! This is put at the bottom of a module documentation page and is
+ * followed by a list of files that were used to generate the page.
+ */
+ virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType,
+ bool single)
+ { // here s is one of " Module", " Struct" or " Union"
+ // single is true implies a single file
+ QCString result=(QCString)"Документация по ";
+ switch(compType)
+ {
+ case ClassDef::Class: result+="модулю"; break;
+ case ClassDef::Struct: result+="типу"; break;
+ case ClassDef::Union: result+="объединению"; break;
+ case ClassDef::Interface: result+="интерфейсу"; break;
+ case ClassDef::Protocol: result+="протоколу"; break;
+ case ClassDef::Category: result+="кетегории"; break;
+ case ClassDef::Exception: result+="исключению"; break;
+ }
+ result+=" сгенерирована на основе следующ";
+ if (single) result+="его файла:"; else result+="их файлов:";
+ return result;
+ }
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trType(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Тип" : "тип"));
+ if (!singular) result+="ы";
+ return result;
+ }
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trSubprogram(bool first_capital, bool singular)
+ {
+ QCString result((first_capital ? "Подпрограмм" : "подпрограмм"));
+ if (singular) result+="а"; else result+="ы";
+ return result;
+ }
+ /*! C# Type Constraint list */
+ virtual QCString trTypeConstraints()
+ {
+ return "Согласование типов";
+ }
};
#endif
diff --git a/src/vhdlcode.l b/src/vhdlcode.l
index 26949b0..7e72d84 100644
--- a/src/vhdlcode.l
+++ b/src/vhdlcode.l
@@ -589,7 +589,7 @@ static void codifyMapLines(char *text)
else
{
generateClassOrGlobalLink(*g_code,sp);
- g_PortMapComp=tt;
+ if (dot) g_PortMapComp=tt;
}
dot=FALSE;
g_temp.resize(0);
@@ -620,7 +620,7 @@ static void codifyMapLines(char *text)
//if (dot==TRUE)
//{
QCString tt=g_temp;
- tt=tt.lower();
+ // tt=tt.lower();
QCString *ss;
if ((ss=VhdlDocGen::findKeyWord(tt)))
diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp
index 40f9af0..4e027e0 100644
--- a/src/vhdldocgen.cpp
+++ b/src/vhdldocgen.cpp
@@ -1165,28 +1165,31 @@ QCString VhdlDocGen::trTypeString(int 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::DOCUMENT: return "Doc";
- case VhdlDocGen::UNITS: return "Units";
- case VhdlDocGen::PORTMAP: return "Port Map";
- default: return "";
+ 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::DOCUMENT: return "Doc";
+ 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";
+ default: return "";
}
} // convertType
@@ -1497,6 +1500,14 @@ void VhdlDocGen::writeFunctionProto(OutputList& ol,const ArgumentList* al,const
}
ol.startBold();
ol.docify(" )");
+ const char *exp=mdef->excpString();
+ if(exp)
+ {
+ ol.insertMemberAlign();
+ ol.docify("[ ");
+ ol.docify(exp);
+ ol.docify(" ]");
+ }
ol.endBold();
}
@@ -1542,16 +1553,18 @@ void VhdlDocGen::writeFuncProcDocu(
ArgumentListIterator ali(*al);
int index=ali.count();
- if (index==0){
+ if (index==0)
+ {
ol.docify(" ( ) ");
return;
}
- ol.startParameterList(TRUE);
+ ol.startParameterList(FALSE);
Argument *arg;
bool first=TRUE;
for (;(arg=ali.current());++ali)
{
ol.startParameterType(first,"");
+ if (first) ol.writeChar('(');
if (!VhdlDocGen::isProcess(md))
{
if (TRUE) //VhdlDocGen::isProcedure(md))
@@ -1685,6 +1698,9 @@ void VhdlDocGen::writeVhdlDeclarations(MemberList* ml,
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,0,0,gd,theTranslator_vhdlType(VhdlDocGen::PROCEDURE,FALSE),0,FALSE,VhdlDocGen::PROCEDURE);
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,0,0,gd,theTranslator_vhdlType(VhdlDocGen::RECORD,FALSE),0,FALSE,VhdlDocGen::RECORD);
VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,0,0,gd,theTranslator_vhdlType(VhdlDocGen::UNITS,FALSE),0,FALSE,VhdlDocGen::UNITS);
+ VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,0,0,gd,theTranslator_vhdlType(VhdlDocGen::SHAREDVARIABLE,FALSE),0,FALSE,VhdlDocGen::SHAREDVARIABLE);
+ VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,0,0,gd,theTranslator_vhdlType(VhdlDocGen::VFILE,FALSE),0,FALSE,VhdlDocGen::VFILE);
+ VhdlDocGen::writeVHDLDeclarations(ml,ol,cd,0,0,gd,theTranslator_vhdlType(VhdlDocGen::GROUP,FALSE),0,FALSE,VhdlDocGen::GROUP);
}
@@ -1764,6 +1780,9 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol,
if (VhdlDocGen::isRecord(mdef)) Doxygen::tagFile << "record";
if (VhdlDocGen::isLibrary(mdef)) Doxygen::tagFile << "library";
if (VhdlDocGen::isPackage(mdef)) Doxygen::tagFile << "package";
+ if (VhdlDocGen::isVariable(mdef)) Doxygen::tagFile << "shared variable";
+ if (VhdlDocGen::isFile(mdef)) Doxygen::tagFile << "file";
+ if (VhdlDocGen::isGroup(mdef)) Doxygen::tagFile << "group";
Doxygen::tagFile << "\">" << endl;
Doxygen::tagFile << " <type>" << convertToXML(mdef->typeString()) << "</type>" << endl;
@@ -1940,6 +1959,9 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol,
case VhdlDocGen::TYPE:
case VhdlDocGen::SUBTYPE:
case VhdlDocGen::CONSTANT:
+ case VhdlDocGen::SHAREDVARIABLE:
+ case VhdlDocGen::VFILE:
+ case VhdlDocGen::GROUP:
writeLink(mdef,ol);
ol.docify(" ");
ol.insertMemberAlign();
@@ -2236,6 +2258,15 @@ QCString VhdlDocGen::trVhdlType(int type,bool sing)
return "Doc";
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";
default:
return "Class";
}
diff --git a/src/vhdldocgen.h b/src/vhdldocgen.h
index e33f01c..2c530a4 100644
--- a/src/vhdldocgen.h
+++ b/src/vhdldocgen.h
@@ -69,7 +69,10 @@ class VhdlDocGen
DOCUMENT, //18 0x12
UNITS,
GENERIC,
- PORTMAP
+ PORTMAP,
+ GROUP,
+ VFILE,
+ SHAREDVARIABLE
};
VhdlDocGen();
@@ -171,6 +174,12 @@ class VhdlDocGen
{ return mdef->getMemberSpecifiers()==VhdlDocGen::UNITS; }
static bool isPackageBody(const MemberDef *mdef)
{ return mdef->getMemberSpecifiers()==VhdlDocGen::PACKAGE_BODY; }
+ static bool isVariable(const MemberDef *mdef)
+ { return mdef->getMemberSpecifiers()==VhdlDocGen::SHAREDVARIABLE; }
+ static bool isFile(const MemberDef *mdef)
+ { return mdef->getMemberSpecifiers()==VhdlDocGen::VFILE; }
+ static bool isGroup(const MemberDef *mdef)
+ { return mdef->getMemberSpecifiers()==VhdlDocGen::GROUP; }
//-----------------------------------------------------
// translatable items
diff --git a/src/vhdlscanner.l b/src/vhdlscanner.l
index 784d395..e11d0b4 100644
--- a/src/vhdlscanner.l
+++ b/src/vhdlscanner.l
@@ -199,6 +199,18 @@ void getType(Entry* p,char* text)
{
p->spec=VhdlDocGen::UNITS;
}
+ else if (name.contains("shared",false) && name.contains("variable",false))
+ {
+ p->spec=VhdlDocGen::SHAREDVARIABLE;
+ }
+ else if (stricmp(name.data(),"file" )==0)
+ {
+ p->spec=VhdlDocGen::VFILE;
+ }
+ else if (stricmp(name.data(),"group" )==0)
+ {
+ p->spec=VhdlDocGen::GROUP;
+ }
else
{
err("wrong type");
@@ -369,6 +381,11 @@ static void parseFunctionProto()
if (qcs.contains("function",FALSE)==0 && qcs.contains("procedure",FALSE)==0)
return;
//Entry* ppEntry=new Entry;
+ while (qcs.stripPrefix(" "));
+ if (qcs.stripPrefix("impure"))
+ current->exception="impure";
+ else if (qcs.stripPrefix("pure"))
+ current->exception="pure";
VhdlDocGen::parseFuncProto(qcs.data(),ql,name,ret);
current->name=name;
@@ -541,15 +558,18 @@ ENDEFF ("if"|"case"|"loop"|"generate"){BR}*[;]
ENDE3 {BR}*[^a-zA-Z]("end"){BR}+{FUNCNAME}{BR}*[;]
ENDFUNC {B}*"end"{BR}+"function"{BR}+{FUNCNAME}{BR}*[;]
-FUNCPROC ^{B}*("function"|"procedure"){B}*
+FUNCIMPURE "impure"|"pure"
+FUNCPROC ^{B}*{FUNCIMPURE}*{BR}*("function"|"procedure"){B}*
ARCHITECTURE ("architecture"){BR}+{NAME}{BR}*("of")
-PROCESS ({BR}*{FUNCNAME}{B}*[:]{BR}*("process"){BR}*{PROTO})|("process"){BR}*("("){BR}*{PROTO}|[^a-zA-Z]("process"){CR}|[^a-zA-Z]("process"){BR}+("is")
+POST "postponed"
+PROCESS ({BR}*{FUNCNAME}{B}*[:]{BR}*{POST}{BR}("process"){BR}*{PROTO})|("process"){BR}*("("){BR}*{PROTO}|[^a-zA-Z]("process"){CR}|[^a-zA-Z]("process"){BR}+("is")
ENDPROCESS ("end"){BR}*("process")
LIBUSE ^{B}*("use"|"library"){BR}+
ENTITY ^{B}*("component"|"entity"|"package"){BR}+
PBODY ("package"){B}+("body"){BR}+{NAME}
-SIGTYPES ^{B}*("subtype"|"type"|"constant"|"attribute"|"signal"|"units"){BR}+
+SHARED ("shared"){BR}+("variable")
+SIGTYPES ^{B}*({SHARED}|"file"|"group"|"subtype"|"type"|"constant"|"attribute"|"signal"|"units"){BR}+
ALLTYPESMAP {B}*[_a-zA-ZA_Z0-9. ]*{B}*
@@ -691,6 +711,7 @@ ALLID [^;()\t ]
{
isBody=0;
scantype=0;
+ lastCompound=0;
current->section=Entry::CLASS_SEC;
current->spec=VhdlDocGen::ENTITY;
current->protection=Public;
@@ -1443,7 +1464,41 @@ static void initEntry(Entry *e)
static void newEntry()
{
- current_root->addSubEntry(current);
+ // Add only enties/architectures/packages to root
+ // and signals to classes where they were found
+ // ENTITY dlatch_93 IS -- VHDL'93-Syntax !!!
+ // PORT (d, clk : IN bit;
+ // q, qbar : OUT bit);
+ // GROUP path IS (SIGNAL, SIGNAL);
+ // GROUP d_to_q : path (d, q);
+ // ATTRIBUTE propagation : time;
+ // END dlatch_93;
+
+ if (current->spec==VhdlDocGen::ENTITY ||
+ current->spec==VhdlDocGen::PACKAGE ||
+ current->spec==VhdlDocGen::ARCHITECTURE ||
+ current->spec==VhdlDocGen::PACKAGE_BODY)
+ {
+ current_root->addSubEntry(current);
+ }
+ else
+ {
+ if (lastCompound)
+ {
+ lastCompound->addSubEntry(current);
+ }
+ else
+ {
+ if (lastEntity)
+ {
+ lastEntity->addSubEntry(current);
+ }
+ else
+ {
+ current_root->addSubEntry(current); // should not happen!
+ }
+ }
+ }
previous = current;
current = new Entry ;
initEntry(current);