Index: third_party/libc++/src/typeinfo.cpp |
=================================================================== |
--- third_party/libc++/src/typeinfo.cpp (revision 0) |
+++ third_party/libc++/src/typeinfo.cpp (revision 0) |
@@ -0,0 +1,73 @@ |
+//===------------------------- 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> |
+ |
+#ifndef __has_include |
+#define __has_include(inc) 0 |
+#endif |
+ |
+#ifdef __APPLE__ |
+#include <cxxabi.h> |
+#elif defined(LIBCXXRT) || __has_include(<cxxabi.h>) |
+#include <cxxabi.h> |
+#endif |
+ |
+#include "typeinfo" |
+ |
+#if !defined(LIBCXXRT) && !defined(_LIBCPPABI_VERSION) |
+ |
+std::bad_cast::bad_cast() _NOEXCEPT |
+{ |
+} |
+ |
+std::bad_typeid::bad_typeid() _NOEXCEPT |
+{ |
+} |
+ |
+#ifndef __GLIBCXX__ |
+ |
+std::bad_cast::~bad_cast() _NOEXCEPT |
+{ |
+} |
+ |
+const char* |
+std::bad_cast::what() const _NOEXCEPT |
+{ |
+ return "std::bad_cast"; |
+} |
+ |
+std::bad_typeid::~bad_typeid() _NOEXCEPT |
+{ |
+} |
+ |
+const char* |
+std::bad_typeid::what() const _NOEXCEPT |
+{ |
+ return "std::bad_typeid"; |
+} |
+ |
+#ifdef __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() |
+ { |
+#ifndef _LIBCPP_NO_EXCEPTIONS |
+ throw std::bad_typeid(); |
+#endif |
+ } |
+ void __cxxabiv1::__cxa_bad_cast() |
+ { |
+#ifndef _LIBCPP_NO_EXCEPTIONS |
+ throw std::bad_cast(); |
+#endif |
+ } |
+#endif |
+ |
+#endif // !__GLIBCXX__ |
+#endif // !LIBCXXRT && !_LIBCPPABI_VERSION |
Property changes on: third_party/libc++/src/typeinfo.cpp |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |