16 #include "TVirtualCollectionProxy.h" 93 std::shared_ptr<FWItemAccessorBase>
96 static const bool debug =
false;
98 TClass *member =
nullptr;
105 <<
" uses FWItemTVirtualCollectionProxyAccessor." << std::endl;
106 return std::make_shared<FWItemTVirtualCollectionProxyAccessor>(iClass,
107 std::shared_ptr<TVirtualCollectionProxy>(iClass->GetCollectionProxy()->Generate()));
122 << accessorName <<
"." << std::endl;
130 <<
" only contains data member " << member->GetName()
131 <<
" which uses FWItemTVirtualCollectionProxyAccessor." 134 return std::make_shared<FWItemTVirtualCollectionProxyAccessor>(iClass,
135 std::shared_ptr<TVirtualCollectionProxy>(member->GetCollectionProxy()->Generate()),
139 return std::make_shared<FWItemSingleAccessor>(iClass);
151 iClass->GetCollectionProxy() &&
152 iClass->GetCollectionProxy()->GetValueClass() &&
153 iClass->GetCollectionProxy()->GetValueClass()->IsLoaded();
172 assert(iClass->GetTypeInfo());
174 assert(
bool(dataType));
178 if (members.
size() != 1)
183 assert(
bool(memType));
184 oMember = TClass::GetClass(memType.typeInfo());
185 oOffset = member.offset();
206 const std::vector<edmplugin::PluginInfo> &available
209 for (
size_t i = 0,
e = available.size();
i !=
e; ++
i)
213 if (iClass->GetTypeInfo()->name() ==
type)
230 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()
T get(const Candidate &c)