diff --git a/src/qdoc/cppcodeparser.cpp b/src/qdoc/cppcodeparser.cpp index c1295c3a706910f0b8b5a36d90b38bfc9370b16d..61fb9b7d778c9c3191cdacf2c11ad3c1d862eeb4 100644 --- a/src/qdoc/cppcodeparser.cpp +++ b/src/qdoc/cppcodeparser.cpp @@ -54,6 +54,8 @@ static bool inMacroCommand_ = false; static bool parsingHeaderFile_ = false; QStringList CppCodeParser::exampleFiles; QStringList CppCodeParser::exampleDirs; +QSet<QString> CppCodeParser::excludeDirs; +QSet<QString> CppCodeParser::excludeFiles; CppCodeParser* CppCodeParser::cppParser_ = 0; /*! @@ -78,7 +80,7 @@ CppCodeParser::~CppCodeParser() /*! The constructor initializes a map of special node types for identifying important nodes. And it initializes - some filters for identifying certain kinds of files. + some filters for identifying and excluding certain kinds of files. */ void CppCodeParser::initializeParser(const Config &config) { @@ -100,6 +102,10 @@ void CppCodeParser::initializeParser(const Config &config) QStringList exampleFilePatterns = config.getStringList( CONFIG_EXAMPLES + Config::dot + CONFIG_FILEEXTENSIONS); + // Used for excluding dirs and files from the list of example files + excludeDirs = QSet<QString>::fromList(config.getCanonicalPathList(CONFIG_EXCLUDEDIRS)); + excludeFiles = QSet<QString>::fromList(config.getCanonicalPathList(CONFIG_EXCLUDEFILES)); + if (!exampleFilePatterns.isEmpty()) exampleNameFilter = exampleFilePatterns.join(' '); else @@ -121,6 +127,8 @@ void CppCodeParser::initializeParser(const Config &config) void CppCodeParser::terminateParser() { nodeTypeMap.clear(); + excludeDirs.clear(); + excludeFiles.clear(); CodeParser::terminateParser(); } @@ -2643,9 +2651,9 @@ void CppCodeParser::createExampleFileNodes(DocumentNode *dn) sizeOfBoringPartOfName = sizeOfBoringPartOfName - 2; fullPath.truncate(fullPath.lastIndexOf('/')); - QStringList exampleFiles = Config::getFilesHere(fullPath,exampleNameFilter); + QStringList exampleFiles = Config::getFilesHere(fullPath, exampleNameFilter, Location(), excludeDirs, excludeFiles); QString imagesPath = fullPath + "/images"; - QStringList imageFiles = Config::getFilesHere(imagesPath,exampleImageFilter); + QStringList imageFiles = Config::getFilesHere(imagesPath, exampleImageFilter, Location(), excludeDirs, excludeFiles); if (!exampleFiles.isEmpty()) { // move main.cpp and to the end, if it exists QString mainCpp; diff --git a/src/qdoc/cppcodeparser.h b/src/qdoc/cppcodeparser.h index d3a5829e374df6035a9cbcb041dd394f7f568675..3910807abc3347463bd01311fa35ecb8adb7c155 100644 --- a/src/qdoc/cppcodeparser.h +++ b/src/qdoc/cppcodeparser.h @@ -179,6 +179,8 @@ protected: static QStringList exampleFiles; static QStringList exampleDirs; + static QSet<QString> excludeDirs; + static QSet<QString> excludeFiles; static CppCodeParser* cppParser_; QString exampleNameFilter; QString exampleImageFilter; diff --git a/src/qdoc/main.cpp b/src/qdoc/main.cpp index 500a085ccb22a466122efa4b8b2cd809fe9adcac..990207204460a1f294bcaf72d9fac4079a732776 100644 --- a/src/qdoc/main.cpp +++ b/src/qdoc/main.cpp @@ -365,31 +365,26 @@ static void processQdocconfFile(const QString &fileName) + Config::dot + CONFIG_LANDINGPAGE)); - QSet<QString> excludedDirs; - QSet<QString> excludedFiles; - QStringList excludedDirsList; - QStringList excludedFilesList; + QSet<QString> excludedDirs = QSet<QString>::fromList(config.getCanonicalPathList(CONFIG_EXCLUDEDIRS)); + QSet<QString> excludedFiles = QSet<QString>::fromList(config.getCanonicalPathList(CONFIG_EXCLUDEFILES)); + + Generator::debug("Adding doc/image dirs found in exampledirs to imagedirs"); + QSet<QString> exampleImageDirs; + QStringList exampleImageList = config.getExampleImageFiles(excludedDirs, excludedFiles); + for (int i = 0; i < exampleImageList.size(); ++i) { + if (exampleImageList[i].contains("doc/images")) { + QString t = exampleImageList[i].left(exampleImageList[i].lastIndexOf("doc/images") + 10); + if (!exampleImageDirs.contains(t)) { + exampleImageDirs.insert(t); + } + } + } + Generator::augmentImageDirs(exampleImageDirs); if (!Generator::singleExec() || !Generator::generating()) { QStringList headerList; QStringList sourceList; - Generator::debug("Reading excludedirs"); - excludedDirsList = config.getCanonicalPathList(CONFIG_EXCLUDEDIRS); - foreach (const QString &excludeDir, excludedDirsList) { - QString p = QDir::fromNativeSeparators(excludeDir); - QDir tmp(p); - if (tmp.exists()) - excludedDirs.insert(p); - } - - Generator::debug("Reading excludefiles"); - excludedFilesList = config.getCanonicalPathList(CONFIG_EXCLUDEFILES); - foreach (const QString& excludeFile, excludedFilesList) { - QString p = QDir::fromNativeSeparators(excludeFile); - excludedFiles.insert(p); - } - Generator::debug("Reading headerdirs"); headerList = config.getAllFiles(CONFIG_HEADERS,CONFIG_HEADERDIRS,excludedDirs,excludedFiles); QMap<QString,QString> headers; @@ -430,20 +425,6 @@ static void processQdocconfFile(const QString &fileName) sourceFileNames.insert(t,t); } } - - Generator::debug("Adding doc/image dirs found in exampledirs to imagedirs"); - QSet<QString> exampleImageDirs; - QStringList exampleImageList = config.getExampleImageFiles(excludedDirs, excludedFiles); - for (int i=0; i<exampleImageList.size(); ++i) { - if (exampleImageList[i].contains("doc/images")) { - QString t = exampleImageList[i].left(exampleImageList[i].lastIndexOf("doc/images")+10); - if (!exampleImageDirs.contains(t)) { - exampleImageDirs.insert(t); - } - } - } - Generator::augmentImageDirs(exampleImageDirs); - /* Parse each header file in the set using the appropriate parser and add it to the big tree. @@ -504,34 +485,6 @@ static void processQdocconfFile(const QString &fileName) qdb->resolveIssues(); } else { - Generator::debug("Reading excludedirs"); - excludedDirsList = config.getCanonicalPathList(CONFIG_EXCLUDEDIRS); - foreach (const QString &excludeDir, excludedDirsList) { - QString p = QDir::fromNativeSeparators(excludeDir); - QDir tmp(p); - if (tmp.exists()) - excludedDirs.insert(p); - } - - Generator::debug("Reading excludefiles"); - excludedFilesList = config.getCanonicalPathList(CONFIG_EXCLUDEFILES); - foreach (const QString& excludeFile, excludedFilesList) { - QString p = QDir::fromNativeSeparators(excludeFile); - excludedFiles.insert(p); - } - - Generator::debug("Adding doc/image dirs found in exampledirs to imagedirs"); - QSet<QString> exampleImageDirs; - QStringList exampleImageList = config.getExampleImageFiles(excludedDirs, excludedFiles); - for (int i=0; i<exampleImageList.size(); ++i) { - if (exampleImageList[i].contains("doc/images")) { - QString t = exampleImageList[i].left(exampleImageList[i].lastIndexOf("doc/images")+10); - if (!exampleImageDirs.contains(t)) { - exampleImageDirs.insert(t); - } - } - } - Generator::augmentImageDirs(exampleImageDirs); qdb->resolveStuff(); }