]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Clarified documentatio for CharacterSet; moved CharacterSet::add and constructor...
authorFrancesco Chemolli <kinkie@squid-cache.org>
Tue, 17 Dec 2013 15:58:52 +0000 (16:58 +0100)
committerFrancesco Chemolli <kinkie@squid-cache.org>
Tue, 17 Dec 2013 15:58:52 +0000 (16:58 +0100)
src/base/CharacterSet.cc
src/base/CharacterSet.h

index 9bd98ac0c841aaa637f8bf9c97591fcf4aac29e3..3df5f3eee7ffb0c768cfe7e87799a789ee6d9d22 100644 (file)
@@ -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<uint8_t>(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]);
+}
index 4938ccfa1ae1d2d85a063926d3b8812dbbbaab67..d66a8cddd52d6aee08d598d2eee3b2e6ab267e32 100644 (file)
@@ -9,19 +9,13 @@ class CharacterSet
 public:
     typedef std::vector<uint8_t> 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<uint8_t>(c)];}
+    bool operator[](unsigned char c) const {return chars_[static_cast<uint8_t>(c)] == 1;}
 
     /// add a given char to the character set.
-    CharacterSet & add(const unsigned char c) {chars_[static_cast<uint8_t>(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_;
 };