exc.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * exc.h
  4.  *   POSTGRES exception handling definitions.
  5.  *
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  * $Id: exc.h,v 1.15 1999/02/13 23:22:18 momjian Exp $
  10.  *
  11.  *-------------------------------------------------------------------------
  12.  */
  13. #ifndef EXC_H
  14. #define EXC_H
  15. #include <setjmp.h>
  16. #include "config.h"
  17. extern char *ExcFileName;
  18. extern Index ExcLineNumber;
  19. /*
  20.  * ExcMessage and Exception are now defined in c.h
  21.  */
  22. #if defined(JMP_BUF)
  23. typedef jmp_buf ExcContext;
  24. #else
  25. typedef sigjmp_buf ExcContext;
  26. #endif
  27. typedef Exception *ExcId;
  28. typedef long ExcDetail;
  29. typedef char *ExcData;
  30. typedef struct ExcFrame
  31. {
  32. struct ExcFrame *link;
  33. ExcContext context;
  34. ExcId id;
  35. ExcDetail detail;
  36. ExcData data;
  37. ExcMessage message;
  38. } ExcFrame;
  39. extern ExcFrame *ExcCurFrameP;
  40. /* These are not used anywhere 1998/6/15 */
  41. #define ExcBegin() 
  42. do { 
  43. ExcFrame exception;燶
  44. exception.link = ExcCurFrameP; 
  45. if (sigsetjmp(exception.context, 1) == 0) 
  46. ExcCurFrameP = &exception;
  47. #define ExcExcept() 
  48. ExcCurFrameP = exception.link; 
  49. else 
  50. {
  51. #define ExcEnd() 
  52. } while(0)
  53. #define raise4(x, t, d, message) 
  54. ExcRaise(&(x), (ExcDetail)(t), (ExcData)(d), (ExcMessage)(message))
  55. #define reraise() 
  56. raise4(*exception.id,exception.detail,exception.data,exception.message)
  57. typedef void ExcProc (Exception *, ExcDetail, ExcData, ExcMessage);
  58. /*
  59.  * prototypes for functions in exc.c
  60.  */
  61. extern void EnableExceptionHandling(bool on);
  62. extern void ExcRaise(Exception *excP,
  63.  ExcDetail detail,
  64.  ExcData data,
  65.  ExcMessage message);
  66. /*
  67.  * prototypes for functions in excabort.c
  68.  */
  69. extern void ExcAbort(const Exception *excP, ExcDetail detail, ExcData data,
  70.  ExcMessage message);
  71. #endif  /* EXC_H */