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