#ifndef __STD_EXCEPTION
#define __STD_EXCEPTION

#ifndef __DEFS_H__
#include <_defs.h>
#endif


extern bool  uncaught_exception();

namespace __dls {
  extern const char _RTL_DATA *__dls_NoNamedException;
  extern const char _RTL_DATA *__dls_BadException;
} ;
namespace std {

typedef void (*terminate_handler) ();
extern terminate_handler  set_terminate(terminate_handler f) __NOTHROW ;
extern void  terminate( );

typedef void (*unexpected_handler) ();
extern unexpected_handler  set_unexpected( unexpected_handler f)  __NOTHROW ;
extern void  unexpected();

  class _RTL_CLASS exception     
  {
  public:
     exception () __NOTHROW
    { ; }
     exception (const exception&) __NOTHROW 
    { ; }
     exception& operator= (const exception& e)  __NOTHROW
    { return *this; }
     virtual ~exception ()  __NOTHROW;

     virtual const char * what () const  __NOTHROW
    { 
      return __dls::__dls_NoNamedException;
    }
  };

  class _RTL_CLASS bad_exception : public exception     
  { 
  public:
     bad_exception () __NOTHROW : exception( )
    { ; }
     bad_exception(const bad_exception&) __NOTHROW
    { ; }
     bad_exception& operator=(const bad_exception&) __NOTHROW
    { return *this; }
     virtual ~bad_exception ()  __NOTHROW;

     virtual const char * what () const  __NOTHROW
    { 
      return __dls::__dls_BadException;
    }
  };
}

#endif
