]> sourceware.org Git - systemtap.git/commitdiff
template-ify iterate_over_libraries()
authorJonathan Lebon <jlebon@redhat.com>
Tue, 18 Feb 2014 20:22:29 +0000 (15:22 -0500)
committerJonathan Lebon <jlebon@redhat.com>
Wed, 19 Feb 2014 15:33:06 +0000 (10:33 -0500)
dwflpp.cxx
dwflpp.h
tapsets.cxx
translate.cxx

index 7093e9da0a97baa24acd679e5a17df95e1c10d25..7d97aef38cc1a5111a6ed1f917e469704d8445d5 100644 (file)
@@ -1220,8 +1220,9 @@ dwflpp::iterate_over_notes<void>(void *object, void (*callback)(void*,
 /* For each entry in the .dynamic section in the current module call 'callback'
  * returning 'object' in case 'callback' is a method */
 
-void
-dwflpp::iterate_over_libraries (void (*callback)(void *object, const char *arg), void *q)
+template<> void
+dwflpp::iterate_over_libraries<void>(void (*callback)(void*, const char*),
+                                     void *data)
 {
   std::set<std::string> added;
   string interpreter;
@@ -1341,7 +1342,7 @@ dwflpp::iterate_over_libraries (void (*callback)(void *object, const char *arg),
       it++)
     {
       string modname = *it;
-      (callback) (q, modname.c_str());
+      (callback) (data, modname.c_str());
     }
 }
 
index cf0ced7e3844fbf3eff8e3e92ed8499d7919a7a8..b2264c1bafeba534bf76ad3edeefc786f79fcf43 100644 (file)
--- a/dwflpp.h
+++ b/dwflpp.h
@@ -289,6 +289,16 @@ struct dwflpp
                                                 size_t))callback);
     }
 
+  template<typename T>
+  void iterate_over_libraries (void (*callback)(T*, const char*), T *data)
+    {
+      // See comment block in iterate_over_modules()
+      iterate_over_libraries<void>((void (*)(void*,
+                                             const char*))callback,
+                                   (void*)data);
+    }
+
+
   void iterate_over_srcfile_lines (char const * srcfile,
                                    int lines[2],
                                    bool need_single_match,
@@ -323,10 +333,6 @@ struct dwflpp
                                                dwarf_query *),
                              std::stack<Dwarf_Addr>*callers=NULL);
 
-  void iterate_over_libraries (void (*callback)(void *object,
-      const char *data), void *data);
-
-
   int iterate_over_plt (void *object,
                          void (*callback)(void *object, const char *name, size_t address));
 
@@ -599,6 +605,9 @@ dwflpp::iterate_over_notes<void>(void *object, void (*callback)(void*,
                                                                 int,
                                                                 const char*,
                                                                 size_t));
+template<> void
+dwflpp::iterate_over_libraries<void>(void (*callback)(void*, const char*),
+                                     void *data);
 
 #endif // DWFLPP_H
 
index 2ccf35de5c615cb7c2cbba0c4784e2819d44069d..ae406b188849e480d6e121fcb76640be76a510e6 100644 (file)
@@ -629,7 +629,7 @@ struct base_query
                               string const & k, long & v);
   static bool get_number_param(literal_map_t const & params,
                               string const & k, Dwarf_Addr & v);
-  static void query_library_callback (void *object, const char *data);
+  static void query_library_callback (base_query *me, const char *data);
   static void query_plt_callback (void *object, const char *link, size_t addr);
   virtual void query_library (const char *data) = 0;
   virtual void query_plt (const char *link, size_t addr) = 0;
@@ -2234,9 +2234,8 @@ query_module (Dwfl_Module *mod,
 
 
 void
-base_query::query_library_callback (void *q, const char *data)
+base_query::query_library_callback (base_query *me, const char *data)
 {
-  base_query *me = (base_query*)q;
   me->query_library (data);
 }
 
index 1214dd0f9e12dbee15891e6affdf90f9c863d40c..20dfc7d7cd37931c2072e6e207852546ae6e24d4 100644 (file)
@@ -6364,9 +6364,8 @@ void emit_symbol_data_done (unwindsym_dump_context*, systemtap_session&);
 
 
 void
-add_unwindsym_iol_callback (void *q, const char *data)
+add_unwindsym_iol_callback (set<string> *added, const char *data)
 {
-  std::set<std::string> *added = (std::set<std::string>*)q;
   added->insert (string (data));
 }
 
This page took 0.074484 seconds and 5 git commands to generate.