[clang-tools-extra] r235192 - [clang-tidy] Remove static StringSet in favor of binary search.
Benjamin Kramer
benny.kra at googlemail.com
Fri Apr 17 06:52:08 PDT 2015
Author: d0k
Date: Fri Apr 17 08:52:08 2015
New Revision: 235192
URL: http://llvm.org/viewvc/llvm-project?rev=235192&view=rev
Log:
[clang-tidy] Remove static StringSet in favor of binary search.
The number of strings is so small that performance doesn't matter and adding
the thread safe static initialization and destruction overhead is just not
worth it. No functional change intended.
Modified:
clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp
Modified: clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp?rev=235192&r1=235191&r2=235192&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp Fri Apr 17 08:52:08 2015
@@ -11,35 +11,31 @@
#include "clang/ASTMatchers/ASTMatchers.h"
#include "clang/Lex/Lexer.h"
#include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/StringSet.h"
using namespace clang::ast_matchers;
-namespace {
-bool isContainer(llvm::StringRef ClassName) {
- static const llvm::StringSet<> ContainerNames = [] {
- llvm::StringSet<> RetVal;
- RetVal.insert("std::vector");
- RetVal.insert("std::list");
- RetVal.insert("std::array");
- RetVal.insert("std::deque");
- RetVal.insert("std::forward_list");
- RetVal.insert("std::set");
- RetVal.insert("std::map");
- RetVal.insert("std::multiset");
- RetVal.insert("std::multimap");
- RetVal.insert("std::unordered_set");
- RetVal.insert("std::unordered_map");
- RetVal.insert("std::unordered_multiset");
- RetVal.insert("std::unordered_multimap");
- RetVal.insert("std::stack");
- RetVal.insert("std::queue");
- RetVal.insert("std::priority_queue");
- return RetVal;
- }();
- return ContainerNames.find(ClassName) != ContainerNames.end();
+static bool isContainer(llvm::StringRef ClassName) {
+ static const char *ContainerNames[] = {
+ "std::array",
+ "std::deque",
+ "std::forward_list",
+ "std::list",
+ "std::map",
+ "std::multimap",
+ "std::multiset",
+ "std::priority_queue",
+ "std::queue",
+ "std::set",
+ "std::stack",
+ "std::unordered_map",
+ "std::unordered_multimap",
+ "std::unordered_multiset",
+ "std::unordered_set",
+ "std::vector"
+ };
+ return std::binary_search(std::begin(ContainerNames),
+ std::end(ContainerNames), ClassName);
}
-} // namespace
namespace clang {
namespace ast_matchers {
Modified: clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp?rev=235192&r1=235191&r2=235192&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp Fri Apr 17 08:52:08 2015
@@ -12,22 +12,18 @@
#include "clang/ASTMatchers/ASTMatchFinder.h"
#include "clang/Lex/Lexer.h"
#include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/StringSet.h"
using namespace clang::ast_matchers;
-namespace {
-bool isShrinkableContainer(llvm::StringRef ClassName) {
- static const llvm::StringSet<> Shrinkables = [] {
- llvm::StringSet<> RetVal;
- RetVal.insert("std::deque");
- RetVal.insert("std::basic_string");
- RetVal.insert("std::vector");
- return RetVal;
- }();
- return Shrinkables.find(ClassName) != Shrinkables.end();
+static bool isShrinkableContainer(llvm::StringRef ClassName) {
+ static const char *Shrinkables[] = {
+ "std::basic_string",
+ "std::deque",
+ "std::vector"
+ };
+ return std::binary_search(std::begin(Shrinkables), std::end(Shrinkables),
+ ClassName);
}
-} // namespace
namespace clang {
namespace ast_matchers {
More information about the cfe-commits
mailing list