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#if defined(_STLP_THROW_RANGE_ERRORS)
16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if defined (_STLP_WHOLE_NATIVE_STD) && defined (_STLP_DONT_REDEFINE_STD)
17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// In this mode we are going to throw native exception so that catch of
18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// exception like std::runtime_error for instance will also catch exception
19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// thrown by STLport containers like stlport::vector or stlport::string.
20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include <stdexcept>
21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include <string>
22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_THROW_MSG(ex,msg)  throw std::ex(msg)
23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  else
24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    if defined (__BUILDING_STLPORT)
25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      include <stdexcept>
26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      include <string>
27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    else
28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      ifndef _STLP_INTERNAL_STDEXCEPT
29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#        include <stl/_stdexcept.h>
30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      endif
31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      ifndef _STLP_INTERNAL_STRING_H
32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#        include <stl/_string.h>
33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      endif
34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    endif
35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_THROW_MSG(ex,msg)  throw ex(msg)
36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#else
38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if defined (__BUILDING_STLPORT)
39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include <cstdlib>
40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include <cstdio>
41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  else
42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    ifndef _STLP_INTERNAL_CSTDLIB
43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      include <stl/_cstdlib.h>
44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    endif
45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    ifndef _STLP_INTERNAL_CSTDIO
46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      include <stl/_cstdio.h>
47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    endif
48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_THROW_MSG(ex,msg)  puts(msg),_STLP_ABORT()
50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// For mode without library and throwing range errors, include the
53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// stdexcept header and throw the appropriate exceptions directly.
54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_EXTERN_RANGE_ERRORS)
56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_THROW_FUNCT_SPEC void _STLP_DECLSPEC
57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#else
58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_THROW_FUNCT_SPEC inline void
59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_BEGIN_NAMESPACE
62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_THROW_FUNCT_SPEC _STLP_CALL __stl_throw_runtime_error(const char* __msg)
64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ _STLP_THROW_MSG(runtime_error, __msg); }
65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_THROW_FUNCT_SPEC _STLP_CALL __stl_throw_range_error(const char* __msg)
67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ _STLP_THROW_MSG(range_error, __msg); }
68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_THROW_FUNCT_SPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg)
70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ _STLP_THROW_MSG(out_of_range, __msg); }
71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_THROW_FUNCT_SPEC _STLP_CALL __stl_throw_length_error(const char* __msg)
73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ _STLP_THROW_MSG(length_error, __msg); }
74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_THROW_FUNCT_SPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg)
76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ _STLP_THROW_MSG(invalid_argument, __msg); }
77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_THROW_FUNCT_SPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg)
79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ _STLP_THROW_MSG(overflow_error, __msg); }
80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_END_NAMESPACE
82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#undef _STLP_THROW_FUNCT_SPEC
84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#undef _STLP_THROW_MSG
85