Mercurial > hg > CbC > CbC_gcc
view libphobos/libdruntime/core/stdcpp/exception.d @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 1830386684a0 |
children |
line wrap: on
line source
// Written in the D programming language. /** * Interface to C++ <exception> * * Copyright: Copyright (c) 2016 D Language Foundation * License: $(HTTP boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: $(HTTP digitalmars.com, Walter Bright) * Source: $(DRUNTIMESRC core/stdcpp/_exception.d) */ module core.stdcpp.exception; extern (C++, "std"): version (CppRuntime_DigitalMars) { import core.stdcpp.typeinfo; alias void function() unexpected_handler; unexpected_handler set_unexpected(unexpected_handler f) nothrow; void unexpected(); alias void function() terminate_handler; terminate_handler set_terminate(terminate_handler f) nothrow; void terminate(); bool uncaught_exception(); class exception { this() nothrow { } this(const exception) nothrow { } //exception operator=(const exception) nothrow { return this; } //virtual ~this() nothrow; void dtor() { } const(char)* what() const nothrow; } class bad_exception : exception { this() nothrow { } this(const bad_exception) nothrow { } //bad_exception operator=(const bad_exception) nothrow { return this; } //virtual ~this() nothrow; override const(char)* what() const nothrow; } } else version (CppRuntime_Gcc) { alias void function() unexpected_handler; unexpected_handler set_unexpected(unexpected_handler f) nothrow; void unexpected(); alias void function() terminate_handler; terminate_handler set_terminate(terminate_handler f) nothrow; void terminate(); pure bool uncaught_exception(); class exception { this(); //virtual ~this(); void dtor1(); void dtor2(); const(char)* what() const; } class bad_exception : exception { this(); //virtual ~this(); override const(char)* what() const; } } else version (CppRuntime_Microsoft) { class exception { this(); this(const exception); //exception operator=(const exception) { return this; } //virtual ~this(); void dtor() { } const(char)* what() const; private: const(char)* mywhat; bool dofree; } class bad_exception : exception { this(const(char)* msg = "bad exception"); //virtual ~this(); } } else static assert(0, "Missing std::exception binding for this platform");