1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/*
2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Copyright (c) 1999
3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Silicon Graphics
4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott *
5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Permission to use, copy, modify, distribute and sell this software
6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * and its documentation for any purpose is hereby granted without fee,
7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * provided that the above copyright notice appear in all copies and
8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * that both that copyright notice and this permission notice appear
9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * in supporting documentation.  Silicon Graphics makes no
10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * representations about the suitability of this software for any
11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * purpose.  It is provided "as is" without express or implied warranty.
12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott *
13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */
14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_RANGE_ERRORS_H
16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_RANGE_ERRORS_H
17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// A few places in the STL throw range errors, using standard exception
19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// classes defined in <stdexcept>.  This header file provides functions
20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// to throw those exception objects.
21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// _STLP_DONT_THROW_RANGE_ERRORS is a hook so that users can disable
23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// this exception throwing.
24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_CAN_THROW_RANGE_ERRORS) && defined (_STLP_USE_EXCEPTIONS) && \
25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott   !defined (_STLP_DONT_THROW_RANGE_ERRORS)
26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_THROW_RANGE_ERRORS
27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// For the STLport iostreams, only declaration here, definition is in the lib
30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_USE_NO_IOSTREAMS) && !defined (_STLP_EXTERN_RANGE_ERRORS)
31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_EXTERN_RANGE_ERRORS
32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_BEGIN_NAMESPACE
35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _STLP_FUNCTION_THROWS _STLP_DECLSPEC _STLP_CALL __stl_throw_runtime_error(const char* __msg);
36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _STLP_FUNCTION_THROWS _STLP_DECLSPEC _STLP_CALL __stl_throw_range_error(const char* __msg);
37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _STLP_FUNCTION_THROWS _STLP_DECLSPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg);
38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _STLP_FUNCTION_THROWS _STLP_DECLSPEC _STLP_CALL __stl_throw_length_error(const char* __msg);
39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _STLP_FUNCTION_THROWS _STLP_DECLSPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg);
40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _STLP_FUNCTION_THROWS _STLP_DECLSPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg);
41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (__DMC__) && !defined (_STLP_NO_EXCEPTIONS)
43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#   pragma noreturn(__stl_throw_runtime_error)
44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#   pragma noreturn(__stl_throw_range_error)
45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#   pragma noreturn(__stl_throw_out_of_range)
46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#   pragma noreturn(__stl_throw_length_error)
47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#   pragma noreturn(__stl_throw_invalid_argument)
48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#   pragma noreturn(__stl_throw_overflow_error)
49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_END_NAMESPACE
51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_EXTERN_RANGE_ERRORS)
53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  include <stl/_range_errors.c>
54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif /* _STLP_RANGE_ERRORS_H */
57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// Local Variables:
59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// mode:C++
60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// End:
61