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