From: Francesco Chemolli Date: Tue, 17 Dec 2013 10:19:44 +0000 (+0100) Subject: Move CharacterSet::operator += to .cc file; change SBuf::find_first_not_of to match STL X-Git-Tag: SQUID_3_5_0_1~456^2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c8046ec713e931c9fa02c076a4154d3c77ad94a7;p=thirdparty%2Fsquid.git Move CharacterSet::operator += to .cc file; change SBuf::find_first_not_of to match STL --- diff --git a/src/SBuf.cc b/src/SBuf.cc index 819a4d54de..fe50f266f1 100644 --- a/src/SBuf.cc +++ b/src/SBuf.cc @@ -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; } /* diff --git a/src/SBuf.h b/src/SBuf.h index 49e480222f..b47f68da79 100644 --- a/src/SBuf.h +++ b/src/SBuf.h @@ -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 index 0000000000..9bd98ac0c8 --- /dev/null +++ b/src/base/CharacterSet.cc @@ -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; +} diff --git a/src/base/CharacterSet.h b/src/base/CharacterSet.h index 49f767ef7c..4938ccfa1a 100644 --- a/src/base/CharacterSet.h +++ b/src/base/CharacterSet.h @@ -24,19 +24,7 @@ public: CharacterSet & add(const unsigned char c) {chars_[static_cast(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; diff --git a/src/base/Makefile.am b/src/base/Makefile.am index b99beaebc9..95c9f0d6f1 100644 --- a/src/base/Makefile.am +++ b/src/base/Makefile.am @@ -13,6 +13,7 @@ libbase_la_SOURCES = \ AsyncCallQueue.cc \ AsyncCallQueue.h \ CharacterSet.h \ + CharacterSet.cc \ TidyPointer.h \ CbcPointer.h \ InstanceId.h \ diff --git a/src/tests/testSBuf.cc b/src/tests/testSBuf.cc index 32b4d8eada..6aecb73449 100644 --- a/src/tests/testSBuf.cc +++ b/src/tests/testSBuf.cc @@ -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"));