// Exception Handling support header for -*- C++ -*-
// Copyright (C) 1995, 1996 Free Software Foundation

#ifndef __EXCEPTION__
#define __EXCEPTION__

#pragma interface "exception"

extern "C++" {

#ifdef __HONOR_STD
namespace std {
#endif

class exception {
public:
  exception () { }
  virtual ~exception () { }
  virtual const char* what () const;
};

class bad_exception : public exception {
public:
  bad_exception () { }
  virtual ~bad_exception () { }
};

typedef void (*terminate_handler) ();
typedef void (*unexpected_handler) ();

terminate_handler set_terminate (terminate_handler);
void terminate (void) __attribute__ ((__noreturn__));
unexpected_handler set_unexpected (unexpected_handler);
void unexpected (void) __attribute__ ((__noreturn__));
bool uncaught_exception ();

#ifdef __HONOR_STD
} // namespace std
#endif

} // extern "C++"

#endif
