From: Francesco Chemolli Date: Tue, 17 Dec 2013 15:58:52 +0000 (+0100) Subject: Clarified documentatio for CharacterSet; moved CharacterSet::add and constructor... X-Git-Tag: SQUID_3_5_0_1~456^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dcd4fdac5796bfb14e8ab258779faf202e0a76f3;p=thirdparty%2Fsquid.git Clarified documentatio for CharacterSet; moved CharacterSet::add and constructor to .cc file --- diff --git a/src/base/CharacterSet.cc b/src/base/CharacterSet.cc index 9bd98ac0c8..3df5f3eee7 100644 --- a/src/base/CharacterSet.cc +++ b/src/base/CharacterSet.cc @@ -5,17 +5,29 @@ 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; + *d = 1; ++s; ++d; } return *this; } + +CharacterSet & +CharacterSet::add(const unsigned char c) +{ + chars_[static_cast(c)] = 1; + return *this; +} + +CharacterSet::CharacterSet(const char *label, const char * const c) +: name(label == NULL ? "anonymous" : label), chars_(vector_type(256,0)) +{ + const size_t clen = strlen(c); + for (size_t i = 0; i < clen; ++i) + add(c[i]); +} diff --git a/src/base/CharacterSet.h b/src/base/CharacterSet.h index 4938ccfa1a..d66a8cddd5 100644 --- a/src/base/CharacterSet.h +++ b/src/base/CharacterSet.h @@ -9,19 +9,13 @@ class CharacterSet public: typedef std::vector vector_type; - CharacterSet(const char *label, const char * const c) - : name(label == NULL ? "anonymous" : label), chars_(vector_type(256,0)) - { - const size_t clen = strlen(c); - for (size_t i = 0; i < clen; ++i) - add(c[i]); - } + CharacterSet(const char *label, const char * const c); /// whether a given character exists in the set - bool operator[](unsigned char c) const {return chars_[static_cast(c)];} + bool operator[](unsigned char c) const {return chars_[static_cast(c)] == 1;} /// add a given char to the character set. - CharacterSet & add(const unsigned char c) {chars_[static_cast(c)] = true; return *this; } + CharacterSet & add(const unsigned char c); /// add all characters from the given CharacterSet to this one const CharacterSet &operator +=(const CharacterSet &src); @@ -30,7 +24,12 @@ public: const char * name; private: - /// characters present in this set + /** characters present in this set. + * + * \note guaranteed to be always 256 slots wide, as forced in the + * constructor. This assumption is relied upon in operator[], add, + * operator+= + */ vector_type chars_; };