//==============================================================================
//  Component:
//      STD (C++ Standard Library)
//
//  Library:
//      $KW; $FN; $EKW;
//      $KW; $Own; $Ver; $ChkD; $EKW;
//
//  Purpose:
//
//  Copyright (C) 1998-2001, Interstron, Ltd.
//  All rights reserved.
//==###=========================================================================

#ifndef __IS_STD_EXCEPTION
#define __IS_STD_EXCEPTION

#include <_nsstd.h>


_NS_STD_BEGIN

class exception
{
public:
    exception() throw() { }

    exception(const exception&) throw() { }

    exception& operator=(const exception&) throw()
    {
        return *this;
    }

    virtual ~exception() throw() { }

    virtual const char* what() const throw()
    {
        return "";
    }
};

class bad_exception : public exception
{
public:
    bad_exception() throw() { }

    bad_exception(const bad_exception&) throw() { }

    bad_exception& operator=(const bad_exception&) throw()
    {
        return *this;
    }

    virtual ~bad_exception() throw() { }

    virtual const char* what() const throw()
    {
        return "Function with an exception-specification throws an exception that is not listed in the exception-specification";
    }
};

typedef void (*unexpected_handler)();
unexpected_handler set_unexpected(unexpected_handler) throw();
void unexpected();

typedef void (*terminate_handler)();
terminate_handler set_terminate(terminate_handler) throw();
void terminate();

bool uncaught_exception();

_NS_STD_END

#endif // __IS_STD_EXCEPTION

//==###=========================================================================
//  End of module:
//      $KW; $FN; $EKW;
//==============================================================================
