exc.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
- /*-------------------------------------------------------------------------
- *
- * exc.h
- * POSTGRES exception handling definitions.
- *
- *
- * Copyright (c) 1994, Regents of the University of California
- *
- * $Id: exc.h,v 1.15 1999/02/13 23:22:18 momjian Exp $
- *
- *-------------------------------------------------------------------------
- */
- #ifndef EXC_H
- #define EXC_H
- #include <setjmp.h>
- #include "config.h"
- extern char *ExcFileName;
- extern Index ExcLineNumber;
- /*
- * ExcMessage and Exception are now defined in c.h
- */
- #if defined(JMP_BUF)
- typedef jmp_buf ExcContext;
- #else
- typedef sigjmp_buf ExcContext;
- #endif
- typedef Exception *ExcId;
- typedef long ExcDetail;
- typedef char *ExcData;
- typedef struct ExcFrame
- {
- struct ExcFrame *link;
- ExcContext context;
- ExcId id;
- ExcDetail detail;
- ExcData data;
- ExcMessage message;
- } ExcFrame;
- extern ExcFrame *ExcCurFrameP;
- /* These are not used anywhere 1998/6/15 */
- #define ExcBegin()
- do {
- ExcFrame exception;燶
-
- exception.link = ExcCurFrameP;
- if (sigsetjmp(exception.context, 1) == 0)
- {
- ExcCurFrameP = &exception;
- #define ExcExcept()
- }
- ExcCurFrameP = exception.link;
- }
- else
- {
- {
- #define ExcEnd()
- }
- }
- } while(0)
- #define raise4(x, t, d, message)
- ExcRaise(&(x), (ExcDetail)(t), (ExcData)(d), (ExcMessage)(message))
- #define reraise()
- raise4(*exception.id,exception.detail,exception.data,exception.message)
- typedef void ExcProc (Exception *, ExcDetail, ExcData, ExcMessage);
- /*
- * prototypes for functions in exc.c
- */
- extern void EnableExceptionHandling(bool on);
- extern void ExcRaise(Exception *excP,
- ExcDetail detail,
- ExcData data,
- ExcMessage message);
- /*
- * prototypes for functions in excabort.c
- */
- extern void ExcAbort(const Exception *excP, ExcDetail detail, ExcData data,
- ExcMessage message);
- #endif /* EXC_H */