diff options
Diffstat (limited to 'src/tools/qdoc/config.cpp')
-rw-r--r-- | src/tools/qdoc/config.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/tools/qdoc/config.cpp b/src/tools/qdoc/config.cpp index 8729bf387f..48be30c24e 100644 --- a/src/tools/qdoc/config.cpp +++ b/src/tools/qdoc/config.cpp @@ -181,6 +181,7 @@ QSet<QString> Config::overrideOutputFormats; QMap<QString, QString> Config::extractedDirs; int Config::numInstances; QStack<QString> Config::workingDirs_; +QMap<QString, QStringList> Config::includeFilesMap_; /*! \class Config @@ -201,6 +202,7 @@ Config::Config(const QString& programName) lastLocation_ = Location::null; configVars_.clear(); numInstances++; + includeFilesMap_.clear(); } /*! @@ -208,6 +210,7 @@ Config::Config(const QString& programName) */ Config::~Config() { + includeFilesMap_.clear(); } /*! @@ -589,6 +592,33 @@ void Config::subVarsAndValues(const QString& var, ConfigVarMultimap& t) const } /*! + Get all .qdocinc files. + */ +QString Config::getIncludeFilePath(const QString& fileName) const +{ + QString ext = fileName.mid(fileName.lastIndexOf('.')); + ext.prepend('*'); + + if (!includeFilesMap_.contains(ext)) { + QSet<QString> t; + QStringList result; + QStringList dirs = getCanonicalPathList(CONFIG_SOURCEDIRS); + QStringList::ConstIterator d = dirs.constBegin(); + while (d != dirs.constEnd()) { + result += getFilesHere(*d, ext, location(), t, t); + ++d; + } + includeFilesMap_.insert(ext, result); + } + const QStringList& paths = (*includeFilesMap_.find(ext)); + for (int i=0; i<paths.size(); ++i) { + if (paths[i].endsWith(fileName)) + return paths[i]; + } + return QString(); +} + +/*! Builds and returns a list of file pathnames for the file type specified by \a filesVar (e.g. "headers" or "sources"). The files are found in the directories specified by |