111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//===------------------------ stdexcept.cpp -------------------------------===// 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// The LLVM Compiler Infrastructure 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// This file is dual licensed under the MIT and the University of Illinois Open 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Source Licenses. See LICENSE.TXT for details. 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//===----------------------------------------------------------------------===// 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include "__refstring" 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include "stdexcept" 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include "new" 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include "string" 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include "system_error" 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* For _LIBCPPABI_VERSION */ 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(LIBCXX_BUILDING_LIBCXXABI) || defined(__APPLE__) || defined(LIBCXXRT) 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <cxxabi.h> 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstatic_assert(sizeof(std::__libcpp_refstring) == sizeof(const char *), ""); 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertnamespace std // purposefully not using versioning namespace 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlogic_error::logic_error(const string& msg) : __imp_(msg.c_str()) 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlogic_error::logic_error(const char* msg) : __imp_(msg) 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlogic_error::logic_error(const logic_error& le) _NOEXCEPT : __imp_(le.__imp_) 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlogic_error& 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlogic_error::operator=(const logic_error& le) _NOEXCEPT 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __imp_ = le.__imp_; 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert return *this; 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined(_LIBCPPABI_VERSION) && !defined(LIBSTDCXX) 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlogic_error::~logic_error() _NOEXCEPT 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertconst char* 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlogic_error::what() const _NOEXCEPT 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert return __imp_.c_str(); 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertruntime_error::runtime_error(const string& msg) : __imp_(msg.c_str()) 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertruntime_error::runtime_error(const char* msg) : __imp_(msg) 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertruntime_error::runtime_error(const runtime_error& le) _NOEXCEPT 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert : __imp_(le.__imp_) 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertruntime_error& 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertruntime_error::operator=(const runtime_error& le) _NOEXCEPT 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __imp_ = le.__imp_; 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert return *this; 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if !defined(_LIBCPPABI_VERSION) && !defined(LIBSTDCXX) 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertruntime_error::~runtime_error() _NOEXCEPT 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertconst char* 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertruntime_error::what() const _NOEXCEPT 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{ 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert return __imp_.c_str(); 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertdomain_error::~domain_error() _NOEXCEPT {} 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertinvalid_argument::~invalid_argument() _NOEXCEPT {} 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertlength_error::~length_error() _NOEXCEPT {} 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertout_of_range::~out_of_range() _NOEXCEPT {} 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertrange_error::~range_error() _NOEXCEPT {} 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertoverflow_error::~overflow_error() _NOEXCEPT {} 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertunderflow_error::~underflow_error() _NOEXCEPT {} 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} // std 103