bool DirectArrayProperty<ObjectType, MemberType>::ReadData(const void *obj, unsigned index, Variant &variant) const { if(index < Size(obj)) { return variant.SetValue((translucent_cast<const ObjectType *>(obj)->*mMember)[index]); } return false; }
bool DirectMapProperty<ObjectType, MemberType>::ReadData(const void *in, const Variant &key, Variant &value) const { const MemberType &map = translucent_cast<const ObjectType *>(in)->*mMember; typedef typename MemberType::key_type KeyType; typedef typename MemberType::mapped_type ValueType; typename MemberType::const_iterator it; if(key.CanConstRefAs<KeyType>()) it = map.find(key.AsConstRef<KeyType>()); else if(key.CanReadAs<KeyType>()) it = map.find(key.AsValue<KeyType>()); if(it == map.end()) return false; return value.SetValue(it->second); }
bool AccessorProperty<ObjectType, MemberType>::ReadData( const void *object, Variant &value) const { return value.SetValue((translucent_cast<const ObjectType *>(object)->*mGetter)()); }