diff options
author | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2010-09-20 18:19:55 (GMT) |
---|---|---|
committer | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2010-09-20 18:19:55 (GMT) |
commit | a80f9320bf9fdd879869cee2cea1ec3f9af822f8 (patch) | |
tree | c3964e8a42bc4dfecf5a99d6de94650878e67a0f /src/definition.cpp | |
parent | ce8facca2c23f4656747ad3a5b4a8db475855e27 (diff) | |
download | Doxygen-a80f9320bf9fdd879869cee2cea1ec3f9af822f8.zip Doxygen-a80f9320bf9fdd879869cee2cea1ec3f9af822f8.tar.gz Doxygen-a80f9320bf9fdd879869cee2cea1ec3f9af822f8.tar.bz2 |
Release-1.7.1-20100920
Diffstat (limited to 'src/definition.cpp')
-rw-r--r-- | src/definition.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/definition.cpp b/src/definition.cpp index 6fe8b4e..6cec012 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -252,7 +252,6 @@ void Definition::removeFromMap(Definition *d) DefinitionIntf *di=Doxygen::symbolMap->find(symbolName); if (di) { - ASSERT(di!=0); if (di!=d) // symbolName not unique { //printf(" removing from list: %p!\n",di); @@ -435,6 +434,18 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine, #define uni_isupper(c) (QChar(c).category()==QChar::Letter_Uppercase) +// do a UTF-8 aware search for the last real character and return TRUE +// if that is a multibyte one. +static bool lastCharIsMultibyte(const QCString &s) +{ + int l = s.length(); + int p = 0; + int pp = -1; + while ((p=nextUtf8CharPosition(s,l,p))<l) pp=p; + if (pp==-1 || ((uchar)s[pp])<0x80) return FALSE; + return TRUE; +} + void Definition::_setBriefDescription(const char *b,const char *briefFile,int briefLine) { static QCString outputLanguage = Config_getEnum("OUTPUT_LANGUAGE"); @@ -447,11 +458,12 @@ void Definition::_setBriefDescription(const char *b,const char *briefFile,int br int bl = brief.length(); if (bl>0 && needsDot) // add punctuation if needed { - switch(brief.at(bl-1)) + int c = brief.at(bl-1); + switch(c) { - case '.': case '!': case '?': case '>': case ':': break; + case '.': case '!': case '?': case '>': case ':': case ')': break; default: - if (uni_isupper(brief.at(0))) brief+='.'; + if (uni_isupper(brief.at(0)) && !lastCharIsMultibyte(brief)) brief+='.'; break; } } |