#ifndef __SETJMP_LOADED #define __SETJMP_LOADED 1 #ifndef __SETJMP_PROCESSED #define __SETJMP_PROCESSED /**************************************************************************** ** ** Copyright 2005 Hewlett-Packard Development Company, L.P. ** ** Confidential computer software. Valid license from HP and/or ** its subsidiaries required for possession, use, or copying. ** ** Consistent with FAR 12.211 and 12.212, Commercial Computer Software, ** Computer Software Documentation, and Technical Data for Commercial ** Items are licensed to the U.S. Government under vendor's standard ** commercial license. ** ** Neither HP nor any of its subsidiaries shall be liable for technical ** or editorial errors or omissions contained herein. The information ** in this document is provided "as is" without warranty of any kind and ** is subject to change without notice. The warranties for HP products ** are set forth in the express limited warranty statements accompanying ** such products. Nothing herein should be construed as constituting an ** additional warranty. ** ***************************************************************************** */ #pragma __nostandard #include #ifdef __cplusplus extern "C" { #define __decc$unknown_params ... #else #define __decc$unknown_params #endif #if __INITIAL_POINTER_SIZE # pragma __pointer_size __save # if __CRTL_VER >= 70301000 # pragma __pointer_size 64 # else # pragma __pointer_size 32 # endif #endif #ifdef __NAMESPACE_STD namespace std { #endif /* ** Define data structures */ #if defined(__VAX) typedef int jmp_buf [15]; # define __JMP_BUF_TYPE int * #else # pragma __member_alignment __save # pragma __member_alignment # if defined(__FAST_SETJMP) || defined(__UNIX_SETJMP) || defined(__FAST_POSIX_SETJMP) # if defined(__ALPHA) typedef __int64 jmp_buf [25]; # else typedef __int64 jmp_buf [450]; /* same as invo block for now */ # endif # else # if defined(__ALPHA) typedef __int64 jmp_buf [68]; /* 68 quadwords - standard invo cntxt block */ # else typedef __int64 jmp_buf [450]; /* 450 quadwords - standard invo cntxt block */ # endif # endif # pragma __member_alignment __restore # define __JMP_BUF_TYPE __int64 * #endif #ifdef __NAMESPACE_STD } /* namespace std */ #endif /* ** This section is for functions and declarations which are pointer-size ** dependent. */ #if (defined(__ALPHA) || defined(__ia64)) # if defined(__FAST_SETJMP) || defined(__UNIX_SETJMP) || defined(__FAST_POSIX_SETJMP) void decc$fast_longjmp(__int64 *__env, int __retval); # if defined(__FAST_POSIX_SETJMP) # define longjmp(env, retval) decc$fast_longjmp(env, retval ? retval : 1 ) # else # define longjmp(env, retval) decc$fast_longjmp(env, retval) # endif # if defined(__ALPHA) int decc$setjmp (__int64 *__env); # define setjmp(env) decc$setjmp(env) # else int decc$fast_setjmp (__int64 *__env); # define setjmp(env) decc$fast_setjmp(env) # endif # else void c$$establish(__void_ptr32, unsigned short); # if defined(__ALPHA) # ifdef __INITIAL_POINTER_SIZE # pragma __required_pointer_size __save # pragma __required_pointer_size __long # endif int LIB$GET_CURRENT_INVO_CONTEXT(__int64 *__invo_context); # ifdef __INITIAL_POINTER_SIZE # pragma __required_pointer_size __restore # endif # define setjmp(env) (c$$establish(0, 32 ),LIB$GET_CURRENT_INVO_CONTEXT(env)) # else int decc$setjmp1 (__int64 *__env); # define setjmp(env) (c$$establish(0,32),decc$setjmp1(env)) # endif # endif #else int setjmp (jmp_buf __env); #endif #ifdef __NAMESPACE_STD namespace std { #endif void (longjmp) (jmp_buf __env, int __val); #ifdef __NAMESPACE_STD } /* namespace std */ #endif #if __CRTL_VER >= 70000000 # if _POSIX_C_SOURCE >= 1 || !defined _ANSI_C_SOURCE # if (defined(__ALPHA)) typedef __int64 __sigjmp_buf[70]; # elif (defined(__ia64)) typedef __int64 __sigjmp_buf[452]; # else typedef int __sigjmp_buf[18]; # endif # if !defined _DECC_V4_SOURCE typedef __sigjmp_buf sigjmp_buf; # endif void siglongjmp (__sigjmp_buf __env, int __val); int sigsetjmp (__sigjmp_buf __env, int __savemask); # if (defined(__ALPHA) || defined(__ia64)) void c$$establish(__void_ptr32, unsigned short); # define sigsetjmp( p1, p2 ) ( c$$establish(0,32), (sigsetjmp)(p1,p2) ) # endif # endif #endif /* ** Restore the users pointer context */ #if __INITIAL_POINTER_SIZE # pragma __pointer_size __restore #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __SETJMP_PROCESSED */ #if defined(__NAMESPACE_STD) && !defined(__NAMESPACE_STD_ONLY) # ifndef __USING_SETJMP_NAMES # define __USING_SETJMP_NAMES using std::jmp_buf; # if !defined(__FAST_SETJMP) && !defined(__UNIX_SETJMP) && !defined(__FAST_POSIX_SETJMP) using std::longjmp; # endif # endif #endif #endif /* __SETJMP_LOADED */