ReflectedMethodParameterWrapper( const Variant& variant, const IDefinitionManager & definitionManager )
	{
		ObjectHandle handle;
		value = variant.tryCast<ObjectHandle>( handle )
			? *reflectedCast< Type >(handle.data(), handle.type(), definitionManager )
			: variant.cast<Type>();
	}
Exemplo n.º 2
0
	Variant invoke(const ObjectHandle& object, const IDefinitionManager& definitionManager,
		const ReflectedMethodParameters& parameters) override
	{
		auto pointer = reflectedCast<ClassType>(object.data(), object.type(), definitionManager);
		TF_ASSERT(pointer != nullptr);
		return invokeMember( pointer, method_, definitionManager, parameters, std::index_sequence_for<Args...>{} );
	}
Exemplo n.º 3
0
	ReflectedMethodParameterWrapper(const Variant& variant, const IDefinitionManager& definitionManager)
	{
		if (variant.canCast<ObjectHandle>())
		{
			ObjectHandle handle = variant.cast<ObjectHandle>();
			pointer_ = reflectedCast<Type>(handle.data(), handle.type(), definitionManager);
		}
		else
		{
			pointer_ = &const_cast<Variant&>(variant).cast<Type&>();
		}
	}