 Issue 29587914:
  Issue 5142 - Convert Element Hiding to C++  (Closed) 
  Base URL: https://hg.adblockplus.org/adblockpluscore/
    
  
    Issue 29587914:
  Issue 5142 - Convert Element Hiding to C++  (Closed) 
  Base URL: https://hg.adblockplus.org/adblockpluscore/| Index: compiled/StringMap.h | 
| =================================================================== | 
| --- a/compiled/StringMap.h | 
| +++ b/compiled/StringMap.h | 
| @@ -17,24 +17,38 @@ | 
| #pragma once | 
| #include <cstddef> | 
| #include "Map.h" | 
| #include "String.h" | 
| +class StringHash | 
| 
hub
2017/10/25 01:19:38
this is needed for the unordered_map<>. Otherwise
 | 
| +{ | 
| +public: | 
| + size_t operator()(const String& key) const | 
| + { | 
| + // FNV-1a hash function | 
| + size_t result = 2166136261; | 
| + for (size_t i = 0; i < key.length(); i++) | 
| + result = (result ^ key[i]) * 16777619; | 
| + return result; | 
| + } | 
| +}; | 
| + | 
| namespace StringMap_internal | 
| { | 
| struct StringSetEntry | 
| { | 
| typedef String key_type; | 
| typedef size_t size_type; | 
| DependentString first; | 
| + static StringHash hashFunctor; | 
| StringSetEntry(const key_type& key = DependentString()) | 
| { | 
| if (!key.is_invalid()) | 
| first.reset(key); | 
| } | 
| bool equals(const key_type& other) const | 
| @@ -54,21 +68,17 @@ | 
| void erase() | 
| { | 
| first.erase(); | 
| } | 
| static size_type hash(const key_type& key) | 
| { | 
| - // FNV-1a hash function | 
| - size_type result = 2166136261; | 
| - for (String::size_type i = 0; i < key.length(); i++) | 
| - result = (result ^ key[i]) * 16777619; | 
| - return result; | 
| + return hashFunctor(key); | 
| } | 
| }; | 
| template<typename Value> | 
| struct StringMapEntry : StringSetEntry | 
| { | 
| typedef StringSetEntry super; | 
| typedef Value value_type; |