summaryrefslogtreecommitdiffstats
path: root/src/util.cpp
diff options
context:
space:
mode:
authordimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2010-02-08 20:59:33 (GMT)
committerdimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2010-02-08 20:59:33 (GMT)
commitd5dec476be2805b7b82893dcb5c147473b6740c4 (patch)
tree267387c59c5c0c6c4623d616f7102d54600dfba9 /src/util.cpp
parentb3ff521abec20509a917158bee82fff6d0931447 (diff)
downloadDoxygen-d5dec476be2805b7b82893dcb5c147473b6740c4.zip
Doxygen-d5dec476be2805b7b82893dcb5c147473b6740c4.tar.gz
Doxygen-d5dec476be2805b7b82893dcb5c147473b6740c4.tar.bz2
Release-1.6.2-20100208
Diffstat (limited to 'src/util.cpp')
-rw-r--r--src/util.cpp80
1 files changed, 48 insertions, 32 deletions
diff --git a/src/util.cpp b/src/util.cpp
index 7765805..0f7c17d 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -2076,6 +2076,7 @@ QCString getFileFilter(const char* name)
return "";
}
+#if 0
QCString recodeString(const QCString &str,const char *fromEncoding,const char *toEncoding)
{
QCString inputEncoding = fromEncoding;
@@ -2112,6 +2113,7 @@ QCString recodeString(const QCString &str,const char *fromEncoding,const char *t
portable_iconv_close(cd);
return output;
}
+#endif
QCString transcodeCharacterStringToUTF8(const QCString &input)
@@ -4749,7 +4751,7 @@ bool hasVisibleRoot(BaseClassList *bcl)
//----------------------------------------------------------------------
-QCString escapeCharsInString(const char *name,bool allowDots)
+QCString escapeCharsInString(const char *name,bool allowDots,bool allowUnderscore)
{
static bool caseSenseNames = Config_getBool("CASE_SENSE_NAMES");
QCString result;
@@ -4759,7 +4761,7 @@ QCString escapeCharsInString(const char *name,bool allowDots)
{
switch(c)
{
- case '_': result+="__"; break;
+ case '_': if (allowUnderscore) result+="_"; else result+="__"; break;
case '-': result+="-"; break;
case ':': result+="_1"; break;
case '/': result+="_2"; break;
@@ -4813,7 +4815,7 @@ QCString escapeCharsInString(const char *name,bool allowDots)
* given its name, which could be a class name with template
* arguments, so special characters need to be escaped.
*/
-QCString convertNameToFile(const char *name,bool allowDots)
+QCString convertNameToFile(const char *name,bool allowDots,bool allowUnderscore)
{
static bool shortNames = Config_getBool("SHORT_NAMES");
static bool createSubdirs = Config_getBool("CREATE_SUBDIRS");
@@ -4839,7 +4841,7 @@ QCString convertNameToFile(const char *name,bool allowDots)
}
else // long names
{
- result=escapeCharsInString(name,allowDots);
+ result=escapeCharsInString(name,allowDots,allowUnderscore);
int resultLen = result.length();
if (resultLen>=128) // prevent names that cannot be created!
{
@@ -5787,7 +5789,7 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle,
pd->setReference(tagInfo->tagName);
}
- pd->setFileName(convertNameToFile(pd->name()));
+ pd->setFileName(convertNameToFile(pd->name(),TRUE,FALSE));
//printf("Appending page `%s'\n",baseName.data());
Doxygen::pageSDict->append(baseName,pd);
@@ -5856,28 +5858,6 @@ void addRefItem(const QList<ListItemInfo> *sli,
refList->insertIntoList(key,item);
-#if 0
-
- //printf("anchor=%s written=%d\n",item->listAnchor.data(),item->written);
- //if (item->written) return;
-
- QCString doc;
- doc = "\\anchor ";
- doc += item->listAnchor;
- doc += " <dl><dt>";
- doc += prefix;
- doc += " \\_internalref ";
- doc += name;
- doc += " \"";
- doc += title;
- doc += "\"";
- if (args) doc += args;
- doc += "</dt>\n<dd>";
- doc += item->text;
- doc += "</dd></dl>\n";
- addRelatedPage(refList->listName(),refList->pageTitle(),doc,0,refList->listName(),1,0,0,0);
- //item->written=TRUE;
-#endif
}
}
}
@@ -6843,7 +6823,7 @@ void stackTrace()
#endif
}
-static int transcodeCharacterBuffer(BufStr &srcBuf,int size,
+static int transcodeCharacterBuffer(const char *fileName,BufStr &srcBuf,int size,
const char *inputEncoding,const char *outputEncoding)
{
if (inputEncoding==0 || outputEncoding==0) return size;
@@ -6872,8 +6852,8 @@ static int transcodeCharacterBuffer(BufStr &srcBuf,int size,
}
else
{
- err("Error: failed to translate characters from %s to %s: check INPUT_ENCODING\n",
- inputEncoding,outputEncoding);
+ err("%s: Error: failed to translate characters from %s to %s: check INPUT_ENCODING\n",
+ fileName,inputEncoding,outputEncoding);
exit(1);
}
portable_iconv_close(cd);
@@ -6936,7 +6916,7 @@ bool readInputFile(const char *fileName,BufStr &inBuf)
)
) // UCS-2 encoded file
{
- transcodeCharacterBuffer(inBuf,inBuf.curPos(),
+ transcodeCharacterBuffer(fileName,inBuf,inBuf.curPos(),
"UCS-2","UTF-8");
}
else if (inBuf.size()>=3 &&
@@ -6951,7 +6931,7 @@ bool readInputFile(const char *fileName,BufStr &inBuf)
else // transcode according to the INPUT_ENCODING setting
{
// do character transcoding if needed.
- transcodeCharacterBuffer(inBuf,inBuf.curPos(),
+ transcodeCharacterBuffer(fileName,inBuf,inBuf.curPos(),
Config_getString("INPUT_ENCODING"),"UTF-8");
}
@@ -6986,3 +6966,39 @@ QCString filterTitle(const QCString &title)
return tf;
}
+//----------------------------------------------------------------------------
+// returns TRUE if the name of the file represented by `fi' matches
+// one of the file patterns in the `patList' list.
+
+bool patternMatch(const QFileInfo &fi,const QStrList *patList)
+{
+ bool found=FALSE;
+ if (patList)
+ {
+ QStrListIterator it(*patList);
+ QCString pattern;
+ for (it.toFirst();(pattern=it.current());++it)
+ {
+ if (!pattern.isEmpty() && !found)
+ {
+ int i=pattern.find('=');
+ if (i!=-1) pattern=pattern.left(i); // strip of the extension specific filter name
+
+#if defined(_WIN32) || defined(__MACOSX__) // Windows or MacOSX
+ QRegExp re(pattern,FALSE,TRUE); // case insensitive match
+#else // unix
+ QRegExp re(pattern,TRUE,TRUE); // case sensitive match
+#endif
+ found = found || re.match(fi.fileName())!=-1 ||
+ re.match(fi.filePath())!=-1 ||
+ re.match(fi.absFilePath())!=-1;
+ //printf("Matching `%s' against pattern `%s' found=%d\n",
+ // fi->fileName().data(),pattern.data(),found);
+ }
+ }
+ }
+ return found;
+}
+
+
+