[llvm-commits] CVS: llvm/include/llvm/ADT/hash_map.in
Jeff Cohen
jeffc at jolt-lang.org
Tue Mar 15 21:25:20 PST 2005
Changes in directory llvm/include/llvm/ADT:
hash_map.in updated: 1.5 -> 1.6
---
Log message:
Add adapter class to let VC++ hash_map use GCC's hash struct.
---
Diffs of the changes: (+26 -0)
hash_map.in | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+)
Index: llvm/include/llvm/ADT/hash_map.in
diff -u llvm/include/llvm/ADT/hash_map.in:1.5 llvm/include/llvm/ADT/hash_map.in:1.6
--- llvm/include/llvm/ADT/hash_map.in:1.5 Sat Jan 15 20:58:39 2005
+++ llvm/include/llvm/ADT/hash_map.in Tue Mar 15 23:25:09 2005
@@ -108,4 +108,30 @@
#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
More information about the llvm-commits
mailing list