CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/CondCore/DBCommon/src/ClassID.cc

Go to the documentation of this file.
00001 #include "CondCore/DBCommon/interface/ClassID.h"
00002 #include "CondCore/ORA/interface/Guid.h"
00003 #include <typeinfo>
00004 #include "cxxabi.h"
00005 
00006 namespace cond {
00007   
00008   char const * className(const std::type_info& t) {
00009     int status=0;
00010     return __cxxabiv1::__cxa_demangle(t.name(), 0, 0, &status); 
00011   }
00012 
00013 //   namespace {
00014 //     std::string id(const std::type_info& t) {
00015 //       const Reflex::Type type=Reflex::Type::ByTypeInfo(t);
00016 //       std::string s;
00017 //       if (type) {
00018 //      Reflex::PropertyList pl = type.Properties();
00019 //      if ( pl.HasProperty("ClassID") )  {
00020 //        s = pl.PropertyAsString("ClassID");
00021 //      }
00022 //      else  {
00023 //        char buff[20];
00024 //        genMD5(type.Name(Reflex::SCOPED),buff);
00025 //           Guid* gd = reinterpret_cast<Guid*>(buff);
00026 //        s = gd->toString();
00027 //      }
00028 //       }
00029 //       else {
00030 //      // only for test
00031 //      std::string name = className(t);
00032 //      char buff[20];
00033 //      genMD5(name,buff);
00034 //         Guid* gd = reinterpret_cast<Guid*>(buff);
00035 //      s = gd->toString();
00036 //       }
00037 //       return s;
00038 //     }
00039 //   }
00040 
00041 
00057   std::string ClassInfo::pluginName(std::string const & prefix) const {
00058     return prefix + "/" +className(tinfo);
00059     //return prefix + "/" +id(tinfo);
00060   }
00061 
00062 }
00063 
00064 EDM_REGISTER_PLUGINFACTORY(cond::ClassInfoFactory, "CondFormatsID");