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 {


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to