summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt22
-rw-r--r--src/clangparser.cpp35
-rw-r--r--src/commentcnv.l70
-rw-r--r--src/config.xml52
-rw-r--r--src/dirdef.cpp6
-rw-r--r--src/docparser.cpp2
-rw-r--r--src/dot.cpp2
-rw-r--r--src/index.cpp6
-rw-r--r--src/memberlist.cpp2
-rw-r--r--src/parserintf.h2
-rw-r--r--src/portable.cpp1
-rw-r--r--src/translator_am.h8
-rw-r--r--src/translator_ru.h8
-rw-r--r--src/translator_ua.h8
14 files changed, 171 insertions, 53 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 08c8439..2218e82 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -73,7 +73,7 @@ set_source_files_properties(${GENERATED_SRC}/ce_parse.h PROPERTIES GENERATED 1)
# lang_cfg.h
add_custom_command(
COMMENT "Generating ${GENERATED_SRC}/lang_cfg.h"
- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/lang_cfg.cmake ${LANG_CODES} 2> ${GENERATED_SRC}/lang_cfg.h
+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/lang_cfg.cmake ${GENERATED_SRC}/lang_cfg.h ${LANG_CODES}
DEPENDS ${LANGUAGE_FILES}
OUTPUT ${GENERATED_SRC}/lang_cfg.h
)
@@ -244,6 +244,26 @@ add_library(_doxygen STATIC
)
add_executable(doxygen main.cpp)
+
+if (use_libclang)
+ find_package(LLVM REQUIRED CONFIG)
+ find_package(Clang REQUIRED CONFIG)
+ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
+ target_compile_features(_doxygen PRIVATE cxx_alignof)
+ target_compile_features(doxygen PRIVATE cxx_alignof)
+ target_compile_options(_doxygen PRIVATE -stdlib=libc++ -std=c++11)
+ target_compile_options(doxygen PRIVATE -stdlib=libc++ -std=c++11)
+ elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
+ target_compile_options(_doxygen PRIVATE -std=c++11)
+ target_compile_options(doxygen PRIVATE -std=c++11)
+ endif()
+ include_directories(${LLVM_INCLUDE_DIRS})
+ add_definitions(${LLVM_DEFINITIONS})
+ llvm_map_components_to_libnames(llvm_libs support core option)
+ target_compile_definitions(doxygen PRIVATE ${LLVM_DEFINITIONS})
+ set(CLANG_LIBS libclang clangTooling ${llvm_libs})
+endif()
+
target_link_libraries(doxygen
_doxygen
doxycfg
diff --git a/src/clangparser.cpp b/src/clangparser.cpp
index 67e754b..77151d6 100644
--- a/src/clangparser.cpp
+++ b/src/clangparser.cpp
@@ -4,6 +4,7 @@
#if USE_LIBCLANG
#include <clang-c/Index.h>
+#include "clang/Tooling/Tooling.h"
#include <qfileinfo.h>
#include <stdlib.h>
#include "message.h"
@@ -160,15 +161,46 @@ void ClangParser::start(const char *fileName,QStrList &filesInTranslationUnit)
static bool clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING);
static QStrList &includePath = Config_getList(INCLUDE_PATH);
static QStrList clangOptions = Config_getList(CLANG_OPTIONS);
+ static QCString clangCompileDatabase = Config_getList(CLANG_COMPILATION_DATABASE_PATH);
if (!clangAssistedParsing) return;
//printf("ClangParser::start(%s)\n",fileName);
p->fileName = fileName;
p->index = clang_createIndex(0, 0);
p->curLine = 1;
p->curToken = 0;
- char **argv = (char**)malloc(sizeof(char*)*(4+Doxygen::inputPaths.count()+includePath.count()+clangOptions.count()));
QDictIterator<void> di(Doxygen::inputPaths);
int argc=0;
+ std::string error;
+ // load a clang compilation database (https://clang.llvm.org/docs/JSONCompilationDatabase.html)
+ // this only needs to be loaded once, and could be refactored to a higher level function
+ static std::unique_ptr<clang::tooling::CompilationDatabase> db =
+ clang::tooling::CompilationDatabase::loadFromDirectory(clangCompileDatabase.data(), error);
+ int clang_option_len = 0;
+ std::vector<clang::tooling::CompileCommand> command;
+ if (strcmp(clangCompileDatabase, "0") != 0) {
+ if (db == nullptr) {
+ // user specified a path, but DB file was not found
+ err("%s using clang compilation database path of: \"%s\"\n", error.c_str(),
+ clangCompileDatabase.data());
+ } else {
+ // check if the file we are parsing is in the DB
+ command = db->getCompileCommands(fileName);
+ if (!command.empty() ) {
+ // it's possible to have multiple entries for the same file, so use the last entry
+ clang_option_len = command[command.size()-1].CommandLine.size();
+ }
+ }
+ }
+ char **argv = (char**)malloc(sizeof(char*)*(4+Doxygen::inputPaths.count()+includePath.count()+clangOptions.count()+clang_option_len));
+ if (!command.empty() ) {
+ std::vector<std::string> options = command[command.size()-1].CommandLine;
+ // copy each compiler option used from the database. Skip the first which is compiler exe.
+ for (auto option = options.begin()+1; option != options.end(); option++) {
+ argv[argc++] = strdup(option->c_str());
+ }
+ // this extra addition to argv is accounted for as we are skipping the first entry in
+ argv[argc++]=strdup("-w"); // finally, turn off warnings.
+ } else {
// add include paths for input files
for (di.toFirst();di.current();++di,++argc)
{
@@ -230,6 +262,7 @@ void ClangParser::start(const char *fileName,QStrList &filesInTranslationUnit)
// provide the input and and its dependencies as unsaved files so we can
// pass the filtered versions
argv[argc++]=strdup(fileName);
+ }
static bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
//printf("source %s ----------\n%s\n-------------\n\n",
// fileName,p->source.data());
diff --git a/src/commentcnv.l b/src/commentcnv.l
index 6fea6c9..ebee914 100644
--- a/src/commentcnv.l
+++ b/src/commentcnv.l
@@ -89,6 +89,8 @@ static int g_lastBlockContext;
static bool g_pythonDocString;
static int g_nestingCount;
+static bool g_vhdl; // for VHDL old style --! comment
+
static SrcLangExt g_lang;
static bool isFixedForm; // For Fortran
@@ -250,7 +252,7 @@ void replaceComment(int offset);
%%
-<Scan>[^"'!\/\n\\#-,]* { /* eat anything that is not " / , or \n */
+<Scan>[^"'!\/\n\\#,\-]* { /* eat anything that is not " / , or \n */
copyToOutput(yytext,(int)yyleng);
}
<Scan>[,] { /* eat , so we have a nice separator in long initialization lines */
@@ -425,6 +427,7 @@ void replaceComment(int offset);
}
else
{
+ g_vhdl = TRUE;
copyToOutput(yytext,(int)yyleng);
g_nestingCount=0;
g_commentStack.clear(); /* to be on the save side */
@@ -664,7 +667,27 @@ void replaceComment(int offset);
}
}
}
-<CComment>"\n"/[ \t]*[^#] { /* end of Python comment */
+ /* Python an VHDL share CComment, so special attention for ending commments is required */
+<CComment>"\n"/[ \t]*"#" {
+ if (g_lang!=SrcLangExt_VHDL)
+ {
+ REJECT;
+ }
+ else
+ {
+ if (g_vhdl) // inside --! comment
+ {
+ g_vhdl = FALSE;
+ copyToOutput(yytext,(int)yyleng);
+ BEGIN(Scan);
+ }
+ else // C-type comment
+ {
+ REJECT;
+ }
+ }
+ }
+<CComment>"\n"/[ \t]*"-" {
if (g_lang!=SrcLangExt_Python || g_pythonDocString)
{
REJECT;
@@ -674,18 +697,38 @@ void replaceComment(int offset);
copyToOutput(yytext,(int)yyleng);
BEGIN(Scan);
}
- }
-<CComment>"\n"/[ \t]*[^\-] { /* end of VHDL comment */
- if (g_lang!=SrcLangExt_VHDL)
- {
+ }
+<CComment>"\n"/[ \t]*[^ \t#\-] {
+ if (g_lang==SrcLangExt_Python)
+ {
+ if (g_pythonDocString)
+ {
+ REJECT;
+ }
+ else
+ {
+ copyToOutput(yytext,(int)yyleng);
+ BEGIN(Scan);
+ }
+ }
+ else if (g_lang==SrcLangExt_VHDL)
+ {
+ if (g_vhdl) // inside --! comment
+ {
+ g_vhdl = FALSE;
+ copyToOutput(yytext,(int)yyleng);
+ BEGIN(Scan);
+ }
+ else // C-type comment
+ {
+ REJECT;
+ }
+ }
+ else
+ {
REJECT;
- }
- else
- {
- copyToOutput(yytext,(int)yyleng);
- BEGIN(Scan);
- }
- }
+ }
+ }
/* removed for bug 674842 (bug was introduced in rev 768)
<CComment>"'" {
g_charContext = YY_START;
@@ -1001,6 +1044,7 @@ void convertCppComments(BufStr *inBuf,BufStr *outBuf,const char *fileName)
g_condStack.setAutoDelete(TRUE);
g_commentStack.clear();
g_commentStack.setAutoDelete(TRUE);
+ g_vhdl = FALSE;
printlex(yy_flex_debug, TRUE, __FILE__, fileName);
isFixedForm = FALSE;
diff --git a/src/config.xml b/src/config.xml
index 0fdf3ef..6cd7997 100644
--- a/src/config.xml
+++ b/src/config.xml
@@ -215,7 +215,7 @@ Go to the <a href="commands.html">next</a> section or return to the
This tag specifies the encoding used for all characters in the config file that
follow. The default is UTF-8 which is also the encoding used for all text before
the first occurrence of this tag. Doxygen uses \c libiconv (or the iconv built into
- \c libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of
+ \c libc) for the transcoding. See https://www.gnu.org/software/libiconv/ for the list of
possible encodings.
]]>
</docs>
@@ -661,7 +661,7 @@ Go to the <a href="commands.html">next</a> section or return to the
<docs>
<![CDATA[
Set the \c SIP_SUPPORT tag to \c YES if your project consists
- of <a href="http://www.riverbankcomputing.co.uk/software/sip/intro">sip</a> sources only.
+ of <a href="https://www.riverbankcomputing.com/software/sip/intro">sip</a> sources only.
Doxygen will parse them like normal C++ but will assume all classes use public
instead of private inheritance when no explicit protection keyword is present.
]]>
@@ -1172,7 +1172,7 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
The \c CITE_BIB_FILES tag can be used to specify one or more \c bib files
containing the reference definitions. This must be a list of <code>.bib</code> files. The
<code>.bib</code> extension is automatically appended if omitted. This requires the
- \c bibtex tool to be installed. See also http://en.wikipedia.org/wiki/BibTeX for
+ \c bibtex tool to be installed. See also https://en.wikipedia.org/wiki/BibTeX for
more info. For \f$\mbox{\LaTeX}\f$ the style of the bibliography can be controlled
using \ref cfg_latex_bib_style "LATEX_BIB_STYLE".
To use this feature you need \c bibtex and \c perl available in the search path.
@@ -1285,7 +1285,7 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
This tag can be used to specify the character encoding of the source files that
doxygen parses. Internally doxygen uses the UTF-8 encoding.
Doxygen uses `libiconv` (or the `iconv` built into `libc`) for the transcoding.
- See <a href="http://www.gnu.org/software/libiconv">the libiconv documentation</a> for
+ See <a href="https://www.gnu.org/software/libiconv/">the libiconv documentation</a> for
the list of possible encodings.
]]>
</docs>
@@ -1585,7 +1585,7 @@ to disable this feature.
If the \c USE_HTAGS tag is set to \c YES then the references to source code
will point to the HTML generated by the \c htags(1) tool instead of doxygen
built-in source browser. The \c htags tool is part of GNU's global source
- tagging system (see http://www.gnu.org/software/global/global.html). You
+ tagging system (see https://www.gnu.org/software/global/global.html). You
will need version 4.8.6 or higher.
<br>
To use it do the following:
@@ -1637,6 +1637,20 @@ to disable this feature.
]]>
</docs>
</option>
+ <option type='string' id='CLANG_COMPILATION_DATABASE_PATH' setting='USE_LIBCLANG' defval='0'>
+ <docs>
+<![CDATA[
+ If clang assisted parsing is enabled you can provide the clang parser with the
+ path to the <a href="http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html">
+ compilation database</a> used when the files were built. This is equivalent to
+ specifying the "-p" option to a clang tool, such as clang-check. These options
+ will then be pased to the parser.
+
+ @note The availability of this option depends on whether or not doxygen
+ was generated with the `-Duse-libclang=ON` option for CMake.
+ ]]>
+ </docs>
+ </option>
</group>
<group name='Index' docs='Configuration options related to the alphabetical class index'>
<option type='bool' id='ALPHABETICAL_INDEX' defval='1'>
@@ -1904,7 +1918,7 @@ hr.footer {
The \c HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
Doxygen will adjust the colors in the style sheet and background images
according to this color. Hue is specified as an angle on a colorwheel,
- see http://en.wikipedia.org/wiki/Hue for more information.
+ see https://en.wikipedia.org/wiki/Hue for more information.
For instance the value 0 represents red, 60 is yellow, 120 is green,
180 is cyan, 240 is blue, 300 purple, and 360 is red again.
]]>
@@ -1981,14 +1995,14 @@ hr.footer {
<![CDATA[
If the \c GENERATE_DOCSET tag is set to \c YES, additional index files
will be generated that can be used as input for
- <a href="http://developer.apple.com/tools/xcode/">Apple's Xcode 3
+ <a href="https://developer.apple.com/tools/xcode/">Apple's Xcode 3
integrated development environment</a>, introduced with OSX 10.5 (Leopard).
To create a documentation set, doxygen will generate a Makefile in the
HTML output directory. Running \c make will produce the docset in that
directory and running <code>make install</code> will install the docset in
<code>~/Library/Developer/Shared/Documentation/DocSets</code>
so that Xcode will find it at startup. See
- http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for
+ https://developer.apple.com/tools/creatingdocsetswithdoxygen.html for
more information.
]]>
</docs>
@@ -2133,7 +2147,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
<![CDATA[
The \c QHP_NAMESPACE tag specifies the namespace to use when generating
Qt Help Project output. For more information please see
- <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace">Qt Help Project / Namespace</a>.
+ <a href="http://doc.qt.io/qt-4.8/qthelpproject.html#namespace">Qt Help Project / Namespace</a>.
]]>
</docs>
</option>
@@ -2142,7 +2156,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
<![CDATA[
The \c QHP_VIRTUAL_FOLDER tag specifies the namespace to use when
generating Qt Help Project output. For more information please see
- <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-folders">Qt Help Project / Virtual Folders</a>.
+ <a href="http://doc.qt.io/qt-4.8/qthelpproject.html#virtual-folders">Qt Help Project / Virtual Folders</a>.
]]>
</docs>
</option>
@@ -2150,7 +2164,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
<docs>
<![CDATA[
If the \c QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom filter to add. For more information please see
- <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+ <a href="http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
]]>
</docs>
</option>
@@ -2159,7 +2173,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
<![CDATA[
The \c QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the custom filter to add.
For more information please see
- <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+ <a href="http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
]]>
</docs>
</option>
@@ -2167,7 +2181,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
<docs>
<![CDATA[
The \c QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's filter section matches.
- <a href="http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+ <a href="http://doc.qt.io/qt-4.8/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
]]>
</docs>
</option>
@@ -2295,7 +2309,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
<docs>
<![CDATA[
Enable the \c USE_MATHJAX option to render \f$\mbox{\LaTeX}\f$ formulas using MathJax
- (see http://www.mathjax.org) which uses client side Javascript for the
+ (see https://www.mathjax.org) which uses client side Javascript for the
rendering instead of using pre-rendered bitmaps. Use this if you do not
have \f$\mbox{\LaTeX}\f$ installed or if you want to formulas look prettier in the HTML
output. When enabled you may also need to install MathJax separately and
@@ -2327,7 +2341,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
\c MATHJAX_RELPATH should be <code>../mathjax</code>. The default value points to
the MathJax Content Delivery Network so you can quickly see the result without
installing MathJax. However, it is strongly recommended to install a local
- copy of MathJax from http://www.mathjax.org before deployment.
+ copy of MathJax from https://www.mathjax.org before deployment.
]]>
</docs>
</option>
@@ -2427,7 +2441,7 @@ See the section \ref extsearch for details.
the search results.
<br>Doxygen ships with an example indexer (\c doxyindexer) and
search engine (<code>doxysearch.cgi</code>) which are based on the open source search
- engine library <a href="http://xapian.org/">Xapian</a>.
+ engine library <a href="https://xapian.org/">Xapian</a>.
<br>See the section \ref extsearch for details.
]]>
</docs>
@@ -2440,7 +2454,7 @@ See the section \ref extsearch for details.
is enabled.
<br>Doxygen ships with an example indexer (\c doxyindexer) and
search engine (<code>doxysearch.cgi</code>) which are based on the open source search
- engine library <a href="http://xapian.org/">Xapian</a>.
+ engine library <a href="https://xapian.org/">Xapian</a>.
See the section \ref extsearch for details.
]]>
</docs>
@@ -2681,7 +2695,7 @@ or
<![CDATA[
The \c LATEX_BIB_STYLE tag can be used to specify the style to use for the
bibliography, e.g. \c plainnat, or \c ieeetr.
- See http://en.wikipedia.org/wiki/BibTeX and \ref cmdcite "\\cite"
+ See https://en.wikipedia.org/wiki/BibTeX and \ref cmdcite "\\cite"
for more info.
]]>
</docs>
@@ -2886,7 +2900,7 @@ front of it.
<docs>
<![CDATA[
If the \c GENERATE_AUTOGEN_DEF tag is set to \c YES, doxygen will
- generate an AutoGen Definitions (see http://autogen.sf.net) file
+ generate an AutoGen Definitions (see http://autogen.sourceforge.net/) file
that captures the structure of the code including all
documentation. Note that this feature is still experimental
and incomplete at the moment.
diff --git a/src/dirdef.cpp b/src/dirdef.cpp
index 0a63c1e..b247ba7 100644
--- a/src/dirdef.cpp
+++ b/src/dirdef.cpp
@@ -998,7 +998,13 @@ void generateDirDocs(OutputList &ol)
DirSDict::Iterator sdi(*Doxygen::directories);
for (sdi.toFirst();(dir=sdi.current());++sdi)
{
+ ol.pushGeneratorState();
+ if (!dir->hasDocumentation())
+ {
+ ol.disableAllBut(OutputGenerator::Html);
+ }
dir->writeDocumentation(ol);
+ ol.popGeneratorState();
}
if (Config_getBool(DIRECTORY_GRAPH))
{
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 2602f78..5bb28ea 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -543,7 +543,7 @@ static void detectNoDocumentedParams()
}
else if (!g_memberDef->hasDocumentedParams())
{
- bool allDoc=TRUE; // no paramater => all parameters are documented
+ bool allDoc=TRUE; // no parameter => all parameters are documented
if ( // member has parameters
al!=0 && // but the member has a parameter list
al->count()>0 // with at least one parameter (that is not void)
diff --git a/src/dot.cpp b/src/dot.cpp
index 4189748..627989f 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -2477,7 +2477,7 @@ void DotGfxHierarchyTable::addClassList(ClassSDict *cl)
}
}
-DotGfxHierarchyTable::DotGfxHierarchyTable() : m_curNodeNumber(0)
+DotGfxHierarchyTable::DotGfxHierarchyTable() : m_curNodeNumber(1)
{
m_rootNodes = new QList<DotNode>;
m_usedNodes = new QDict<DotNode>(1009);
diff --git a/src/index.cpp b/src/index.cpp
index 10c1dcb..9cd1600 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -4122,7 +4122,7 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
{
if (documentedNamespaces>0 && addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,0,0);
+ Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,lne->baseFile(),0);
Doxygen::indexList->incContentsDepth();
needsClosing=TRUE;
}
@@ -4151,7 +4151,7 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
case LayoutNavEntry::Classes:
if (annotatedClasses>0 && addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,"annotated",0);
+ Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,lne->baseFile(),0);
Doxygen::indexList->incContentsDepth();
needsClosing=TRUE;
}
@@ -4189,7 +4189,7 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList<LayoutNavEntry
{
if (documentedHtmlFiles>0 && addToIndex)
{
- Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,0,0);
+ Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,lne->baseFile(),0);
Doxygen::indexList->incContentsDepth();
needsClosing=TRUE;
}
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index 5349030..e19cead 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -426,6 +426,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
{
ol.endDoxyAnchor(md->getOutputFileBase(),md->anchor());
}
+ ol.endMemberItem();
if (!md->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
{
DocRoot *rootNode = validatingParseDoc(
@@ -452,7 +453,6 @@ void MemberList::writePlainDeclarations(OutputList &ol,
}
delete rootNode;
}
- ol.endMemberItem();
ol.endMemberDeclaration(md->anchor(),inheritId);
}
md->warnIfUndocumented();
diff --git a/src/parserintf.h b/src/parserintf.h
index cc95ea4..0942106 100644
--- a/src/parserintf.h
+++ b/src/parserintf.h
@@ -96,7 +96,7 @@ class ParserInterface
* is associated (non null in case of an inline fragment
* for a member).
* @param[in] showLineNumbers if set to TRUE and also fileDef is not 0,
- * line numbers will be added to the source fragement
+ * line numbers will be added to the source fragment
* @param[in] searchCtx context under which search data has to be stored.
* @param[in] collectXRefs collect cross-reference relations.
*/
diff --git a/src/portable.cpp b/src/portable.cpp
index 1983fe7..4ad88a4 100644
--- a/src/portable.cpp
+++ b/src/portable.cpp
@@ -180,6 +180,7 @@ int portable_system(const char *command,const char *args,bool commandHasConsole)
}
}
#endif
+ return 1; // we should never get here
}
diff --git a/src/translator_am.h b/src/translator_am.h
index 9e72529..6f5e671 100644
--- a/src/translator_am.h
+++ b/src/translator_am.h
@@ -80,26 +80,26 @@ class TranslatorArmenian : public TranslatorAdapter_1_8_0
{ return "Մանրամասն..."; }
/*! put in the class documentation */
- /* Dosn't use when optimization for C is on. */
+ /* Isn't used when optimization for C is on. */
virtual QCString trListOfAllMembers()
{
return "Բոլոր անդամների ցուցակը";
}
/*! used as the title of the "list of all members" page of a class */
- /* Dosn't use when optimization for C is on. */
+ /* Isn't used when optimization for C is on. */
virtual QCString trMemberList()
{
return "Անդամների ցուցակ";
}
/*! this is the first part of a sentence that is followed by a class name */
- /* Dosn't use when optimization for C is on. */
+ /* Isn't used when optimization for C is on. */
virtual QCString trThisIsTheListOfAllMembers()
{ return "Սա դասի անդամների ամբողջական ցուցակն է "; }
/*! this is the remainder of the sentence after the class name */
- /* Dosn't use when optimization for C is on. */
+ /* Isn't used when optimization for C is on. */
virtual QCString trIncludingInheritedMembers()
{ return ", ներառյալ բոլոր ժառանգված անդամները"; }
diff --git a/src/translator_ru.h b/src/translator_ru.h
index dbc734c..54c0202 100644
--- a/src/translator_ru.h
+++ b/src/translator_ru.h
@@ -83,26 +83,26 @@ class TranslatorRussian : public Translator
{ return "Подробнее..."; }
/*! put in the class documentation */
- /* Dosn't use when optimization for C is on. */
+ /* Isn't used when optimization for C is on. */
virtual QCString trListOfAllMembers()
{
return "Полный список членов класса";
}
/*! used as the title of the "list of all members" page of a class */
- /* Dosn't use when optimization for C is on. */
+ /* Isn't used when optimization for C is on. */
virtual QCString trMemberList()
{
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. */
+ /* Isn't used when optimization for C is on. */
virtual QCString trThisIsTheListOfAllMembers()
{ return "Полный список членов класса "; }
/*! this is the remainder of the sentence after the class name */
- /* Dosn't use when optimization for C is on. */
+ /* Isn't used when optimization for C is on. */
virtual QCString trIncludingInheritedMembers()
{ return ", включая наследуемые из базового класса"; }
diff --git a/src/translator_ua.h b/src/translator_ua.h
index eac14aa..034cb1b 100644
--- a/src/translator_ua.h
+++ b/src/translator_ua.h
@@ -76,26 +76,26 @@ class TranslatorUkrainian : public TranslatorAdapter_1_8_4
{ return "Детальніше..."; }
/*! put in the class documentation */
- /* Dosn't use when optimization for C is on. */
+ /* Isn't used when optimization for C is on. */
virtual QCString trListOfAllMembers()
{
return "Список всіх елементів" ;
}
/*! used as the title of the "list of all members" page of a class */
- /* Dosn't use when optimization for C is on. */
+ /* Isn't used when optimization for C is on. */
virtual QCString trMemberList()
{
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. */
+ /* Isn't used when optimization for C is on. */
virtual QCString trThisIsTheListOfAllMembers()
{ return "Повний список елементів"; }
/*! this is the remainder of the sentence after the class name */
- /* Dosn't use when optimization for C is on. */
+ /* Isn't used when optimization for C is on. */
virtual QCString trIncludingInheritedMembers()
{ return ", включаючи всі успадковані елементи"; }