1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===------------------------ stdexcept.cpp -------------------------------===// 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// The LLVM Compiler Infrastructure 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 102dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenberger#include "__refstring" 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "stdexcept" 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "new" 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "string" 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "system_error" 15c756f5b4e8b2eb4b8c808840f6bc81e504670cf8Richard Smith 16460b4cadde3f0e7679ddd12151517e949493b691Howard Hinnant#ifndef __has_include 17460b4cadde3f0e7679ddd12151517e949493b691Howard Hinnant#define __has_include(inc) 0 18460b4cadde3f0e7679ddd12151517e949493b691Howard Hinnant#endif 19460b4cadde3f0e7679ddd12151517e949493b691Howard Hinnant 202dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenberger/* For _LIBCPPABI_VERSION */ 212dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenberger#if __has_include(<cxxabi.h>) || defined(__APPLE_) || defined(LIBCXXRT) 22460b4cadde3f0e7679ddd12151517e949493b691Howard Hinnant#include <cxxabi.h> 239844b6796b54516b6bcb5afd2cd3c10f722c47a4Howard Hinnant#endif 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 252dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenbergerstatic_assert(sizeof(std::__libcpp_refstring) == sizeof(const char *), ""); 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantnamespace std // purposefully not using versioning namespace 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 302dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenbergerlogic_error::logic_error(const string& msg) : __imp_(msg.c_str()) 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 342dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenbergerlogic_error::logic_error(const char* msg) : __imp_(msg) 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 382dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenbergerlogic_error::logic_error(const logic_error& le) _NOEXCEPT : __imp_(le.__imp_) 39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantlogic_error& 431e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantlogic_error::operator=(const logic_error& le) _NOEXCEPT 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 452dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenberger __imp_ = le.__imp_; 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant return *this; 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 49d0d308f54baaa977292b6ea586a9577aa6e2a8e4Peter Collingbourne#if !defined(_LIBCPPABI_VERSION) && !defined(LIBSTDCXX) 50e1642e1c00d30993616c7293959b33fe2007ba2eHoward Hinnant 511e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantlogic_error::~logic_error() _NOEXCEPT 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantconst char* 561e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantlogic_error::what() const _NOEXCEPT 57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 582dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenberger return __imp_.c_str(); 59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 61e1642e1c00d30993616c7293959b33fe2007ba2eHoward Hinnant#endif 62e1642e1c00d30993616c7293959b33fe2007ba2eHoward Hinnant 632dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenbergerruntime_error::runtime_error(const string& msg) : __imp_(msg.c_str()) 64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 672dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenbergerruntime_error::runtime_error(const char* msg) : __imp_(msg) 68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 711e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantruntime_error::runtime_error(const runtime_error& le) _NOEXCEPT 722dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenberger : __imp_(le.__imp_) 73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantruntime_error& 771e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantruntime_error::operator=(const runtime_error& le) _NOEXCEPT 78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 792dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenberger __imp_ = le.__imp_; 80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant return *this; 81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 83d0d308f54baaa977292b6ea586a9577aa6e2a8e4Peter Collingbourne#if !defined(_LIBCPPABI_VERSION) && !defined(LIBSTDCXX) 84e1642e1c00d30993616c7293959b33fe2007ba2eHoward Hinnant 851e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantruntime_error::~runtime_error() _NOEXCEPT 86bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantconst char* 901e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantruntime_error::what() const _NOEXCEPT 91bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 922dbbe77c0fb2d73ca2086aabcae3f4e0e4b2ab70Joerg Sonnenberger return __imp_.c_str(); 93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 951e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantdomain_error::~domain_error() _NOEXCEPT {} 961e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantinvalid_argument::~invalid_argument() _NOEXCEPT {} 971e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantlength_error::~length_error() _NOEXCEPT {} 981e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantout_of_range::~out_of_range() _NOEXCEPT {} 99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 1001e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantrange_error::~range_error() _NOEXCEPT {} 1011e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantoverflow_error::~overflow_error() _NOEXCEPT {} 1021e15fd1856a34a4bc0f7c1d649d2e22df9033326Howard Hinnantunderflow_error::~underflow_error() _NOEXCEPT {} 103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 104e1642e1c00d30993616c7293959b33fe2007ba2eHoward Hinnant#endif 105e1642e1c00d30993616c7293959b33fe2007ba2eHoward Hinnant 106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} // std 107