mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-15 06:29:05 +00:00
Add adapter class to let VC++ hash_map use GCC's hash struct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20637 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -108,4 +108,30 @@ using HASH_NAMESPACE::hash;
|
|||||||
|
|
||||||
#include "llvm/ADT/HashExtras.h"
|
#include "llvm/ADT/HashExtras.h"
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
|
||||||
|
// GCC and VC++ have differing ways of implementing hash_maps. As it's not
|
||||||
|
// standardized, that's to be expected. This adapter class allows VC++
|
||||||
|
// hash_map to use GCC's hash classes.
|
||||||
|
namespace stdext {
|
||||||
|
template<class Key> struct hash {
|
||||||
|
inline size_t operator()(const Key &) const {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class Key> class hash_compare<Key, std::less<Key> > {
|
||||||
|
std::less<Key> comp;
|
||||||
|
public:
|
||||||
|
enum { bucket_size = 4 };
|
||||||
|
enum { min_buckets = 8 };
|
||||||
|
hash_compare() {}
|
||||||
|
hash_compare(std::less<Key> pred) : comp(pred) {}
|
||||||
|
size_t operator()(const Key& key) const { return hash<Key>()(key); }
|
||||||
|
bool operator()(const Key& k1, const Key& k2) const { return comp(k1, k2); }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user