Skip to content

Commit

Permalink
SafeAdr: clean
Browse files Browse the repository at this point in the history
  • Loading branch information
fchn289 committed Apr 23, 2024
1 parent 15bc86d commit f09df6a
Showing 1 changed file with 8 additions and 13 deletions.
21 changes: 8 additions & 13 deletions src/safe_mem/SafeAdr.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,6 @@ template<typename From>
SafeAdr<T>::SafeAdr(SafeAdr<From>&& aSafeFrom) noexcept // mv
: SafeAdr(aSafeFrom) // cp
{
/*HID("mv from=" << typeid(From).name() << " to=" << typeid(T).name()
<< ", pre=" << (preVoidType_ == nullptr ? "null" : preVoidType_->name())
<< ", real=" << (realType_ == nullptr ? "null" : realType_->name()));*/

if (pT_ != nullptr) // cp succ, clear src
aSafeFrom = SafeAdr<From>();
}
Expand All @@ -118,20 +114,20 @@ shared_ptr<To> SafeAdr<T>::cast() const noexcept
HID("(SafeAdr) cast Derive->Base/self");
return pT_;
}
else if constexpr(is_base_of<T, To>::value)
{
HID("(SafeAdr) cast Base->Derive");
return dynamic_pointer_cast<To>(pT_);
}
else if constexpr(is_void<To>::value) // else if for constexpr
{
//HID("(SafeAdr) cast any->void (for container to store diff types)");
return pT_;
}
else if constexpr(is_base_of<T, To>::value)
{
HID("(SafeAdr) cast Base->Derive");
return dynamic_pointer_cast<To>(pT_);
}
else if constexpr(!is_void<T>::value)
{
static_assert(!is_void<T>::value, "(SafeAdr) unsupported cast nonVoid->nonVoid");
return nullptr;
HID("(SafeAdr) can't cast from=" << typeid(T).name() << " to=" << typeid(To).name()); // ERR() not MT safe
return this; // force compile err, safer than ret null
}
else if (&typeid(To) == realType_)
{
Expand All @@ -143,7 +139,6 @@ shared_ptr<To> SafeAdr<T>::cast() const noexcept
//HID("(SafeAdr) cast any->type-before-castToVoid");
return static_pointer_cast<To>(pT_);
}
// - ERR() not MT safe
// - realType_ & preVoidType_ can't compile-check so now has to ret null
HID("(SafeAdr) can't cast from=void/" << typeid(T).name() << " to=" << typeid(To).name());
return nullptr;
Expand All @@ -159,7 +154,7 @@ shared_ptr<To> SafeAdr<T>::cast_strict() const noexcept
HID("(SafeAdr) cast Derive->Base/self");
return pT_;
}
else if constexpr(is_void<To>::value) // else if for constexpr
else if constexpr(is_void<To>::value)
{
//HID("(SafeAdr) cast any->void (for container to store diff types)");
return pT_;
Expand Down

0 comments on commit f09df6a

Please sign in to comment.