diff options
author | Brad King <brad.king@kitware.com> | 2017-08-30 14:43:25 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2017-08-30 14:43:30 (GMT) |
commit | 34601c3ea0b2839939b5bc8535082a15583f766e (patch) | |
tree | c891564bd409a69c14c807661037f9bf127e14f3 /Source | |
parent | 0ea6aee8905af1a8d3ee4d7af88c4b3a40aafe10 (diff) | |
parent | 053d314140e76a632e2b8a2b134afdb8697fba56 (diff) | |
download | CMake-34601c3ea0b2839939b5bc8535082a15583f766e.zip CMake-34601c3ea0b2839939b5bc8535082a15583f766e.tar.gz CMake-34601c3ea0b2839939b5bc8535082a15583f766e.tar.bz2 |
Merge topic 'codeblocks-dedup'
053d3141 CodeBlocks: Avoid listing files multiple times
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1160
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmExtraCodeBlocksGenerator.cxx | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index 2054605..547fc99 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -4,6 +4,7 @@ #include <map> #include <ostream> +#include <set> #include <string.h> #include <utility> @@ -95,7 +96,7 @@ struct Tree { std::string path; // only one component of the path std::vector<Tree> folders; - std::vector<std::string> files; + std::set<std::string> files; void InsertPath(const std::vector<std::string>& splitted, std::vector<std::string>::size_type start, const std::string& fileName); @@ -112,7 +113,7 @@ void Tree::InsertPath(const std::vector<std::string>& splitted, const std::string& fileName) { if (start == splitted.size()) { - files.push_back(fileName); + files.insert(fileName); return; } for (std::vector<Tree>::iterator it = folders.begin(); it != folders.end(); @@ -123,7 +124,7 @@ void Tree::InsertPath(const std::vector<std::string>& splitted, return; } // last part of splitted - it->files.push_back(fileName); + it->files.insert(fileName); return; } } @@ -136,7 +137,7 @@ void Tree::InsertPath(const std::vector<std::string>& splitted, return; } // last part of splitted - newFolder.files.push_back(fileName); + newFolder.files.insert(fileName); folders.push_back(newFolder); } @@ -164,7 +165,7 @@ void Tree::BuildVirtualFolderImpl(std::string& virtualFolders, void Tree::BuildUnit(cmXMLWriter& xml, const std::string& fsPath) const { - for (std::vector<std::string>::const_iterator it = files.begin(); + for (std::set<std::string>::const_iterator it = files.begin(); it != files.end(); ++it) { xml.StartElement("Unit"); xml.Attribute("filename", fsPath + *it); @@ -185,7 +186,7 @@ void Tree::BuildUnitImpl(cmXMLWriter& xml, const std::string& virtualFolderPath, const std::string& fsPath) const { - for (std::vector<std::string>::const_iterator it = files.begin(); + for (std::set<std::string>::const_iterator it = files.begin(); it != files.end(); ++it) { xml.StartElement("Unit"); xml.Attribute("filename", fsPath + path + "/" + *it); |