00001 #ifndef FWCore_Services_Sym_h 00002 #define FWCore_Services_Sym_h 00003 00004 #include <iosfwd> 00005 #include <string> 00006 00007 #include <dlfcn.h> 00008 00009 struct Sym 00010 { 00011 typedef void* address_type; 00012 00013 Sym(Dl_info const& info, void* addr) : 00014 name_(), 00015 library_(), 00016 id_(), 00017 addr_(reinterpret_cast<address_type>(addr)) 00018 { 00019 00020 } 00021 00022 00023 00024 Sym() : 00025 name_(), 00026 library_(), 00027 id_(), 00028 addr_() 00029 { } 00030 00031 explicit Sym(int id) : 00032 name_(), 00033 library_(), 00034 id_(id), 00035 addr_() 00036 { } 00037 00038 std::string name_; 00039 std::string library_; 00040 int id_; 00041 address_type addr_; 00042 00043 static int next_id_; 00044 00045 bool 00046 operator<(address_type b) const 00047 { return addr_ < b; } 00048 00049 bool 00050 operator<(const Sym& b) const 00051 { return addr_ < b.addr_; } 00052 }; 00053 00054 std::ostream& 00055 operator<< (std::ostream& os, Sym const& s); 00056 00057 inline 00058 bool 00059 operator<(Sym::address_type a, const Sym& b) 00060 { return a < b.addr_; } 00061 00062 00063 #endif