home *** CD-ROM | disk | FTP | other *** search
/ RISCWORLD 7 / RISCWORLD_VOL7.iso / Software / Issue4 / SDL / gcc346 / !gcc / include / libscl / h / setjmp < prev    next >
Encoding:
Text File  |  2006-09-17  |  2.5 KB  |  64 lines

  1. /* setjmp.h standard header for the RISC OS SharedCLibrary.
  2.    Copyright (c) 1997-2005 Nick Burrett
  3.    All rights reserved.
  4.  
  5.    Redistribution and use in source and binary forms, with or without
  6.    modification, are permitted provided that the following conditions
  7.    are met:
  8.    1. Redistributions of source code must retain the above copyright
  9.       notice, this list of conditions and the following disclaimer.
  10.    2. Redistributions in binary form must reproduce the above copyright
  11.       notice, this list of conditions and the following disclaimer in the
  12.       documentation and/or other materials provided with the distribution.
  13.    3. The name of the author may not be used to endorse or promote products
  14.       derived from this software without specific prior written permission.
  15.  
  16.    THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  17.    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  18.    OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  19.    IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  20.    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  21.    NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  22.    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  23.    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  24.    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  25.    THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
  26.  
  27. #ifndef __SETJMP_H
  28. #define __SETJMP_H
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. /* Objects of type jmp_buf hold the state information to be
  35.    restored by a non-local exit.  */
  36. #ifdef __JMP_BUF_SIZE
  37. typedef int jmp_buf[__JMP_BUF_SIZE];
  38. #else
  39. typedef int jmp_buf[22];
  40. #endif
  41.  
  42. /* setjmp stores information about the execution state of the
  43.    program in 'state' and returns zero.  If longjmp is later
  44.    used to perform a non-local exit to this 'state', setjmp
  45.    returns a nonzero value.  */
  46. extern int setjmp (jmp_buf __state);
  47.  
  48. #ifdef __STDC__
  49. /* ANSI states that setjmp must be a macro.  */
  50. #define setjmp(jmp_buf) (setjmp(jmp_buf))
  51. #endif
  52.  
  53. /* Restore the current execution to the state saved in 'state'.
  54.    Returning from setjmp by means of longjmp returns 'value'
  55.    argument that was passed to longjmp rather than 0.  If 'value'
  56.    is 0, setjmp returns 1.  */
  57. extern void longjmp (jmp_buf __state, int __value) __attribute__ ((__noreturn__));
  58.  
  59. #ifdef __cplusplus
  60. }
  61. #endif
  62.  
  63. #endif
  64.