stdexcep
上传用户:nizebo
上传日期:2022-05-14
资源大小:882k
文件大小:2k
源码类别:

STL

开发平台:

Visual C++

  1. /*
  2.  * Copyright (c) 1997
  3.  * Silicon Graphics Computer Systems, Inc.
  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. #ifndef __SGI_STDEXCEPT
  14. #define __SGI_STDEXCEPT
  15. #include <stl_exception.h>
  16. #if defined(__STL_USE_EXCEPTIONS) || 
  17.     !(defined(_MIPS_SIM) && defined(_ABIO32) && _MIPS_SIM == _ABIO32)
  18. #include <stl_string_fwd.h>
  19. __STL_BEGIN_NAMESPACE
  20. class __Named_exception : public __STL_EXCEPTION_BASE {
  21. public:
  22.   __Named_exception(const string& __str) {
  23.     strncpy(_M_name, __get_c_string(__str), _S_bufsize);
  24.     _M_name[_S_bufsize - 1] = '';
  25.   }
  26.   virtual const char* what() const __STL_NOTHROW { return _M_name; }
  27. private:
  28.   enum { _S_bufsize = 256 };
  29.   char _M_name[_S_bufsize];
  30. };
  31. class logic_error : public __Named_exception {
  32. public:
  33.   logic_error(const string& __s) : __Named_exception(__s) {}
  34. };
  35. class runtime_error : public __Named_exception {
  36. public:
  37.   runtime_error(const string& __s) : __Named_exception(__s) {}
  38. };
  39. class domain_error : public logic_error {
  40. public:
  41.   domain_error(const string& __arg) : logic_error(__arg) {}
  42. };
  43. class invalid_argument : public logic_error {
  44. public:
  45.   invalid_argument(const string& __arg) : logic_error(__arg) {}
  46. };
  47. class length_error : public logic_error {
  48. public:
  49.   length_error(const string& __arg) : logic_error(__arg) {}
  50. };
  51. class out_of_range : public logic_error {
  52. public:
  53.   out_of_range(const string& __arg) : logic_error(__arg) {}
  54. };
  55. class range_error : public runtime_error {
  56. public:
  57.   range_error(const string& __arg) : runtime_error(__arg) {}
  58. };
  59. class overflow_error : public runtime_error {
  60. public:
  61.   overflow_error(const string& __arg) : runtime_error(__arg) {}
  62. };
  63. class underflow_error : public runtime_error {
  64. public:
  65.   underflow_error(const string& __arg) : runtime_error(__arg) {}
  66. };
  67. __STL_END_NAMESPACE
  68. #ifndef __SGI_STL_STRING
  69. #include <string>
  70. #endif
  71. #endif /* Not o32, and no exceptions */
  72. #endif /* __SGI_STDEXCEPT */
  73. // Local Variables:
  74. // mode:C++
  75. // End: