1// Copyright (C) 2011 The Android Open Source Project
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions
6// are met:
7// 1. Redistributions of source code must retain the above copyright
8//    notice, this list of conditions and the following disclaimer.
9// 2. Redistributions in binary form must reproduce the above copyright
10//    notice, this list of conditions and the following disclaimer in the
11//    documentation and/or other materials provided with the distribution.
12// 3. Neither the name of the project nor the names of its contributors
13//    may be used to endorse or promote products derived from this software
14//    without specific prior written permission.
15//
16// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
17// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19// ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
20// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26// SUCH DAMAGE.
27
28#ifndef __GABIXX_EXCEPTION__
29#define __GABIXX_EXCEPTION__
30
31#include "gabixx_config.h"
32
33#if !defined(LIBCXXABI)
34
35namespace std {
36
37  class exception {
38  public:
39    exception() _GABIXX_NOEXCEPT;
40    virtual ~exception() _GABIXX_NOEXCEPT;
41    virtual const char* what() const _GABIXX_NOEXCEPT;
42  };
43
44  class bad_exception : public exception {
45  public:
46    bad_exception() _GABIXX_NOEXCEPT;
47    virtual ~bad_exception() _GABIXX_NOEXCEPT;
48    virtual const char* what() const _GABIXX_NOEXCEPT;
49  };
50
51  typedef void (*terminate_handler)();
52  terminate_handler get_terminate() _GABIXX_NOEXCEPT;
53  terminate_handler set_terminate(terminate_handler f) _GABIXX_NOEXCEPT;
54  void terminate() _GABIXX_NOEXCEPT_CXX11_ONLY _GABIXX_NORETURN;
55
56  typedef void (*unexpected_handler)();
57  unexpected_handler get_unexpected() _GABIXX_NOEXCEPT;
58  unexpected_handler set_unexpected(unexpected_handler f) _GABIXX_NOEXCEPT;
59  void unexpected() _GABIXX_NORETURN;
60
61  bool uncaught_exception() _GABIXX_NOEXCEPT;
62
63} // namespace std
64
65#endif  // !defined(LIBCXXABI)
66
67#endif // __GABIXX_EXCEPTION__
68