diff options
-rw-r--r-- | INSTALL | 4 | ||||
-rw-r--r-- | README | 4 | ||||
-rwxr-xr-x | configure | 4 | ||||
-rw-r--r-- | doc/config.doc | 6 | ||||
-rw-r--r-- | doc/doxygen_manual.tex | 54 | ||||
-rw-r--r-- | doc/doxygen_usage.doc | 1 | ||||
-rw-r--r-- | doc/language.doc | 4 | ||||
-rw-r--r-- | doc/perlmod.doc | 5 | ||||
-rw-r--r-- | doc/translator_report.txt | 35 | ||||
-rw-r--r-- | src/classdef.cpp | 2 | ||||
-rw-r--r-- | src/code.l | 3 | ||||
-rw-r--r-- | src/config.l | 7 | ||||
-rw-r--r-- | src/docparser.cpp | 12 | ||||
-rw-r--r-- | src/doxygen_css.h | 15 | ||||
-rw-r--r-- | src/fortrancode.l | 4 | ||||
-rw-r--r-- | src/ftvhelp.cpp | 4 | ||||
-rw-r--r-- | src/htmlgen.cpp | 4 | ||||
-rw-r--r-- | src/htmlhelp.cpp | 46 | ||||
-rw-r--r-- | src/htmlhelp.h | 3 | ||||
-rw-r--r-- | src/pre.l | 23 | ||||
-rw-r--r-- | src/scanner.l | 34 | ||||
-rw-r--r-- | src/translator_ru.h | 922 | ||||
-rw-r--r-- | src/vhdlcode.l | 4 | ||||
-rw-r--r-- | src/vhdldocgen.cpp | 79 | ||||
-rw-r--r-- | src/vhdldocgen.h | 11 | ||||
-rw-r--r-- | src/vhdlscanner.l | 63 |
26 files changed, 849 insertions, 504 deletions
@@ -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) @@ -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) @@ -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)); @@ -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 << " )"; t << " </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 */ @@ -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); |