]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/string_view.h
Store tags in the cache (they are very useful :/).
[apt.git] / apt-pkg / contrib / string_view.h
index d4ff800286ad7e9f69b18c75db6a4a4aee214b3b..c504edd27717178920875a34c421399d03601d6c 100644 (file)
@@ -13,6 +13,7 @@
 #define APT_STRINGVIEW_H
 #include <string.h>
 #include <string>
+#include <apt-pkg/macros.h>
 
 namespace APT {
 
@@ -23,7 +24,7 @@ namespace APT {
  * used by APT. It is not meant to be used in programs, only inside the
  * library for performance critical paths.
  */
-class StringView {
+class APT_HIDDEN StringView {
     const char *data_;
     size_t size_;
 
@@ -111,6 +112,17 @@ public:
     constexpr size_t length() const { return size_; }
 };
 
+/**
+ * \brief Faster comparison for string views (compare size before data)
+ *
+ * Still stable, but faster than the normal ordering. */
+static inline int StringViewCompareFast(StringView a, StringView b) {
+    if (a.size() != b.size())
+        return a.size() - b.size();
+
+    return memcmp(a.data(), b.data(), a.size());
+}
+
 
 }