Import upstream 0.7.1
[manu/suphp.git] / src / IniSection.cpp
index 4f80c31..e042324 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    suPHP - (c)2002-2005 Sebastian Marsching <sebastian@marsching.com>
+    suPHP - (c)2002-2008 Sebastian Marsching <sebastian@marsching.com>
 
     This file is part of suPHP.
 
 
 using namespace suPHP;
 
-void suPHP::IniSection::putValue(std::string key, std::string value) {
+void suPHP::IniSection::putValue(const std::string key, const std::string value) {
     std::pair<std::string, std::string> p;
     p.first = key;
     p.second = value;
     this->entries.insert(p);
 }
 
-std::vector<std::string> suPHP::IniSection::getValues(std::string key)
+const std::vector<std::string> suPHP::IniSection::getValues(const std::string& key) const
     throw (KeyNotFoundException) {
     std::vector<std::string> values;
-    for (std::multimap<std::string, std::string>::iterator pos = 
-            this->entries.find(key); 
-        pos != this->entries.end(); pos++) {
-       values.push_back(pos->second);
+    std::pair<std::multimap<const std::string, const std::string>::const_iterator, std::multimap<const std::string, const std::string>::const_iterator> range = this->entries.equal_range(key);
+    for (std::multimap<const std::string, const std::string>::const_iterator pos = 
+        range.first; pos != range.second; pos++) {
+        values.push_back(pos->second);
     }
     if (values.size() == 0) {
-       throw KeyNotFoundException("No value for key " + key + " found", 
-                                  __FILE__, __LINE__);
+        throw KeyNotFoundException("No value for key " + key + " found", 
+                                   __FILE__, __LINE__);
     }
     return values;
 }
 
-std::string suPHP::IniSection::getValue(std::string key)
+std::string suPHP::IniSection::getValue(const std::string& key) const
     throw (KeyNotFoundException) {
     std::vector<std::string> values;
     if (this->entries.find(key) != this->entries.end()) {
-       return this->entries.find(key)->second;
+        return this->entries.find(key)->second;
     } else {
-       throw KeyNotFoundException("No value for key " + key + " found", 
-                                  __FILE__, __LINE__);
+        throw KeyNotFoundException("No value for key " + key + " found", 
+                                   __FILE__, __LINE__);
     }
     
 }
 
-std::vector<std::string> suPHP::IniSection::getKeys() {
+const std::vector<std::string> suPHP::IniSection::getKeys() const {
     std::vector<std::string> keys;
-    for (std::multimap<std::string, std::string>::iterator pos =
-            this->entries.begin();
-        pos != this->entries.end(); pos++) {
-       keys.push_back(pos->first);
+    for (std::multimap<const std::string, const std::string>::const_iterator pos =
+             this->entries.begin();
+         pos != this->entries.end(); pos++) {
+        keys.push_back(pos->first);
     }
     return keys;
 }
 
-bool suPHP::IniSection::hasKey(std::string key) {
+bool suPHP::IniSection::hasKey(const std::string& key) const {
     if (this->entries.find(key) != this->entries.end()) {
-       return true;
+        return true;
     } else {
-       return false;
+        return false;
     }
     
 }
 
-std::vector<std::string> suPHP::IniSection::operator[](std::string key) 
+const std::vector<std::string> suPHP::IniSection::operator[](const std::string& key) const
     throw (KeyNotFoundException) {
     return this->getValues(key);
 }
+
+void suPHP::IniSection::removeValues(const std::string& key) {
+    this->entries.erase(key);
+}