Browse Source

Workaround for uclibc missing map::operator==()

Adam Ierymenko 10 years ago
parent
commit
88949a750f
1 changed files with 16 additions and 1 deletions
  1. 16 1
      node/Dictionary.hpp

+ 16 - 1
node/Dictionary.hpp

@@ -33,7 +33,7 @@
 #include <string>
 #include <string>
 #include <map>
 #include <map>
 #include <stdexcept>
 #include <stdexcept>
- 
+
 #include "Constants.hpp"
 #include "Constants.hpp"
 #include "Utils.hpp"
 #include "Utils.hpp"
 
 
@@ -305,6 +305,21 @@ public:
 	 */
 	 */
 	bool verify(const Identity &id) const;
 	bool verify(const Identity &id) const;
 
 
+  inline bool operator==(const Dictionary &d) const
+  {
+    // std::map::operator== is broken on uclibc++
+    if (size() != d.size())
+      return false;
+    const_iterator a(begin());
+    const_iterator b(d.begin());
+    while (a != end()) {
+      if (*(a++) != *(b++))
+        return false;
+    }
+    return true;
+  }
+  inline bool operator!=(const Dictionary &d) const { return (!(*this == d)); }
+
 private:
 private:
 	void _mkSigBuf(std::string &buf) const;
 	void _mkSigBuf(std::string &buf) const;
 	static void _appendEsc(const char *data,unsigned int len,std::string &to);
 	static void _appendEsc(const char *data,unsigned int len,std::string &to);