00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef _STLP_RANGE_ERRORS_H
00016 #define _STLP_RANGE_ERRORS_H
00017
00018
00019
00020
00021
00022
00023
00024 #if defined(_STLP_CAN_THROW_RANGE_ERRORS) && defined(_STLP_USE_EXCEPTIONS) \
00025 && !defined(_STLP_DONT_THROW_RANGE_ERRORS)
00026 # define _STLP_THROW_RANGE_ERRORS
00027 #endif
00028
00029
00030
00031 #if defined ( _STLP_OWN_IOSTREAMS ) && ! defined (_STLP_EXTERN_RANGE_ERRORS)
00032 # define _STLP_EXTERN_RANGE_ERRORS
00033 # endif
00034
00035 #if defined (_STLP_EXTERN_RANGE_ERRORS)
00036 _STLP_BEGIN_NAMESPACE
00037 void _STLP_DECLSPEC _STLP_CALL __stl_throw_range_error(const char* __msg);
00038 void _STLP_DECLSPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg);
00039 void _STLP_DECLSPEC _STLP_CALL __stl_throw_length_error(const char* __msg);
00040 void _STLP_DECLSPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg);
00041 void _STLP_DECLSPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg);
00042 _STLP_END_NAMESPACE
00043 #else
00044
00045 #if defined(_STLP_THROW_RANGE_ERRORS)
00046 # ifndef _STLP_STDEXCEPT
00047 # include <stdexcept>
00048 # endif
00049 # ifndef _STLP_STRING
00050 # include <string>
00051 # endif
00052 # define _STLP_THROW_MSG(ex,msg) throw ex(string(msg))
00053 #else
00054 # if defined (_STLP_WINCE)
00055 # define _STLP_THROW_MSG(ex,msg) TerminateProcess(GetCurrentProcess(), 0)
00056 # else
00057 # include <cstdlib>
00058 # include <cstdio>
00059 # define _STLP_THROW_MSG(ex,msg) puts(msg),_STLP_ABORT()
00060 # endif
00061 #endif
00062
00063
00064
00065
00066 _STLP_BEGIN_NAMESPACE
00067 inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_range_error(const char* __msg) {
00068 _STLP_THROW_MSG(range_error, __msg);
00069 }
00070
00071 inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg) {
00072 _STLP_THROW_MSG(out_of_range, __msg);
00073 }
00074
00075 inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_length_error(const char* __msg) {
00076 _STLP_THROW_MSG(length_error, __msg);
00077 }
00078
00079 inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg) {
00080 _STLP_THROW_MSG(invalid_argument, __msg);
00081 }
00082
00083 inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg) {
00084 _STLP_THROW_MSG(overflow_error, __msg);
00085 }
00086 _STLP_END_NAMESPACE
00087
00088 # undef _STLP_THROW_MSG
00089
00090 # endif
00091
00092
00093 #endif
00094
00095
00096
00097