15 #ifndef CORE_UTIL_JIT_H_
16 #define CORE_UTIL_JIT_H_
23 #include <TDataMember.h>
36 std::vector<TClass*>
FindClassSlow(
const std::string& class_name);
46 const std::string& data_member);
52 TClass* tclass,
const std::vector<std::string>& dm_names,
53 const std::string& functor_name,
54 const std::function<std::string(
const std::string&,
55 const std::vector<TDataMember*>&)>&
60 void*
New(
const std::string& parameter =
"");
62 template <
typename TFunctor>
63 TFunctor*
New(
const std::string& parameter =
"") {
64 return static_cast<TFunctor*
>(
New(parameter));
72 std::function<std::string(
const std::string&,
73 const std::vector<TDataMember*>&)>
82 static void Register(
const std::string& header);
std::function< std::string(const std::string &, const std::vector< TDataMember * > &)> code_generator_
JitForEachDataMemberFunctor(TClass *tclass, const std::vector< std::string > &dm_names, const std::string &functor_name, const std::function< std::string(const std::string &, const std::vector< TDataMember * > &)> &code_generation)
std::string functor_name_
void * New(const std::string ¶meter="")
static std::atomic< int > counter_
The counter value is appended to the functor_name to obtain unique names.
TFunctor * New(const std::string ¶meter="")
std::vector< TDataMember * > data_members_
std::vector< TClass * > FindClassSlow(const std::string &class_name)
std::vector< TDataMember * > FindDataMemberSlow(TClass *tclass, const std::string &data_member)