16 #include "TVirtualCollectionProxy.h"
90 static const bool debug =
false;
92 TClass *member =
nullptr;
97 fwLog(
fwlog::kDebug) <<
"class " << iClass->GetName() <<
" uses FWItemTVirtualCollectionProxyAccessor."
99 return std::make_shared<FWItemTVirtualCollectionProxyAccessor>(
100 iClass, std::shared_ptr<TVirtualCollectionProxy>(iClass->GetCollectionProxy()->Generate()));
113 fwLog(
fwlog::kDebug) <<
"class " << iClass->GetName() <<
" uses " << accessorName <<
"." << std::endl;
119 fwLog(
fwlog::kDebug) <<
"class " << iClass->GetName() <<
" only contains data member " << member->GetName()
120 <<
" which uses FWItemTVirtualCollectionProxyAccessor." << std::endl;
122 return std::make_shared<FWItemTVirtualCollectionProxyAccessor>(
123 iClass, std::shared_ptr<TVirtualCollectionProxy>(member->GetCollectionProxy()->Generate()), offset);
126 return std::make_shared<FWItemSingleAccessor>(iClass);
135 return iClass && iClass->GetCollectionProxy() && iClass->GetCollectionProxy()->GetValueClass() &&
136 iClass->GetCollectionProxy()->GetValueClass()->IsLoaded();
151 assert(iClass->GetTypeInfo());
157 if (members.
size() != 1)
163 oMember = TClass::GetClass(memType.typeInfo());
164 oOffset = member.offset();
183 const std::vector<edmplugin::PluginInfo> &available =
186 for (
size_t i = 0,
e = available.size();
i !=
e; ++
i) {
189 if (iClass->GetTypeInfo()->name() ==
type) {
204 TClass *member =
nullptr;
const CategoryToInfos & categoryToInfos() const
IterWithDict< TDataMember > begin() const
static bool classAccessedAsCollection(const TClass *)
std::shared_ptr< FWItemAccessorBase > accessorFor(const TClass *) const
virtual ~FWItemAccessorFactory()
static bool hasTVirtualCollectionProxy(const TClass *iClass)
static bool hasMemberTVirtualCollectionProxy(const TClass *iClass, TClass *&oMember, size_t &oOffset)
static bool hasAccessor(const TClass *iClass, std::string &result)
static PluginManager * get()