Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. // Exception Handling support header for -*- C++ -*-
  2.  
  3. // Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001 Free Software Foundation
  4. //
  5. // This file is part of GNU CC.
  6. //
  7. // GNU CC is free software; you can redistribute it and/or modify
  8. // it under the terms of the GNU General Public License as published by
  9. // the Free Software Foundation; either version 2, or (at your option)
  10. // any later version.
  11. //
  12. // GNU CC is distributed in the hope that it will be useful,
  13. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. // GNU General Public License for more details.
  16. //
  17. // You should have received a copy of the GNU General Public License
  18. // along with GNU CC; see the file COPYING.  If not, write to
  19. // the Free Software Foundation, 59 Temple Place - Suite 330,
  20. // Boston, MA 02111-1307, USA.
  21.  
  22. // As a special exception, you may use this file as part of a free software
  23. // library without restriction.  Specifically, if other files instantiate
  24. // templates or use macros or inline functions from this file, or you compile
  25. // this file and link it with other files to produce an executable, this
  26. // file does not by itself cause the resulting executable to be covered by
  27. // the GNU General Public License.  This exception does not however
  28. // invalidate any other reasons why the executable file might be covered by
  29. // the GNU General Public License.
  30.  
  31. #ifndef __EXCEPTION__
  32. #define __EXCEPTION__
  33.  
  34. extern "C++" {
  35.  
  36. namespace std
  37. {
  38.   class exception
  39.   {
  40.   public:
  41.     exception() throw() { }
  42.     virtual ~exception() throw();
  43.     virtual const char* what() const throw();
  44.   };
  45.  
  46.   class bad_exception : public exception
  47.   {
  48.   public:
  49.     bad_exception() throw() { }
  50.     virtual ~bad_exception() throw();
  51.   };
  52.  
  53.   typedef void (*terminate_handler) ();
  54.   typedef void (*unexpected_handler) ();
  55.  
  56.   terminate_handler set_terminate(terminate_handler) throw();
  57.   void terminate() __attribute__ ((__noreturn__));
  58.  
  59.   unexpected_handler set_unexpected(unexpected_handler) throw();
  60.   void unexpected() __attribute__ ((__noreturn__));
  61.  
  62.   bool uncaught_exception() throw();
  63. } // namespace std
  64.  
  65. } // extern "C++"
  66.  
  67. #endif
  68.