00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CDBPAYLOADUTILS_HH
00020 #define CDBPAYLOADUTILS_HH
00021
00022
00023
00024
00025 #include "CdbBase/Cdb.hh"
00026 #include "CdbBase/CdbObjectTranslator.hh"
00027 #include "CdbBase/CdbProxyElement.hh"
00028 #include "CdbBase/CdbStatus.hh"
00029 #include <string>
00030 #include <vector>
00031
00032 using std::string;
00033 using std::vector;
00034
00035 namespace CdbPayloadUtils {
00036
00037 namespace {
00038
00039
00040 class hasBeenUpdated {
00041 public:
00042 hasBeenUpdated(const string& name): _name(name) {};
00043 bool operator()(const CdbProxyElement& e) const
00044 {return e.name()==_name && e.updated();}
00045 private:
00046 string _name;
00047 };
00048
00049 }
00050
00051
00052
00053 template <typename T>
00054 T* transient(const string&, const std::vector<CdbProxyElement>&);
00055
00056
00057 inline void registerTranslator(CdbObjectTranslator* translator) {
00058 if( CdbStatus::Success != Cdb::instance()->registerTranslator(translator)) {
00059 ErrMsg(fatal) << "Failed to register translator " <<endmsg;
00060 }
00061 }
00062
00063 };
00064
00065 #ifdef BABAR_COMP_INST
00066 #include "CdbBase/CdbPayloadUtils.cc"
00067 #endif
00068
00069 #endif