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);
}
Example #3
0
bool AccessorProperty<ObjectType, MemberType>::ReadData(
	const void *object, Variant &value) const
{
	return value.SetValue((translucent_cast<const ObjectType *>(object)->*mGetter)());
}