17 #include "TVirtualCollectionProxy.h"
18 #include "Reflex/Type.h"
19 #include "Reflex/Member.h"
94 boost::shared_ptr<FWItemAccessorBase>
97 static const bool debug =
false;
106 <<
" uses FWItemTVirtualCollectionProxyAccessor." << std::endl;
107 return boost::shared_ptr<FWItemAccessorBase>(
109 boost::shared_ptr<TVirtualCollectionProxy>(iClass->GetCollectionProxy()->Generate())));
115 <<
" only contains data member " << member->GetName()
116 <<
" which uses FWItemTVirtualCollectionProxyAccessor."
119 return boost::shared_ptr<FWItemAccessorBase>(
121 boost::shared_ptr<TVirtualCollectionProxy>(member->GetCollectionProxy()->Generate()),
132 std::string accessorName;
137 << accessorName <<
"." << std::endl;
153 iClass->GetCollectionProxy() &&
154 iClass->GetCollectionProxy()->GetValueClass() &&
155 iClass->GetCollectionProxy()->GetValueClass()->IsLoaded();
174 assert(iClass->GetTypeInfo());
185 memType = memType.FinalType();
186 oMember = TClass::GetClass(memType.TypeInfo());
187 oOffset =
dataType.DataMemberAt(0).Offset();
208 const std::vector<edmplugin::PluginInfo> &available
211 for (
size_t i = 0,
e = available.size();
i !=
e; ++
i)
213 std::string
name = available[
i].name_;
214 std::string
type = name.substr(0, name.find_first_of(
'@'));
215 if (iClass->GetTypeInfo()->name() ==
type)
231 std::string accessorName;
static bool classAccessedAsCollection(const TClass *)
virtual ~FWItemAccessorFactory()
unsigned int offset(bool)
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)
boost::shared_ptr< FWItemAccessorBase > accessorFor(const TClass *) const
T get(const Candidate &c)