home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / stlpt453.zip / STLport-4.5.3 / stlport / stl / _range_errors.h < prev    next >
C/C++ Source or Header  |  2001-05-30  |  3KB  |  98 lines

  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.  
  31. #if defined ( _STLP_OWN_IOSTREAMS  ) && ! defined (_STLP_EXTERN_RANGE_ERRORS) 
  32. #  define _STLP_EXTERN_RANGE_ERRORS
  33. # endif
  34.  
  35. #if defined (_STLP_EXTERN_RANGE_ERRORS)
  36. _STLP_BEGIN_NAMESPACE
  37. void  _STLP_DECLSPEC _STLP_CALL __stl_throw_range_error(const char* __msg);
  38. void  _STLP_DECLSPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg);
  39. void  _STLP_DECLSPEC _STLP_CALL __stl_throw_length_error(const char* __msg);
  40. void  _STLP_DECLSPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg);
  41. void  _STLP_DECLSPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg);
  42. _STLP_END_NAMESPACE
  43. #else
  44.  
  45. #if defined(_STLP_THROW_RANGE_ERRORS)
  46. # ifndef _STLP_STDEXCEPT
  47. #  include <stdexcept>
  48. # endif
  49. # ifndef _STLP_STRING
  50. #  include <string>
  51. # endif
  52. # define _STLP_THROW_MSG(ex,msg)  throw ex(string(msg))
  53. #else
  54. # if defined (_STLP_WINCE)
  55. #  define _STLP_THROW_MSG(ex,msg)  TerminateProcess(GetCurrentProcess(), 0)
  56. # else
  57. #  include <cstdlib>
  58. #  include <cstdio>
  59. #  define _STLP_THROW_MSG(ex,msg)  puts(msg),_STLP_ABORT()
  60. # endif
  61. #endif
  62.  
  63. // For wrapper mode and throwing range errors, include the
  64. // stdexcept header and throw the appropriate exceptions directly.
  65.  
  66. _STLP_BEGIN_NAMESPACE
  67. inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_range_error(const char* __msg) { 
  68.   _STLP_THROW_MSG(range_error, __msg); 
  69. }
  70.  
  71. inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg) { 
  72.   _STLP_THROW_MSG(out_of_range, __msg); 
  73. }
  74.  
  75. inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_length_error(const char* __msg) { 
  76.   _STLP_THROW_MSG(length_error, __msg); 
  77. }
  78.  
  79. inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg) { 
  80.   _STLP_THROW_MSG(invalid_argument, __msg); 
  81. }
  82.  
  83. inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg) { 
  84.   _STLP_THROW_MSG(overflow_error, __msg); 
  85. }
  86. _STLP_END_NAMESPACE
  87.  
  88. # undef _STLP_THROW_MSG
  89.  
  90. # endif /* EXTERN_RANGE_ERRORS */
  91.  
  92.  
  93. #endif /* _STLP_RANGE_ERRORS_H */
  94.  
  95. // Local Variables:
  96. // mode:C++
  97. // End:
  98.