16#ifndef ATHENAPOOLCNVSVC_TPCNVLIST_H
17#define ATHENAPOOLCNVSVC_TPCNVLIST_H
21#include "boost/mpl/vector.hpp"
22#include "boost/mpl/transform.hpp"
23#include <boost/fusion/mpl.hpp>
24#include "boost/fusion/container/vector.hpp"
25#include "boost/fusion/container/vector/convert.hpp"
26#include "boost/fusion/algorithm/iteration/accumulate.hpp"
35template <
class CNV,
class TRANS,
class ... TPCNVS>
39 template <
class TPCNV>
56 typename ELT::Trans_t*
operator() (
typename ELT::Trans_t* p, ELT& elt);
88 typedef boost::mpl::vector<TPCNVS...>
vec_t;
89 typedef typename boost::mpl::transform<vec_t, wrap_tpcnv<boost::mpl::_1> >
::type list_mpl_t;
90 typedef typename boost::fusion::result_of::as_vector<list_mpl_t>::type
list_t;
105 std::unique_ptr<TRANS>
121 bool persToTrans (CNV& parent, TRANS* trans,
const std::string& key, MsgStream&
msg);
Helper for calling a TP converter from an Athena converter.
Helper for calling a TP converter from an Athena converter.
Helper for calling TP converters from an Athena converter.
boost::mpl::vector< TPCNVS... > vec_t
boost::mpl::transform< vec_t, wrap_tpcnv< boost::mpl::_1 > >::type list_mpl_t
std::unique_ptr< TRANS > createTransient(CNV &parent, const std::string &key, MsgStream &msg)
Read the persistent object and convert it to transient.
list_t m_list
List of TP converter instances, wrapped by TPCnvElt.
bool persToTrans(CNV &parent, TRANS *trans, const std::string &key, MsgStream &msg)
Read the persistent object and convert it to transient.
boost::fusion::result_of::as_vector< list_mpl_t >::type list_t
do_create_transient(CNV &parent, const std::string &key, MsgStream &msg)
ELT::Trans_t * operator()(typename ELT::Trans_t *p, ELT &elt)
const std::string & m_key
bool operator()(bool found, ELT &elt)
do_pers_to_trans(CNV &parent, TRANS *trans, const std::string &key, MsgStream &msg)
const std::string & m_key
Metafunction to wrap a TP converter in TPCnvElt.
TPCnvElt< CNV, TPCNV > type