williamr@2: /* williamr@4: * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(- * * ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of the License "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@2: * williamr@4: * Contributors: williamr@2: * williamr@4: * Description: williamr@4: * Name : exception williamr@4: * Part of : standard c++ library. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: williamr@4: #ifndef _SYMCPP_EXCEPTION_H_ williamr@4: #define _SYMCPP_EXCEPTION_H_ williamr@2: williamr@4: #ifdef __EABI__ williamr@4: /* EABI specific definitions */ williamr@4: #include williamr@4: namespace std williamr@4: { williamr@4: class exception williamr@4: { williamr@4: public: williamr@4: IMPORT_C exception() __NO_THROW; williamr@4: IMPORT_C exception(const exception&) __NO_THROW; williamr@4: IMPORT_C exception& operator=(const exception&) __NO_THROW; williamr@4: IMPORT_C virtual ~exception() __NO_THROW; williamr@4: IMPORT_C virtual const char* what() const __NO_THROW; williamr@4: }; williamr@2: williamr@4: class bad_exception : public exception williamr@4: { williamr@4: public: williamr@4: IMPORT_C bad_exception() __NO_THROW; williamr@4: IMPORT_C bad_exception(const bad_exception&) __NO_THROW; williamr@4: IMPORT_C bad_exception& operator=(const bad_exception&) __NO_THROW; williamr@4: IMPORT_C virtual ~bad_exception() __NO_THROW; williamr@4: IMPORT_C virtual const char* what() const __NO_THROW; williamr@4: }; williamr@2: williamr@4: typedef void (*unexpected_handler)(); williamr@2: williamr@4: IMPORT_C unexpected_handler set_unexpected(unexpected_handler) __NO_THROW; williamr@4: IMPORT_C void unexpected(); williamr@2: williamr@4: typedef void (*terminate_handler)(); williamr@4: williamr@4: IMPORT_C terminate_handler set_terminate(terminate_handler) __NO_THROW; williamr@4: IMPORT_C void terminate(); williamr@4: williamr@4: IMPORT_C extern bool uncaught_exception() __NO_THROW; williamr@4: } williamr@4: williamr@4: williamr@4: williamr@2: # else williamr@2: williamr@4: /* Declarations common to all other platforms (Non-EABI) here. williamr@4: * WINSCW specific definitions are in exception_winscw.h williamr@4: */ williamr@4: # include williamr@2: williamr@4: namespace std { williamr@2: williamr@4: class exception { williamr@4: public: williamr@4: exception() __NO_THROW; williamr@4: exception(const exception&) __NO_THROW; williamr@4: exception& operator=(const exception&) __NO_THROW; williamr@4: virtual ~exception() __NO_THROW; williamr@4: virtual const char* what() const __NO_THROW; williamr@4: }; williamr@2: williamr@4: class bad_exception : public exception { williamr@4: public: williamr@4: bad_exception() __NO_THROW; williamr@4: bad_exception(const bad_exception&) __NO_THROW; williamr@4: bad_exception& operator=(const bad_exception&) __NO_THROW; williamr@4: virtual ~bad_exception() __NO_THROW; williamr@4: virtual const char* what() const __NO_THROW; williamr@4: }; williamr@2: williamr@4: typedef void (*terminate_handler)(); williamr@4: extern terminate_handler set_terminate(terminate_handler) __NO_THROW; williamr@2: williamr@4: typedef void (*unexpected_handler)(); williamr@4: extern unexpected_handler set_unexpected(unexpected_handler) __NO_THROW; williamr@2: williamr@4: void terminate(); williamr@4: void unexpected(); williamr@4: bool uncaught_exception() __NO_THROW; williamr@2: williamr@4: } williamr@2: williamr@4: # ifdef __WINSCW__ williamr@4: /* williamr@4: * C++ Exception specific stuff required from the CW runtime. williamr@4: * Certain functions are implemented inline in CW headers. williamr@4: * We're providing the same in exception_winscw.h williamr@4: */ williamr@4: # include williamr@4: # endif //__WINSCW__ williamr@2: williamr@4: #endif // __EABI__ williamr@4: #endif //_SYMCPP_EXCEPTION_ williamr@2: