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