1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

vcmi: use std::any_cast

This commit is contained in:
Konstantin
2023-04-15 02:42:48 +03:00
parent e3ed728193
commit 25783066e8
4 changed files with 9 additions and 8 deletions

View File

@@ -101,6 +101,7 @@ static_assert(sizeof(bool) == 1, "Bool needs to be 1 byte in size.");
#define _USE_MATH_DEFINES #define _USE_MATH_DEFINES
#include <algorithm> #include <algorithm>
#include <any>
#include <array> #include <array>
#include <atomic> #include <atomic>
#include <bitset> #include <bitset>

View File

@@ -365,13 +365,13 @@ public:
if(*actualType == *typeWeNeedToReturn) if(*actualType == *typeWeNeedToReturn)
{ {
// No casting needed, just unpack already stored shared_ptr and return it // No casting needed, just unpack already stored shared_ptr and return it
data = boost::any_cast<std::shared_ptr<T>>(itr->second); data = std::any_cast<std::shared_ptr<T>>(itr->second);
} }
else else
{ {
// We need to perform series of casts // We need to perform series of casts
auto ret = typeList.castShared(itr->second, actualType, typeWeNeedToReturn); auto ret = typeList.castShared(itr->second, actualType, typeWeNeedToReturn);
data = boost::any_cast<std::shared_ptr<T>>(ret); data = std::any_cast<std::shared_ptr<T>>(ret);
} }
} }
catch(std::exception &e) catch(std::exception &e)

View File

@@ -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 = &(boost::any_cast<VectorizedObjectInfo<T, U>&>(i->second)); VectorizedObjectInfo<T, U> *ret = std::any_cast<VectorizedObjectInfo<T, U>*>(&(i->second));
return ret; return ret;
} }
} }

View File

@@ -27,7 +27,7 @@ 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 boost::any castRawPtr(const boost::any &ptr) const override // takes void* pointing to From object, performs dynamic cast, returns void* pointing to To object
{ {
From * from = (From*)boost::any_cast<void*>(ptr); From * from = (From*)std::any_cast<void*>(ptr);
To * ret = static_cast<To*>(from); To * ret = static_cast<To*>(from);
return (void*)ret; return (void*)ret;
} }
@@ -38,7 +38,7 @@ struct PointerCaster : IPointerCaster
{ {
try try
{ {
auto from = boost::any_cast<SmartPt>(ptr); auto from = std::any_cast<SmartPt>(ptr);
auto ret = std::static_pointer_cast<To>(from); auto ret = std::static_pointer_cast<To>(from);
return ret; return ret;
} }
@@ -54,7 +54,7 @@ struct PointerCaster : IPointerCaster
} }
virtual boost::any castWeakPtr(const boost::any &ptr) const override virtual boost::any castWeakPtr(const boost::any &ptr) const override
{ {
auto from = boost::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());
} }
}; };
@@ -158,7 +158,7 @@ public:
return const_cast<void*>(reinterpret_cast<const void*>(inputPtr)); return const_cast<void*>(reinterpret_cast<const void*>(inputPtr));
} }
return boost::any_cast<void*>(castHelper<&IPointerCaster::castRawPtr>( return std::any_cast<void*>(castHelper<&IPointerCaster::castRawPtr>(
const_cast<void*>(reinterpret_cast<const void*>(inputPtr)), &baseType, const_cast<void*>(reinterpret_cast<const void*>(inputPtr)), &baseType,
derivedType)); derivedType));
} }
@@ -177,7 +177,7 @@ public:
void * castRaw(void *inputPtr, const std::type_info *from, const std::type_info *to) const void * castRaw(void *inputPtr, const std::type_info *from, const std::type_info *to) const
{ {
return boost::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 boost::any castShared(boost::any inputPtr, const std::type_info *from, const std::type_info *to) const
{ {