| //===------------------------- typeinfo.cpp -------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #include <stdlib.h> | |
| #if __APPLE__ | |
| #include <cxxabi.h> | |
| #endif | |
| #include "typeinfo" | |
| std::bad_cast::bad_cast() _NOEXCEPT | |
| { | |
| } | |
| std::bad_cast::~bad_cast() _NOEXCEPT | |
| { | |
| } | |
| const char* | |
| std::bad_cast::what() const _NOEXCEPT | |
| { | |
| return "std::bad_cast"; | |
| } | |
| std::bad_typeid::bad_typeid() _NOEXCEPT | |
| { | |
| } | |
| std::bad_typeid::~bad_typeid() _NOEXCEPT | |
| { | |
| } | |
| const char* | |
| std::bad_typeid::what() const _NOEXCEPT | |
| { | |
| return "std::bad_typeid"; | |
| } | |
| #if __APPLE__ | |
| // On Darwin, the cxa_bad_* functions cannot be in the lower level library | |
| // because bad_cast and bad_typeid are defined in his higher level library | |
| void __cxxabiv1::__cxa_bad_typeid() { throw std::bad_typeid(); } | |
| void __cxxabiv1::__cxa_bad_cast() { throw std::bad_cast(); } | |
| #endif | |