]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Move CharacterSet::operator += to .cc file; change SBuf::find_first_not_of to match STL
authorFrancesco Chemolli <kinkie@squid-cache.org>
Tue, 17 Dec 2013 10:19:44 +0000 (11:19 +0100)
committerFrancesco Chemolli <kinkie@squid-cache.org>
Tue, 17 Dec 2013 10:19:44 +0000 (11:19 +0100)
src/SBuf.cc
src/SBuf.h
src/base/CharacterSet.cc [new file with mode: 0644]
src/base/CharacterSet.h
src/base/Makefile.am
src/tests/testSBuf.cc

index 819a4d54de5b96b5b9f901a382fe553a86cb3414..fe50f266f166cf83927988749d4a0e09a2f2e7ea 100644 (file)
@@ -731,7 +731,7 @@ SBuf::find_first_not_of(const CharacterSet &set, size_type startPos) const
         ++cur;
     }
     debugs(24, 7, "not found");
-    return length();
+    return npos;
 }
 
 /*
index 49e480222fbdc272bb88caead260639f49490d75..b47f68da79352a2394e21ab6fa7e85ac15c35311 100644 (file)
@@ -514,14 +514,18 @@ public:
      * \return npos if no character in the set could be found
      * \param startPos if specified, ignore any occurrences before that position
      *   if npos, then npos is always returned
+     *
+     * TODO: rename to camelCase
      */
     size_type find_first_of(const CharacterSet &set, size_type startPos = 0) const;
 
     /** Find first occurrence character NOT in character set
      *
-     * \return length() if all characters in the SBuf are from set
+     * \return npos if all characters in the SBuf are from set
      * \param startPos if specified, ignore any occurrences before that position
      *   if npos, then npos is always returned
+     *
+     * TODO: rename to camelCase
      */
     size_type find_first_not_of(const CharacterSet &set, size_type startPos = 0) const;
 
diff --git a/src/base/CharacterSet.cc b/src/base/CharacterSet.cc
new file mode 100644 (file)
index 0000000..9bd98ac
--- /dev/null
@@ -0,0 +1,21 @@
+#include "squid.h"
+
+#include "CharacterSet.h"
+
+const CharacterSet &
+CharacterSet::operator +=(const CharacterSet &src)
+{
+    if (src.chars_.size() > chars_.size())
+        chars_.reserve(src.chars_.size());
+
+    vector_type::const_iterator s = src.chars_.begin();
+    const vector_type::const_iterator e = src.chars_.end();
+    vector_type::iterator d = chars_.begin();
+    while (s != e) {
+        if (*s)
+            *d = true;
+        ++s;
+        ++d;
+    }
+    return *this;
+}
index 49f767ef7c489eecad91502af23ad629c03b5743..4938ccfa1ae1d2d85a063926d3b8812dbbbaab67 100644 (file)
@@ -24,19 +24,7 @@ public:
     CharacterSet & add(const unsigned char c) {chars_[static_cast<uint8_t>(c)] = true; return *this; }
 
     /// add all characters from the given CharacterSet to this one
-    const CharacterSet &operator +=(const CharacterSet &src) {
-        //precondition: src.chars_.size() == chars_.size()
-        vector_type::const_iterator s = src.chars_.begin();
-        const vector_type::const_iterator e = src.chars_.end();
-        vector_type::iterator d = chars_.begin();
-        while (s != e) {
-            if (*s)
-                *d = true;
-            ++s;
-            ++d;
-        }
-        return *this;
-    }
+    const CharacterSet &operator +=(const CharacterSet &src);
 
     /// optional set label fdebugging (default: "anonymous")
     const char * name;
index b99beaebc9579533f4fe10fd625f4474461337f7..95c9f0d6f1e61b85839c69dade7c387de73b5341 100644 (file)
@@ -13,6 +13,7 @@ libbase_la_SOURCES = \
        AsyncCallQueue.cc \
        AsyncCallQueue.h \
        CharacterSet.h \
+       CharacterSet.cc \
        TidyPointer.h \
        CbcPointer.h \
        InstanceId.h \
index 32b4d8eadae6babef638b800a5f4be692a13539c..6aecb73449602ab9da6f302785472891b08d24ef 100644 (file)
@@ -784,7 +784,7 @@ testSBuf::testFindFirstNotOf()
 
     // all chars from the set
     idx=haystack.find_first_not_of(CharacterSet("t1",literal.c_str()));
-    CPPUNIT_ASSERT_EQUAL(haystack.length(),idx);
+    CPPUNIT_ASSERT_EQUAL(SBuf::npos,idx);
 
     // found at beginning
     idx=haystack.find_first_not_of(CharacterSet("t2","a"));