summaryrefslogtreecommitdiffstats
path: root/dwflpp.h
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2009-09-02 16:43:58 -0700
committerJosh Stone <jistone@redhat.com>2009-09-02 17:13:14 -0700
commit64deb08509bf9682e7d3b8141399c5603edb2df2 (patch)
tree08618088f11078f203a98c00c5ac225a69b68738 /dwflpp.h
parentaca66a36681ac7cbf7fcc2eac4dafc83d6559ef9 (diff)
downloadsystemtap-steved-64deb08509bf9682e7d3b8141399c5603edb2df2.tar.gz
systemtap-steved-64deb08509bf9682e7d3b8141399c5603edb2df2.tar.xz
systemtap-steved-64deb08509bf9682e7d3b8141399c5603edb2df2.zip
Provide backward-compatible unordered_map/set
We were defining our own stap_map with a ::type to let us use typedefs to use the new unordered_map if available, or hash_map otherwise. Since unordered_map is the future direction, I'm changing our code to use that directly. The backward-compatible version is a #define to hash_map, which has a compatible interface. While I'm at it, let's also define unordered_multimap, unordered_set, and unordered_multiset. * unordered.h: New. * dwflpp.h (stap_map): Removed. (cache typedefs): Use the unordered name now.
Diffstat (limited to 'dwflpp.h')
-rw-r--r--dwflpp.h25
1 files changed, 5 insertions, 20 deletions
diff --git a/dwflpp.h b/dwflpp.h
index 047ad602..9ed18558 100644
--- a/dwflpp.h
+++ b/dwflpp.h
@@ -15,6 +15,7 @@
#include "dwarf_wrappers.h"
#include "elaborate.h"
#include "session.h"
+#include "unordered.h"
#include <cstring>
#include <iostream>
@@ -43,33 +44,17 @@ struct dwarf_query;
enum line_t { ABSOLUTE, RELATIVE, RANGE, WILDCARD };
enum info_status { info_unknown, info_present, info_absent };
-#ifdef HAVE_TR1_UNORDERED_MAP
-#include <tr1/unordered_map>
-template<class K, class V> struct stap_map {
- typedef std::tr1::unordered_map<K, V> type;
-};
-#else
-#include <ext/hash_map>
-template<class K, class V> struct stap_map {
- typedef __gnu_cxx::hash_map<K, V, stap_map> type;
- size_t operator() (std::string const& s) const
- { __gnu_cxx::hash<const char*> h; return h(s.c_str()); }
- size_t operator() (void* const& p) const
- { __gnu_cxx::hash<long> h; return h(reinterpret_cast<long>(p)); }
-};
-#endif
-
// module -> cu die[]
-typedef stap_map<Dwarf*, std::vector<Dwarf_Die>*>::type module_cu_cache_t;
+typedef unordered_map<Dwarf*, std::vector<Dwarf_Die>*> module_cu_cache_t;
// function -> die
-typedef stap_map<std::string, Dwarf_Die>::type cu_function_cache_t;
+typedef unordered_map<std::string, Dwarf_Die> cu_function_cache_t;
// cu die -> (function -> die)
-typedef stap_map<void*, cu_function_cache_t*>::type mod_cu_function_cache_t;
+typedef unordered_map<void*, cu_function_cache_t*> mod_cu_function_cache_t;
// inline function die -> instance die[]
-typedef stap_map<void*, std::vector<Dwarf_Die>*>::type cu_inl_function_cache_t;
+typedef unordered_map<void*, std::vector<Dwarf_Die>*> cu_inl_function_cache_t;
typedef std::vector<func_info> func_info_map_t;
typedef std::vector<inline_instance_info> inline_instance_map_t;