Selaa lähdekoodia

vcmi: use std::any

Konstantin 2 vuotta sitten
vanhempi
sitoutus
8dcb041917

+ 1 - 1
lib/serializer/BinaryDeserializer.h

@@ -170,7 +170,7 @@ public:
 
 
 	std::map<ui32, void*> loadedPointers;
 	std::map<ui32, void*> loadedPointers;
 	std::map<ui32, const std::type_info*> loadedPointersTypes;
 	std::map<ui32, const std::type_info*> loadedPointersTypes;
-	std::map<const void*, boost::any> loadedSharedPointers;
+	std::map<const void*, std::any> loadedSharedPointers;
 	bool smartPointerSerialization;
 	bool smartPointerSerialization;
 	bool saving;
 	bool saving;
 
 

+ 2 - 2
lib/serializer/CSerializer.h

@@ -76,7 +76,7 @@ class DLL_LINKAGE CSerializer
 		vectors[&typeid(T)] = VectorizedObjectInfo<T, U>(Vector, idRetriever);
 		vectors[&typeid(T)] = VectorizedObjectInfo<T, U>(Vector, idRetriever);
 	}
 	}
 
 
-	typedef std::map<const std::type_info *, boost::any, TypeComparer> TTypeVecMap;
+	typedef std::map<const std::type_info *, std::any, TypeComparer> TTypeVecMap;
 	TTypeVecMap vectors; //entry must be a pointer to vector containing pointers to the objects of key type
 	TTypeVecMap vectors; //entry must be a pointer to vector containing pointers to the objects of key type
 
 
 public:
 public:
@@ -103,7 +103,7 @@ public:
 #ifndef __APPLE__
 #ifndef __APPLE__
 			assert(i->second.type() == typeid(VectorizedObjectInfo<T, U>));
 			assert(i->second.type() == typeid(VectorizedObjectInfo<T, U>));
 #endif
 #endif
-			VectorizedObjectInfo<T, U> *ret = std::any_cast<VectorizedObjectInfo<T, U>*>(&(i->second));
+			VectorizedObjectInfo<T, U> *ret = std::any_cast<VectorizedObjectInfo<T, U>*>(i->second);
 			return ret;
 			return ret;
 		}
 		}
 	}
 	}

+ 13 - 13
lib/serializer/CTypeList.h

@@ -15,17 +15,17 @@ VCMI_LIB_NAMESPACE_BEGIN
 
 
 struct IPointerCaster
 struct IPointerCaster
 {
 {
-	virtual boost::any castRawPtr(const boost::any &ptr) const = 0; // takes From*, returns To*
-	virtual boost::any castSharedPtr(const boost::any &ptr) const = 0; // takes std::shared_ptr<From>, performs dynamic cast, returns std::shared_ptr<To>
-	virtual boost::any castWeakPtr(const boost::any &ptr) const = 0; // takes std::weak_ptr<From>, performs dynamic cast, returns std::weak_ptr<To>. The object under poitner must live.
-	//virtual boost::any castUniquePtr(const boost::any &ptr) const = 0; // takes std::unique_ptr<From>, performs dynamic cast, returns std::unique_ptr<To>
+	virtual std::any castRawPtr(const std::any &ptr) const = 0; // takes From*, returns To*
+	virtual std::any castSharedPtr(const std::any &ptr) const = 0; // takes std::shared_ptr<From>, performs dynamic cast, returns std::shared_ptr<To>
+	virtual std::any castWeakPtr(const std::any &ptr) const = 0; // takes std::weak_ptr<From>, performs dynamic cast, returns std::weak_ptr<To>. The object under poitner must live.
+	//virtual std::any castUniquePtr(const std::any &ptr) const = 0; // takes std::unique_ptr<From>, performs dynamic cast, returns std::unique_ptr<To>
 	virtual ~IPointerCaster() = default;
 	virtual ~IPointerCaster() = default;
 };
 };
 
 
 template <typename From, typename To>
 template <typename From, typename To>
 struct PointerCaster : IPointerCaster
 struct PointerCaster : IPointerCaster
 {
 {
-	virtual boost::any castRawPtr(const boost::any &ptr) const override // takes void* pointing to From object, performs dynamic cast, returns void* pointing to To object
+	virtual std::any castRawPtr(const std::any &ptr) const override // takes void* pointing to From object, performs dynamic cast, returns void* pointing to To object
 	{
 	{
 		From * from = (From*)std::any_cast<void*>(ptr);
 		From * from = (From*)std::any_cast<void*>(ptr);
 		To * ret = static_cast<To*>(from);
 		To * ret = static_cast<To*>(from);
@@ -34,7 +34,7 @@ struct PointerCaster : IPointerCaster
 
 
 	// Helper function performing casts between smart pointers
 	// Helper function performing casts between smart pointers
 	template<typename SmartPt>
 	template<typename SmartPt>
-	boost::any castSmartPtr(const boost::any &ptr) const
+	std::any castSmartPtr(const std::any &ptr) const
 	{
 	{
 		try
 		try
 		{
 		{
@@ -48,11 +48,11 @@ struct PointerCaster : IPointerCaster
 		}
 		}
 	}
 	}
 
 
-	virtual boost::any castSharedPtr(const boost::any &ptr) const override
+	virtual std::any castSharedPtr(const std::any &ptr) const override
 	{
 	{
 		return castSmartPtr<std::shared_ptr<From>>(ptr);
 		return castSmartPtr<std::shared_ptr<From>>(ptr);
 	}
 	}
-	virtual boost::any castWeakPtr(const boost::any &ptr) const override
+	virtual std::any castWeakPtr(const std::any &ptr) const override
 	{
 	{
 		auto from = std::any_cast<std::weak_ptr<From>>(ptr);
 		auto from = std::any_cast<std::weak_ptr<From>>(ptr);
 		return castSmartPtr<std::shared_ptr<From>>(from.lock());
 		return castSmartPtr<std::shared_ptr<From>>(from.lock());
@@ -88,13 +88,13 @@ private:
 	std::vector<TypeInfoPtr> castSequence(TypeInfoPtr from, TypeInfoPtr to) const;
 	std::vector<TypeInfoPtr> castSequence(TypeInfoPtr from, TypeInfoPtr to) const;
 	std::vector<TypeInfoPtr> castSequence(const std::type_info *from, const std::type_info *to) const;
 	std::vector<TypeInfoPtr> castSequence(const std::type_info *from, const std::type_info *to) const;
 
 
-	template<boost::any(IPointerCaster::*CastingFunction)(const boost::any &) const>
-	boost::any castHelper(boost::any inputPtr, const std::type_info *fromArg, const std::type_info *toArg) const
+	template<std::any(IPointerCaster::*CastingFunction)(const std::any &) const>
+	std::any castHelper(std::any inputPtr, const std::type_info *fromArg, const std::type_info *toArg) const
 	{
 	{
 		TSharedLock lock(mx);
 		TSharedLock lock(mx);
 		auto typesSequence = castSequence(fromArg, toArg);
 		auto typesSequence = castSequence(fromArg, toArg);
 
 
-		boost::any ptr = inputPtr;
+		std::any ptr = inputPtr;
 		for(int i = 0; i < static_cast<int>(typesSequence.size()) - 1; i++)
 		for(int i = 0; i < static_cast<int>(typesSequence.size()) - 1; i++)
 		{
 		{
 			auto &from = typesSequence[i];
 			auto &from = typesSequence[i];
@@ -164,7 +164,7 @@ public:
 	}
 	}
 
 
 	template<typename TInput>
 	template<typename TInput>
-	boost::any castSharedToMostDerived(const std::shared_ptr<TInput> inputPtr) const
+	std::any castSharedToMostDerived(const std::shared_ptr<TInput> inputPtr) const
 	{
 	{
 		auto &baseType = typeid(typename std::remove_cv<TInput>::type);
 		auto &baseType = typeid(typename std::remove_cv<TInput>::type);
 		auto derivedType = getTypeInfo(inputPtr.get());
 		auto derivedType = getTypeInfo(inputPtr.get());
@@ -179,7 +179,7 @@ public:
 	{
 	{
 		return std::any_cast<void*>(castHelper<&IPointerCaster::castRawPtr>(inputPtr, from, to));
 		return std::any_cast<void*>(castHelper<&IPointerCaster::castRawPtr>(inputPtr, from, to));
 	}
 	}
-	boost::any castShared(boost::any inputPtr, const std::type_info *from, const std::type_info *to) const
+	std::any castShared(std::any inputPtr, const std::type_info *from, const std::type_info *to) const
 	{
 	{
 		return castHelper<&IPointerCaster::castSharedPtr>(inputPtr, from, to);
 		return castHelper<&IPointerCaster::castSharedPtr>(inputPtr, from, to);
 	}
 	}