Cast
| 658 | |
| 659 | // Cast |
| 660 | std::unique_ptr<CObj> CPointerObj::cast_impl(Type const* To) const |
| 661 | { |
| 662 | CObj* Ret = nullptr; |
| 663 | if (auto const* BTy = dyn_cast<BasicType>(To)) { |
| 664 | if (BTy->getSize() == sizeof(uintptr_t)) { |
| 665 | Ret = new CBasicObj<uintptr_t>{*BTy, Data<uintptr_t>::emplace_owned(reinterpret_cast<uintptr_t>(getPtr()))};\ |
| 666 | } |
| 667 | } |
| 668 | else |
| 669 | if (auto const* PTy = dyn_cast<PointerType>(To)) { |
| 670 | Ret = new CPointerObj{*PTy, Data<void*>::emplace_owned(getPtr())}; |
| 671 | } |
| 672 | return std::unique_ptr<CObj>{Ret}; |
| 673 | } |
| 674 | |
| 675 | std::unique_ptr<CObj> CArrayObj::cast_impl(Type const* To) const |
| 676 | { |