00001 #ifndef PSEVT_TYPEINFOUTILS_H 00002 #define PSEVT_TYPEINFOUTILS_H 00003 00004 //-------------------------------------------------------------------------- 00005 // File and Version Information: 00006 // $Id: 00007 // 00008 // Description: 00009 // Class TypeInfoUtils 00010 // 00011 //------------------------------------------------------------------------ 00012 00013 //----------------- 00014 // C/C++ Headers -- 00015 //----------------- 00016 #include <string> 00017 #include <typeinfo> 00018 00019 //---------------------- 00020 // Base Class Headers -- 00021 //---------------------- 00022 00023 //------------------------------- 00024 // Collaborating Class Headers -- 00025 //------------------------------- 00026 00027 //------------------------------------ 00028 // Collaborating Class Declarations -- 00029 //------------------------------------ 00030 00031 // --------------------- 00032 // -- Class Interface -- 00033 // --------------------- 00034 00035 namespace PSEvt { 00036 00037 /** 00038 * @ingroup PSEvt 00039 * 00040 * @brief Class with utility functions to manipulate C++ type_info. 00041 * 00042 * @see EventKey 00043 * 00044 * @version \$Id: 00045 * 00046 * @author David Schneider 00047 */ 00048 00049 namespace TypeInfoUtils { 00050 00051 // less for type_info *, can use for std::map 00052 class lessTypeInfoPtr { 00053 public: 00054 bool operator()(const std::type_info *a, const std::type_info *b) const { 00055 return a->before( *b); 00056 } 00057 }; 00058 00059 std::string typeInfoRealName(const std::type_info *); 00060 00061 } // namespace TypeInfoUtil 00062 00063 } // namespace PSEvt 00064 00065 00066 #endif // PSEVT_EVENTKEY_H