home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / EXCEPT.H < prev    next >
C/C++ Source or Header  |  1997-02-28  |  3KB  |  137 lines

  1. /*  except.h
  2.  
  3.     Definitions for exception handling
  4.  
  5. */
  6.  
  7. /*
  8.  *      C/C++ Run Time Library - Version 8.0
  9.  *
  10.  *      Copyright (c) 1992, 1997 by Borland International
  11.  *      All Rights Reserved.
  12.  *
  13.  */
  14. /* $Revision:   8.1  $ */
  15.  
  16. #ifndef __cplusplus
  17. #error Must use C++ for except.h
  18. #endif
  19.  
  20. #ifndef __EXCEPT_H
  21. #define __EXCEPT_H
  22.  
  23. #if !defined(___DEFS_H)
  24. #include <_defs.h>
  25. #endif
  26.  
  27. #if !defined(___STDLIB_H)
  28. #include <stdlib.h>
  29. #endif
  30.  
  31.  
  32. #if !defined(RC_INVOKED)
  33.  
  34. #pragma pack(push, 1)
  35.  
  36. #if defined(__BCOPT__)
  37. #if !defined(_RTL_ALLOW_po) && !defined(__FLAT__)
  38. #pragma option -po-     // disable Object data calling convention
  39. #endif
  40. #endif
  41.  
  42. #if !defined(__TINY__)
  43. #pragma option -RT
  44. #endif
  45.  
  46. #pragma option -Vo-     // set standard C++ options
  47.  
  48. #if defined(__STDC__)
  49. #pragma warn -nak
  50. #endif
  51.  
  52. #endif  /* !RC_INVOKED */
  53.  
  54.  
  55. typedef void (_RTLENTRY *terminate_function)();
  56. typedef void (_RTLENTRY *unexpected_function)();
  57.  
  58. terminate_function  _RTLENTRY set_terminate(terminate_function);
  59. unexpected_function _RTLENTRY set_unexpected(unexpected_function);
  60.  
  61. void  _RTLENTRY terminate();
  62. void  _RTLENTRY unexpected();
  63.  
  64. extern  char _FAR * _RTLENTRY __ThrowFileName();
  65. extern  unsigned    _RTLENTRY __ThrowLineNumber();
  66. extern  char _FAR * _RTLENTRY __ThrowExceptionName();
  67.  
  68. #define  __throwFileName      __ThrowFileName()
  69. #define  __throwLineNumber    __ThrowLineNumber()
  70. #define  __throwExceptionName __ThrowExceptionName()
  71.  
  72. class _EXPCLASS string;
  73.  
  74. class _EXPCLASS xmsg
  75. {
  76. public:
  77.     _RTLENTRY xmsg(const string _FAR &msg);
  78.     _RTLENTRY xmsg(const xmsg _FAR &msg);
  79.     _RTLENTRY ~xmsg();
  80.  
  81.     const string _FAR & _RTLENTRY why() const;
  82.     void                _RTLENTRY raise() throw(xmsg);
  83.     xmsg&               _RTLENTRY operator=(const xmsg _FAR &src);
  84.  
  85. private:
  86.     string _FAR *str;
  87. };
  88.  
  89. inline const string _FAR & _RTLENTRY xmsg::why() const
  90. {
  91.     return *str;
  92. };
  93.  
  94. class _EXPCLASS xalloc : public xmsg
  95. {
  96. public:
  97.     _RTLENTRY xalloc(const string _FAR &msg, size_t size);
  98.  
  99.     size_t _RTLENTRY requested() const;
  100.     void   _RTLENTRY raise() throw(xalloc);
  101.  
  102. private:
  103.     size_t siz;
  104. };
  105.  
  106. inline size_t _RTLENTRY xalloc::requested() const
  107. {
  108.     return siz;
  109. }
  110.  
  111.  
  112. #if !defined(RC_INVOKED)
  113.  
  114. #if defined(__STDC__)
  115. #pragma warn .nak
  116. #endif
  117.  
  118. #pragma option -Vo.     // restore user C++ options
  119.  
  120. #if !defined(__TINY__)
  121. #pragma option -RT.
  122. #endif
  123.  
  124. #if defined(__BCOPT__)
  125. #if !defined(_RTL_ALLOW_po) && !defined(__FLAT__)
  126. #pragma option -po.     // restore Object data calling convention
  127. #endif
  128. #endif
  129.  
  130. /* restore default packing */
  131. #pragma pack(pop)
  132.  
  133. #endif  /* !RC_INVOKED */
  134.  
  135.  
  136. #endif  // __EXCEPT_H
  137.