diff --git a/collects/racket/place.rkt b/collects/racket/place.rkt
index 3250f31a45..81389c35d4 100644
--- a/collects/racket/place.rkt
+++ b/collects/racket/place.rkt
@@ -21,7 +21,7 @@
place-sleep
place-wait
place-kill
- place-break
+ (rename-out [place-break/opt place-break])
place-channel
place-channel-put
place-channel-get
@@ -59,7 +59,7 @@
(define-pl-func place-sleep p)
(define-pl-func place-wait p)
(define-pl-func place-kill p)
-(define-pl-func place-break p)
+(define-pl-func place-break p kind)
(define-pl-func place-channel-put p msg)
(define-pl-func place-channel-get p)
(define-pl-func place-channel? p)
@@ -67,6 +67,10 @@
(define-pl-func place-message-allowed? p)
(define-pl-func place-dead-evt p)
+(define place-break/opt
+ (let ([place-break (lambda (p [kind #f]) (place-break p kind))])
+ place-break))
+
(define (pump-place p pin pout perr in out err)
(cond
[(pl-place-enabled?)
diff --git a/collects/racket/place/private/th-place.rkt b/collects/racket/place/private/th-place.rkt
index ffb1714e24..bf44ad3a9e 100644
--- a/collects/racket/place/private/th-place.rkt
+++ b/collects/racket/place/private/th-place.rkt
@@ -60,7 +60,7 @@
(define (th-place-sleep n) (sleep n))
(define (th-place-wait pl) (thread-wait (TH-place-th pl)) 0)
(define (th-place-kill pl) (custodian-shutdown-all (TH-place-cust pl)))
-(define (th-place-break pl) (break-thread (TH-place-th pl)))
+(define (th-place-break pl kind) (break-thread (TH-place-th pl) kind))
(define (th-place-dead-evt pl) (thread-dead-evt (TH-place-th pl)))
(define (th-place-channel)
(define-values (as ar) (make-th-async-channel))
diff --git a/collects/racket/private/kernstruct.rkt b/collects/racket/private/kernstruct.rkt
index 14401db4ab..f67eb5db87 100644
--- a/collects/racket/private/kernstruct.rkt
+++ b/collects/racket/private/kernstruct.rkt
@@ -402,6 +402,41 @@
'(#f #f #f)
(quote-syntax exn)))
(λ () (quote-syntax kernel:exn:break)))))
+ (begin
+ (#%require
+ (rename '#%kernel kernel:exn:break:terminate exn:break:terminate))
+ (define make-exn:break:terminate kernel:exn:break:terminate)
+ (define-syntax exn:break:terminate
+ (make-self-ctr-struct-info
+ (λ ()
+ (list
+ (quote-syntax struct:exn:break:terminate)
+ (quote-syntax make-exn:break:terminate)
+ (quote-syntax exn:break:terminate?)
+ (list
+ (quote-syntax exn:break-continuation)
+ (quote-syntax exn-continuation-marks)
+ (quote-syntax exn-message))
+ '(#f #f #f)
+ (quote-syntax exn:break)))
+ (λ () (quote-syntax kernel:exn:break:terminate)))))
+ (begin
+ (#%require (rename '#%kernel kernel:exn:break:hang-up exn:break:hang-up))
+ (define make-exn:break:hang-up kernel:exn:break:hang-up)
+ (define-syntax exn:break:hang-up
+ (make-self-ctr-struct-info
+ (λ ()
+ (list
+ (quote-syntax struct:exn:break:hang-up)
+ (quote-syntax make-exn:break:hang-up)
+ (quote-syntax exn:break:hang-up?)
+ (list
+ (quote-syntax exn:break-continuation)
+ (quote-syntax exn-continuation-marks)
+ (quote-syntax exn-message))
+ '(#f #f #f)
+ (quote-syntax exn:break)))
+ (λ () (quote-syntax kernel:exn:break:hang-up)))))
(begin
(#%require (rename '#%kernel kernel:arity-at-least arity-at-least))
(define make-arity-at-least kernel:arity-at-least)
diff --git a/collects/scribblings/reference/breaks.scrbl b/collects/scribblings/reference/breaks.scrbl
index 38accb0d51..de43a6ddb2 100644
--- a/collects/scribblings/reference/breaks.scrbl
+++ b/collects/scribblings/reference/breaks.scrbl
@@ -7,15 +7,28 @@
A @deftech{break} is an asynchronous exception, usually triggered
through an external source controlled by the user, or through the
-@racket[break-thread] procedure. A break exception can only occur in a
+@racket[break-thread] procedure. For example, the user may type Ctl-C
+in a terminal to trigger a break. On some platforms, the Racket
+process may receive @as-index{@tt{SIGINT}}, @as-index{@tt{SIGHUP}},
+or @as-index{@tt{SIGTERM}}; the latter two correspond to hang-up and
+terminate breaks as reflected by @racket[exn:break:hang-up] and
+@racket[exn:break:terminate], respectively. Multiple breaks may be
+collapsed into a single exception, and multiple breaks of different
+kinds may be collapsed to a single ``strongest'' break, where a
+hang-up break is stronger than a interrupt break, and a terminate
+break is stronger than a hang-up break.
+
+A break exception can only occur in a
thread while breaks are enabled. When a break is detected and enabled,
-the @exnraise[exn:break] in the thread sometime afterward; if breaking
+the @racket[exn:break] (or @racket[exn:break:hang-up] or
+@racket[exn:break:terminate]) exception is raised
+in the thread sometime afterward; if breaking
is disabled when @racket[break-thread] is called, the break is
suspended until breaking is again enabled for the thread. While a
thread has a suspended break, additional breaks are ignored.
Breaks are enabled through the @racket[break-enabled] parameter-like
-procedure, and through the @racket[parameterize-break] form, which is
+procedure and through the @racket[parameterize-break] form, which is
analogous to @racket[parameterize]. The @racket[break-enabled]
procedure does not represent a parameter to be used with
@racket[parameterize], because changing the break-enabled state of a
diff --git a/collects/scribblings/reference/exns.scrbl b/collects/scribblings/reference/exns.scrbl
index 021f4692ca..010804337c 100644
--- a/collects/scribblings/reference/exns.scrbl
+++ b/collects/scribblings/reference/exns.scrbl
@@ -406,8 +406,12 @@ it returns, an exception is raised (to be handled by an exception
handler that reports both the original and newly raised exception).
The default uncaught-exception handler prints an error message using
-the current @tech{error display handler} (see @racket[error-display-handler])
-and then escapes by calling the current @tech{error escape handler} (see
+the current @tech{error display handler} (see @racket[error-display-handler]).
+If the argument to the handler is an instance of @racket[exn:break:hang-up]
+or @racket[exn:break:terminate], the default uncaught-exception handler
+then calls the @tech{exit handler} with @racket[1], which normally exits
+or escapes. For any argument, the default uncaught-exception handler
+then escapes by calling the current @tech{error escape handler} (see
@racket[error-escape-handler]). The call to each handler is
@racket[parameterize]d to set @racket[error-display-handler] to the
default @tech{error display handler}, and it is @racket[parameterize-break]ed
@@ -699,6 +703,20 @@ Raised asynchronously (when enabled) in response to a break request.
The @racket[continuation] field can be used by a handler to resume the
interrupted computation.}
+@defstruct[(exn:break:hang-up exn:break) ()
+ #:inspector #f]{
+
+Raised asynchronously for hang-up breaks. The default
+ @tech{uncaught-exception handler} reacts to this exception type by
+ calling the @tech{exit handler}.}
+
+@defstruct[(exn:break:terminate exn:break) ()
+ #:inspector #f]{
+
+Raised asynchronously for termination-request breaks. The default
+ @tech{uncaught-exception handler} reacts to this exception type by
+ calling the @tech{exit handler}.}
+
@defthing[prop:exn:srclocs struct-type-property?]{
diff --git a/collects/scribblings/reference/places.scrbl b/collects/scribblings/reference/places.scrbl
index fe9433263f..114fc8a587 100644
--- a/collects/scribblings/reference/places.scrbl
+++ b/collects/scribblings/reference/places.scrbl
@@ -251,8 +251,10 @@ If any pumping threads were created to connect a non-@tech{file-stream
completion value already.}
-@defproc[(place-break [p place?]) void?]{
- Sends place @racket[p] a break signal; see @secref["breakhandler"].
+@defproc[(place-break [p place?]
+ [kind (or/c #f 'hang-up 'terminate) #f])
+ void?]{
+ Sends the main thread of place @racket[p] a break; see @secref["breakhandler"].
}
diff --git a/collects/scribblings/reference/threads.scrbl b/collects/scribblings/reference/threads.scrbl
index 451f0f1717..c5fc3b3ea8 100644
--- a/collects/scribblings/reference/threads.scrbl
+++ b/collects/scribblings/reference/threads.scrbl
@@ -158,10 +158,13 @@ threads. For example, if a thread is killed while extracting a
character from an input port, the character is either completely
consumed or not consumed, and other threads can safely use the port.}
-@defproc[(break-thread [thd thread?]) void?]{
+@defproc[(break-thread [thd thread?]
+ [kind (or/c #f 'hang-up 'terminate) #f])
+ void?]{
@index['("threads" "breaking")]{Registers} a break with the specified
-thread. If breaking is disabled in @racket[thd], the break will be
+thread, where @racket[kind] optionally indicates the kind of break to
+register. If breaking is disabled in @racket[thd], the break will be
ignored until breaks are re-enabled (see @secref["breakhandler"]).}
@defproc[(sleep [secs (>=/c 0) 0]) void?]{
diff --git a/collects/tests/racket/namespac.rktl b/collects/tests/racket/namespac.rktl
index eeb5ba814a..1d16c5a5cd 100644
--- a/collects/tests/racket/namespac.rktl
+++ b/collects/tests/racket/namespac.rktl
@@ -61,7 +61,9 @@
(mkp "exn:fail:out-of-memory")
(mkp "exn:fail:unsupported")
(mkp "exn:fail:user")
- (mkp "exn:break")))])
+ (mkp "exn:break")
+ (mkp "exn:break:hang-up")
+ (mkp "exn:break:terminate")))])
(test #t 'names
(andmap
(lambda (nv-pair)
diff --git a/collects/tests/racket/place-channel.rkt b/collects/tests/racket/place-channel.rkt
index a83e056419..677f4a5b68 100644
--- a/collects/tests/racket/place-channel.rkt
+++ b/collects/tests/racket/place-channel.rkt
@@ -363,16 +363,26 @@
(place-wait pl))
; test place-break
- (let ([p (place ch
- (with-handlers ([exn:break? (lambda (x) (place-channel-put ch "OK"))])
- (place-channel-put ch "ALIVE")
- (sync never-evt)
- (place-channel-put ch "NOK")))])
-
- (test "ALIVE" place-channel-get p)
- (place-break p)
- (test "OK" place-channel-get p)
- (place-wait p))
+ (let ()
+ (define (go kind)
+ (let ([p (place ch
+ (define kind (place-channel-get ch))
+ (with-handlers ([(case kind
+ [(hang-up) exn:break:hang-up?]
+ [(terminate) exn:break:terminate?]
+ [else exn:break?])
+ (lambda (x) (place-channel-put ch "OK"))])
+ (place-channel-put ch "ALIVE")
+ (sync never-evt)
+ (place-channel-put ch "NOK")))])
+ (place-channel-put p kind)
+ (test "ALIVE" place-channel-get p)
+ (place-break p kind)
+ (test "OK" place-channel-get p)
+ (place-wait p)))
+ (go #f)
+ (go 'hang-up)
+ (go 'terminate))
; test place-dead-evt
(define wbs '())
diff --git a/collects/tests/racket/thread.rktl b/collects/tests/racket/thread.rktl
index 9ad0bd88c2..9b8b514774 100644
--- a/collects/tests/racket/thread.rktl
+++ b/collects/tests/racket/thread.rktl
@@ -187,8 +187,43 @@
(arity-test kill-thread 1 1)
(err/rt-test (kill-thread 5) type?)
-(arity-test break-thread 1 1)
+(arity-test break-thread 1 2)
(err/rt-test (break-thread 5) type?)
+(err/rt-test (break-thread (current-thread) 5) type?)
+
+(err/rt-test (break-thread (current-thread)) exn:break?)
+(err/rt-test (break-thread (current-thread) 'hang-up) exn:break:hang-up?)
+(err/rt-test (break-thread (current-thread) 'terminate) exn:break:terminate?)
+
+(let ([ex? #f]
+ [s (make-semaphore)])
+ (define (go)
+ (exit-handler (lambda (exn)
+ (set! ex? #t)
+ (kill-thread (current-thread))))
+ (error-display-handler void)
+ (semaphore-post s)
+ (sync (make-semaphore)))
+
+ (define t1 (thread go))
+ (semaphore-wait s)
+ (test (void) break-thread t1)
+ (sync t1)
+ (test #f values ex?)
+
+ (define t2 (thread go))
+ (semaphore-wait s)
+ (test (void) break-thread t2 'hang-up)
+ (sync t2)
+ (test #t values ex?)
+ (set! ex? #f)
+
+ (define t3 (thread go))
+ (semaphore-wait s)
+ (test (void) break-thread t3 'terminate)
+ (sync t3)
+ (test #t values ex?)
+ (set! ex? #f))
(arity-test thread-wait 1 1)
(err/rt-test (thread-wait 5) type?)
diff --git a/doc/release-notes/racket/HISTORY.txt b/doc/release-notes/racket/HISTORY.txt
index 64976ed197..257440afe8 100644
--- a/doc/release-notes/racket/HISTORY.txt
+++ b/doc/release-notes/racket/HISTORY.txt
@@ -1,3 +1,8 @@
+Version 5.3.0.20
+Added exn:break:hang-up and exn:break:terminate, added
+ extra argument to break-thread and place-break, and
+ redirect SIGTERM and SIGHUP as breaks
+
Version 5.3.0.16
scribble/base: add items/c
scribble/decode: add spliceof
diff --git a/src/racket/main.c b/src/racket/main.c
index b99baeb248..e2fed6e8e9 100644
--- a/src/racket/main.c
+++ b/src/racket/main.c
@@ -195,6 +195,7 @@ static void *signal_handle;
# ifndef NO_USER_BREAK_HANDLER
static void user_break_hit(int ignore)
+ XFORM_SKIP_PROC
{
scheme_break_main_thread_at(break_handle);
scheme_signal_received_at(signal_handle);
@@ -202,13 +203,33 @@ static void user_break_hit(int ignore)
# ifdef SIGSET_NEEDS_REINSTALL
MZ_SIGSET(SIGINT, user_break_hit);
# endif
-# ifdef MZ_PRECISE_GC
-# ifndef GC_STACK_CALLEE_RESTORE
- /* Restore variable stack. */
- GC_variable_stack = (void **)__gc_var_stack__[0];
-# endif
+}
+
+# ifndef NO_SIGTERM_HANDLER
+static void term_hit(int ignore)
+ XFORM_SKIP_PROC
+{
+ scheme_break_kind_main_thread_at(break_handle, MZEXN_BREAK_TERMINATE);
+ scheme_signal_received_at(signal_handle);
+
+# ifdef SIGSET_NEEDS_REINSTALL
+ MZ_SIGSET(SIGTERM, term_hit);
# endif
}
+# endif
+
+# ifndef NO_SIGHUP_HANDLER
+static void hup_hit(int ignore)
+ XFORM_SKIP_PROC
+{
+ scheme_break_kind_main_thread_at(break_handle, MZEXN_BREAK_HANG_UP);
+ scheme_signal_received_at(signal_handle);
+
+# ifdef SIGSET_NEEDS_REINSTALL
+ MZ_SIGSET(SIGHUP, hup_hit);
+# endif
+}
+# endif
# endif
@@ -352,6 +373,12 @@ static int main_after_stack(void *data)
signal_handle = scheme_get_signal_handle();
# ifndef NO_USER_BREAK_HANDLER
MZ_SIGSET(SIGINT, user_break_hit);
+# ifndef NO_SIGTERM_HANDLER
+ MZ_SIGSET(SIGTERM, term_hit);
+# endif
+# ifndef NO_SIGHUP_HANDLER
+ MZ_SIGSET(SIGHUP, hup_hit);
+# endif
# endif
# ifdef DOS_FILE_SYSTEM
SetConsoleCtrlHandler(ConsoleBreakHandler, TRUE);
diff --git a/src/racket/sconfig.h b/src/racket/sconfig.h
index 3055ae3619..c662022cdd 100644
--- a/src/racket/sconfig.h
+++ b/src/racket/sconfig.h
@@ -595,6 +595,7 @@
# define SIGSET_IS_SIGNAL
# define SIGSET_NEEDS_REINSTALL
+# define NO_SIGHUP_HANDLER
#define USE_WINSOCK_TCP
@@ -1499,7 +1500,12 @@
/* NO_INLINE_KEYWORD indicates that the C compiler doesn't recognize
C's `inline' keyword. */
- /* NO_USER_BREAK_HANDLER turns off handling of INT signal in main.c */
+ /* NO_USER_BREAK_HANDLER turns off handling of SIGINT, SIGTERM, and
+ SIGHUP in main.c */
+
+ /* NO_SIGTERM_HANDLER turns off handling of SIGTERM in main.c */
+
+ /* NO_SIGHUP_HANDLER turns off handling of SIGHUP in main.c */
/* DIR_INCLUDE if there's a
file (mainly for Windows). */
diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc
index 7b26c15cf2..a4691432ef 100644
--- a/src/racket/src/cstartup.inc
+++ b/src/racket/src/cstartup.inc
@@ -1,15 +1,15 @@
{
- SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,49,56,84,0,0,0,0,0,0,0,0,0,
+ SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,48,84,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,14,
-0,19,0,26,0,29,0,36,0,43,0,47,0,60,0,65,0,69,0,74,0,
+0,21,0,34,0,39,0,43,0,46,0,51,0,58,0,62,0,67,0,74,0,
83,0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149,
0,163,0,170,0,192,0,194,0,208,0,19,1,48,1,59,1,70,1,96,1,
129,1,162,1,221,1,21,2,99,2,155,2,160,2,180,2,73,3,93,3,145,
3,211,3,100,4,242,4,40,5,51,5,130,5,0,0,92,7,0,0,69,35,
-37,109,105,110,45,115,116,120,29,11,11,11,64,99,111,110,100,66,108,101,116,
-114,101,99,62,111,114,66,117,110,108,101,115,115,66,100,101,102,105,110,101,63,
-97,110,100,72,112,97,114,97,109,101,116,101,114,105,122,101,64,108,101,116,42,
-63,108,101,116,64,119,104,101,110,68,104,101,114,101,45,115,116,120,29,11,11,
+37,109,105,110,45,115,116,120,29,11,11,11,66,108,101,116,114,101,99,72,112,
+97,114,97,109,101,116,101,114,105,122,101,64,108,101,116,42,63,97,110,100,62,
+111,114,64,119,104,101,110,66,100,101,102,105,110,101,63,108,101,116,64,99,111,
+110,100,66,117,110,108,101,115,115,68,104,101,114,101,45,115,116,120,29,11,11,
11,65,113,117,111,116,101,29,94,2,15,68,35,37,107,101,114,110,101,108,11,
29,94,2,15,68,35,37,112,97,114,97,109,122,11,62,105,102,65,98,101,103,
105,110,63,115,116,120,61,115,70,108,101,116,45,118,97,108,117,101,115,61,120,
@@ -17,8 +17,8 @@
1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,
121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,
240,146,86,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,
-16,20,2,10,2,2,2,3,2,2,2,5,2,2,2,6,2,2,2,7,2,
-2,2,8,2,2,2,9,2,2,2,4,2,2,2,11,2,2,2,12,2,2,
+16,20,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,
+2,2,8,2,2,2,9,2,2,2,10,2,2,2,11,2,2,2,12,2,2,
97,37,11,8,240,146,86,0,0,93,159,2,16,36,37,16,2,2,13,161,2,
2,37,2,13,2,2,2,13,96,11,11,8,240,146,86,0,0,16,0,96,38,
11,8,240,146,86,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,
@@ -28,13 +28,13 @@
89,2,18,248,22,104,199,249,22,79,2,19,248,22,106,201,12,27,248,22,81,
248,22,163,4,196,28,248,22,87,193,20,14,159,37,36,37,28,248,22,87,248,
22,81,194,248,22,80,193,249,22,156,4,80,158,39,36,251,22,89,2,18,248,
-22,80,199,249,22,79,2,8,248,22,81,201,11,18,100,10,13,16,6,36,2,
+22,80,199,249,22,79,2,6,248,22,81,201,11,18,100,10,13,16,6,36,2,
14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2,20,3,
1,8,101,110,118,49,54,57,51,56,16,4,11,11,2,21,3,1,8,101,110,
118,49,54,57,51,57,27,248,22,81,248,22,163,4,196,28,248,22,87,193,20,
14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,80,193,249,22,156,4,
80,158,39,36,250,22,89,2,22,248,22,89,249,22,89,248,22,89,2,23,248,
-22,80,201,251,22,89,2,18,2,23,2,23,249,22,79,2,5,248,22,81,204,
+22,80,201,251,22,89,2,18,2,23,2,23,249,22,79,2,7,248,22,81,204,
18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,
29,16,4,11,11,2,20,3,1,8,101,110,118,49,54,57,52,49,16,4,11,
11,2,21,3,1,8,101,110,118,49,54,57,52,50,248,22,163,4,193,27,248,
@@ -51,8 +51,8 @@
24,249,22,2,32,0,88,163,8,36,37,47,11,9,222,33,43,248,22,163,4,
248,22,80,201,248,22,81,198,27,248,22,81,248,22,163,4,196,27,248,22,163,
4,248,22,80,195,249,22,156,4,80,158,40,36,28,248,22,87,195,250,22,90,
-2,22,9,248,22,81,199,250,22,89,2,11,248,22,89,248,22,80,199,250,22,
-90,2,10,248,22,81,201,248,22,81,202,27,248,22,81,248,22,163,4,23,197,
+2,22,9,248,22,81,199,250,22,89,2,10,248,22,89,248,22,80,199,250,22,
+90,2,5,248,22,81,201,248,22,81,202,27,248,22,81,248,22,163,4,23,197,
1,27,249,22,1,22,93,249,22,2,22,163,4,248,22,163,4,248,22,80,199,
248,22,183,4,249,22,156,4,80,158,41,36,251,22,89,1,22,119,105,116,104,
45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,2,26,250,
@@ -63,9 +63,9 @@
87,193,20,14,159,37,36,37,249,22,156,4,80,158,39,36,27,248,22,163,4,
248,22,80,197,28,249,22,151,9,62,61,62,248,22,157,4,248,22,104,196,250,
22,89,2,22,248,22,89,249,22,89,21,93,2,27,248,22,80,199,250,22,90,
-2,3,249,22,89,2,27,249,22,89,248,22,113,203,2,27,248,22,81,202,251,
+2,11,249,22,89,2,27,249,22,89,248,22,113,203,2,27,248,22,81,202,251,
22,89,2,18,28,249,22,151,9,248,22,157,4,248,22,80,200,64,101,108,115,
-101,10,248,22,80,197,250,22,90,2,22,9,248,22,81,200,249,22,79,2,3,
+101,10,248,22,80,197,250,22,90,2,22,9,248,22,81,200,249,22,79,2,11,
248,22,81,202,99,13,16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,
30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,54,57,54,52,16,
4,11,11,2,21,3,1,8,101,110,118,49,54,57,54,53,18,158,94,10,64,
@@ -81,25 +81,25 @@
2,11,2,12,36,46,37,16,0,36,16,1,2,13,37,11,11,11,16,0,16,
0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,11,16,5,
11,20,15,16,2,20,14,159,36,36,37,80,158,36,36,36,20,113,159,36,16,
-1,2,13,16,1,33,33,10,16,5,2,6,88,163,8,36,37,53,37,9,223,
-0,33,34,36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,12,88,163,
+1,2,13,16,1,33,33,10,16,5,2,12,88,163,8,36,37,53,37,9,223,
+0,33,34,36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,8,88,163,
8,36,37,53,37,9,223,0,33,35,36,20,113,159,36,16,1,2,13,16,0,
-11,16,5,2,8,88,163,8,36,37,53,37,9,223,0,33,36,36,20,113,159,
-36,16,1,2,13,16,1,33,37,11,16,5,2,5,88,163,8,36,37,56,37,
+11,16,5,2,6,88,163,8,36,37,53,37,9,223,0,33,36,36,20,113,159,
+36,16,1,2,13,16,1,33,37,11,16,5,2,7,88,163,8,36,37,56,37,
9,223,0,33,38,36,20,113,159,36,16,1,2,13,16,1,33,39,11,16,5,
-2,11,88,163,8,36,37,58,37,9,223,0,33,42,36,20,113,159,36,16,1,
-2,13,16,0,11,16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,44,
-36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,10,88,163,8,36,37,
+2,10,88,163,8,36,37,58,37,9,223,0,33,42,36,20,113,159,36,16,1,
+2,13,16,0,11,16,5,2,3,88,163,8,36,37,53,37,9,223,0,33,44,
+36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,5,88,163,8,36,37,
54,37,9,223,0,33,45,36,20,113,159,36,16,1,2,13,16,0,11,16,5,
-2,9,88,163,8,36,37,56,37,9,223,0,33,46,36,20,113,159,36,16,1,
-2,13,16,0,11,16,5,2,3,88,163,8,36,37,58,37,9,223,0,33,47,
-36,20,113,159,36,16,1,2,13,16,1,33,49,11,16,5,2,7,88,163,8,
+2,4,88,163,8,36,37,56,37,9,223,0,33,46,36,20,113,159,36,16,1,
+2,13,16,0,11,16,5,2,11,88,163,8,36,37,58,37,9,223,0,33,47,
+36,20,113,159,36,16,1,2,13,16,1,33,49,11,16,5,2,9,88,163,8,
36,37,54,37,9,223,0,33,50,36,20,113,159,36,16,1,2,13,16,0,11,
16,0,94,2,16,2,17,93,2,16,9,9,36,0};
EVAL_ONE_SIZED_STR((char *)expr, 2029);
}
{
- SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,49,56,84,0,0,0,0,0,0,0,0,0,
+ SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,48,84,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,115,0,0,0,1,0,0,8,0,21,
0,26,0,43,0,65,0,94,0,109,0,127,0,139,0,155,0,169,0,191,0,
207,0,224,0,246,0,1,1,7,1,16,1,23,1,30,1,42,1,58,1,82,
@@ -151,171 +151,171 @@
105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,6,11,
11,80,76,84,67,79,76,76,69,67,84,83,69,97,100,100,111,110,45,100,105,
114,6,8,8,99,111,108,108,101,99,116,115,27,20,13,159,80,159,37,52,37,
-254,80,159,44,53,37,249,22,33,11,80,159,46,52,37,22,151,14,10,22,158,
-14,10,22,159,14,10,248,22,139,6,23,196,2,28,248,22,136,7,23,194,2,
+254,80,159,44,53,37,249,22,33,11,80,159,46,52,37,22,157,14,10,22,164,
+14,10,22,165,14,10,248,22,139,6,23,196,2,28,248,22,136,7,23,194,2,
12,86,94,248,22,159,9,23,194,1,27,20,13,159,80,159,38,52,37,254,80,
-159,45,53,37,249,22,33,11,80,159,47,52,37,22,151,14,10,22,158,14,10,
-22,159,14,10,248,22,139,6,23,197,2,28,248,22,136,7,23,194,2,12,86,
+159,45,53,37,249,22,33,11,80,159,47,52,37,22,157,14,10,22,164,14,10,
+22,165,14,10,248,22,139,6,23,197,2,28,248,22,136,7,23,194,2,12,86,
94,248,22,159,9,23,194,1,27,20,13,159,80,159,39,52,37,254,80,159,46,
-53,37,249,22,33,11,80,159,48,52,37,22,151,14,10,22,158,14,10,22,159,
+53,37,249,22,33,11,80,159,48,52,37,22,157,14,10,22,164,14,10,22,165,
14,10,248,22,139,6,23,198,2,28,248,22,136,7,23,194,2,12,86,94,248,
22,159,9,23,194,1,248,80,159,40,8,32,39,197,28,248,22,87,23,195,2,
-9,27,248,22,80,23,196,2,27,28,248,22,137,15,23,195,2,23,194,1,28,
-248,22,136,15,23,195,2,249,22,138,15,23,196,1,250,80,159,43,39,39,248,
-22,153,15,2,32,11,10,250,80,159,41,39,39,248,22,153,15,2,32,23,197,
-1,10,28,23,193,2,249,22,79,248,22,140,15,249,22,138,15,23,198,1,247,
-22,154,15,27,248,22,81,23,200,1,28,248,22,87,23,194,2,9,27,248,22,
-80,23,195,2,27,28,248,22,137,15,23,195,2,23,194,1,28,248,22,136,15,
-23,195,2,249,22,138,15,23,196,1,250,80,159,48,39,39,248,22,153,15,2,
-32,11,10,250,80,159,46,39,39,248,22,153,15,2,32,23,197,1,10,28,23,
-193,2,249,22,79,248,22,140,15,249,22,138,15,23,198,1,247,22,154,15,248,
+9,27,248,22,80,23,196,2,27,28,248,22,143,15,23,195,2,23,194,1,28,
+248,22,142,15,23,195,2,249,22,144,15,23,196,1,250,80,159,43,39,39,248,
+22,159,15,2,32,11,10,250,80,159,41,39,39,248,22,159,15,2,32,23,197,
+1,10,28,23,193,2,249,22,79,248,22,146,15,249,22,144,15,23,198,1,247,
+22,160,15,27,248,22,81,23,200,1,28,248,22,87,23,194,2,9,27,248,22,
+80,23,195,2,27,28,248,22,143,15,23,195,2,23,194,1,28,248,22,142,15,
+23,195,2,249,22,144,15,23,196,1,250,80,159,48,39,39,248,22,159,15,2,
+32,11,10,250,80,159,46,39,39,248,22,159,15,2,32,23,197,1,10,28,23,
+193,2,249,22,79,248,22,146,15,249,22,144,15,23,198,1,247,22,160,15,248,
80,159,46,8,31,39,248,22,81,23,199,1,86,94,23,193,1,248,80,159,44,
8,31,39,248,22,81,23,197,1,86,94,23,193,1,27,248,22,81,23,198,1,
-28,248,22,87,23,194,2,9,27,248,22,80,23,195,2,27,28,248,22,137,15,
-23,195,2,23,194,1,28,248,22,136,15,23,195,2,249,22,138,15,23,196,1,
-250,80,159,46,39,39,248,22,153,15,2,32,11,10,250,80,159,44,39,39,248,
-22,153,15,2,32,23,197,1,10,28,23,193,2,249,22,79,248,22,140,15,249,
-22,138,15,23,198,1,247,22,154,15,248,80,159,44,8,31,39,248,22,81,23,
+28,248,22,87,23,194,2,9,27,248,22,80,23,195,2,27,28,248,22,143,15,
+23,195,2,23,194,1,28,248,22,142,15,23,195,2,249,22,144,15,23,196,1,
+250,80,159,46,39,39,248,22,159,15,2,32,11,10,250,80,159,44,39,39,248,
+22,159,15,2,32,23,197,1,10,28,23,193,2,249,22,79,248,22,146,15,249,
+22,144,15,23,198,1,247,22,160,15,248,80,159,44,8,31,39,248,22,81,23,
199,1,248,80,159,42,8,31,39,248,22,81,196,28,248,22,87,23,195,2,9,
-27,248,22,80,23,196,2,27,28,248,22,137,15,23,195,2,23,194,1,28,248,
-22,136,15,23,195,2,249,22,138,15,23,196,1,250,80,159,43,39,39,248,22,
-153,15,2,32,11,10,250,80,159,41,39,39,248,22,153,15,2,32,23,197,1,
-10,28,23,193,2,249,22,79,248,22,140,15,249,22,138,15,23,198,1,247,22,
-154,15,248,80,159,41,8,30,39,248,22,81,23,200,1,248,80,159,39,8,30,
+27,248,22,80,23,196,2,27,28,248,22,143,15,23,195,2,23,194,1,28,248,
+22,142,15,23,195,2,249,22,144,15,23,196,1,250,80,159,43,39,39,248,22,
+159,15,2,32,11,10,250,80,159,41,39,39,248,22,159,15,2,32,23,197,1,
+10,28,23,193,2,249,22,79,248,22,146,15,249,22,144,15,23,198,1,247,22,
+160,15,248,80,159,41,8,30,39,248,22,81,23,200,1,248,80,159,39,8,30,
39,248,22,81,197,28,248,22,87,23,195,2,9,27,248,22,80,23,196,2,27,
-28,248,22,137,15,23,195,2,23,194,1,28,248,22,136,15,23,195,2,249,22,
-138,15,23,196,1,250,80,159,43,39,39,248,22,153,15,2,32,11,10,250,80,
-159,41,39,39,248,22,153,15,2,32,23,197,1,10,28,23,193,2,249,22,79,
-248,22,140,15,249,22,138,15,23,198,1,247,22,154,15,248,80,159,41,8,29,
+28,248,22,143,15,23,195,2,23,194,1,28,248,22,142,15,23,195,2,249,22,
+144,15,23,196,1,250,80,159,43,39,39,248,22,159,15,2,32,11,10,250,80,
+159,41,39,39,248,22,159,15,2,32,23,197,1,10,28,23,193,2,249,22,79,
+248,22,146,15,249,22,144,15,23,198,1,247,22,160,15,248,80,159,41,8,29,
39,248,22,81,23,200,1,248,80,159,39,8,29,39,248,22,81,197,27,248,22,
-177,14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,141,7,23,
-195,2,27,248,22,135,15,195,28,192,192,248,22,136,15,195,11,86,94,28,28,
-248,22,178,14,23,195,2,10,28,248,22,177,14,23,195,2,10,28,248,22,141,
-7,23,195,2,28,248,22,135,15,23,195,2,10,248,22,136,15,23,195,2,11,
+183,14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,141,7,23,
+195,2,27,248,22,141,15,195,28,192,192,248,22,142,15,195,11,86,94,28,28,
+248,22,184,14,23,195,2,10,28,248,22,183,14,23,195,2,10,28,248,22,141,
+7,23,195,2,28,248,22,141,15,23,195,2,10,248,22,142,15,23,195,2,11,
12,250,22,188,9,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,
-101,2,33,23,197,2,28,28,248,22,178,14,23,195,2,249,22,151,9,248,22,
-179,14,23,197,2,2,34,249,22,151,9,247,22,163,8,2,34,27,28,248,22,
-141,7,23,196,2,23,195,2,248,22,153,8,248,22,182,14,23,197,2,28,249,
-22,169,15,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,
-91,92,92,93,34,23,195,2,28,248,22,141,7,195,248,22,185,14,195,194,27,
-248,22,180,7,23,195,1,249,22,186,14,248,22,156,8,250,22,177,15,0,6,
-35,114,120,34,47,34,28,249,22,169,15,0,22,35,114,120,34,91,47,92,92,
+101,2,33,23,197,2,28,28,248,22,184,14,23,195,2,249,22,151,9,248,22,
+185,14,23,197,2,2,34,249,22,151,9,247,22,163,8,2,34,27,28,248,22,
+141,7,23,196,2,23,195,2,248,22,153,8,248,22,188,14,23,197,2,28,249,
+22,175,15,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,
+91,92,92,93,34,23,195,2,28,248,22,141,7,195,248,22,191,14,195,194,27,
+248,22,180,7,23,195,1,249,22,128,15,248,22,156,8,250,22,183,15,0,6,
+35,114,120,34,47,34,28,249,22,175,15,0,22,35,114,120,34,91,47,92,92,
93,91,46,32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,
-22,177,15,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,
+22,183,15,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,
41,36,34,23,202,1,6,2,2,92,49,80,159,44,37,38,2,34,28,248,22,
-141,7,194,248,22,185,14,194,193,32,58,88,163,8,36,39,53,11,70,102,111,
+141,7,194,248,22,191,14,194,193,32,58,88,163,8,36,39,53,11,70,102,111,
117,110,100,45,101,120,101,99,222,33,61,32,59,88,163,8,36,40,58,11,64,
-110,101,120,116,222,33,60,27,248,22,139,15,23,196,2,28,249,22,153,9,23,
-195,2,23,197,1,11,28,248,22,135,15,23,194,2,27,249,22,131,15,23,197,
-1,23,196,1,28,23,197,2,90,159,39,11,89,161,39,36,11,248,22,134,15,
-23,197,2,86,95,23,195,1,23,194,1,27,28,23,202,2,27,248,22,139,15,
-23,199,2,28,249,22,153,9,23,195,2,23,200,2,11,28,248,22,135,15,23,
-194,2,250,2,58,23,205,2,23,206,2,249,22,131,15,23,200,2,23,198,1,
+110,101,120,116,222,33,60,27,248,22,145,15,23,196,2,28,249,22,153,9,23,
+195,2,23,197,1,11,28,248,22,141,15,23,194,2,27,249,22,137,15,23,197,
+1,23,196,1,28,23,197,2,90,159,39,11,89,161,39,36,11,248,22,140,15,
+23,197,2,86,95,23,195,1,23,194,1,27,28,23,202,2,27,248,22,145,15,
+23,199,2,28,249,22,153,9,23,195,2,23,200,2,11,28,248,22,141,15,23,
+194,2,250,2,58,23,205,2,23,206,2,249,22,137,15,23,200,2,23,198,1,
250,2,58,23,205,2,23,206,2,23,196,1,11,28,23,193,2,192,86,94,23,
-193,1,27,28,248,22,177,14,23,196,2,27,249,22,131,15,23,198,2,23,205,
-2,28,28,248,22,190,14,193,10,248,22,189,14,193,192,11,11,28,23,193,2,
-192,86,94,23,193,1,28,23,203,2,11,27,248,22,139,15,23,200,2,28,249,
-22,153,9,23,195,2,23,201,1,11,28,248,22,135,15,23,194,2,250,2,58,
-23,206,1,23,207,1,249,22,131,15,23,201,1,23,198,1,250,2,58,205,206,
+193,1,27,28,248,22,183,14,23,196,2,27,249,22,137,15,23,198,2,23,205,
+2,28,28,248,22,132,15,193,10,248,22,131,15,193,192,11,11,28,23,193,2,
+192,86,94,23,193,1,28,23,203,2,11,27,248,22,145,15,23,200,2,28,249,
+22,153,9,23,195,2,23,201,1,11,28,248,22,141,15,23,194,2,250,2,58,
+23,206,1,23,207,1,249,22,137,15,23,201,1,23,198,1,250,2,58,205,206,
195,192,86,94,23,194,1,28,23,196,2,90,159,39,11,89,161,39,36,11,248,
-22,134,15,23,197,2,86,95,23,195,1,23,194,1,27,28,23,201,2,27,248,
-22,139,15,23,199,2,28,249,22,153,9,23,195,2,23,200,2,11,28,248,22,
-135,15,23,194,2,250,2,58,23,204,2,23,205,2,249,22,131,15,23,200,2,
+22,140,15,23,197,2,86,95,23,195,1,23,194,1,27,28,23,201,2,27,248,
+22,145,15,23,199,2,28,249,22,153,9,23,195,2,23,200,2,11,28,248,22,
+141,15,23,194,2,250,2,58,23,204,2,23,205,2,249,22,137,15,23,200,2,
23,198,1,250,2,58,23,204,2,23,205,2,23,196,1,11,28,23,193,2,192,
-86,94,23,193,1,27,28,248,22,177,14,23,196,2,27,249,22,131,15,23,198,
-2,23,204,2,28,28,248,22,190,14,193,10,248,22,189,14,193,192,11,11,28,
-23,193,2,192,86,94,23,193,1,28,23,202,2,11,27,248,22,139,15,23,200,
-2,28,249,22,153,9,23,195,2,23,201,1,11,28,248,22,135,15,23,194,2,
-250,2,58,23,205,1,23,206,1,249,22,131,15,23,201,1,23,198,1,250,2,
-58,204,205,195,192,28,23,193,2,90,159,39,11,89,161,39,36,11,248,22,134,
+86,94,23,193,1,27,28,248,22,183,14,23,196,2,27,249,22,137,15,23,198,
+2,23,204,2,28,28,248,22,132,15,193,10,248,22,131,15,193,192,11,11,28,
+23,193,2,192,86,94,23,193,1,28,23,202,2,11,27,248,22,145,15,23,200,
+2,28,249,22,153,9,23,195,2,23,201,1,11,28,248,22,141,15,23,194,2,
+250,2,58,23,205,1,23,206,1,249,22,137,15,23,201,1,23,198,1,250,2,
+58,204,205,195,192,28,23,193,2,90,159,39,11,89,161,39,36,11,248,22,140,
15,23,199,2,86,95,23,195,1,23,194,1,27,28,23,198,2,251,2,59,23,
198,2,23,203,2,23,201,2,23,202,2,11,28,23,193,2,192,86,94,23,193,
-1,27,28,248,22,177,14,195,27,249,22,131,15,197,200,28,28,248,22,190,14,
-193,10,248,22,189,14,193,192,11,11,28,192,192,28,198,11,251,2,59,198,203,
+1,27,28,248,22,183,14,195,27,249,22,137,15,197,200,28,28,248,22,132,15,
+193,10,248,22,131,15,193,192,11,11,28,192,192,28,198,11,251,2,59,198,203,
201,202,194,32,62,88,163,8,36,40,58,11,2,31,222,33,63,28,248,22,87,
-23,197,2,11,27,248,22,138,15,248,22,80,23,199,2,27,249,22,131,15,23,
-196,1,23,197,2,28,248,22,189,14,23,194,2,250,2,58,198,199,195,86,94,
+23,197,2,11,27,248,22,144,15,248,22,80,23,199,2,27,249,22,137,15,23,
+196,1,23,197,2,28,248,22,131,15,23,194,2,250,2,58,198,199,195,86,94,
23,193,1,27,248,22,81,23,200,1,28,248,22,87,23,194,2,11,27,248,22,
-138,15,248,22,80,23,196,2,27,249,22,131,15,23,196,1,23,200,2,28,248,
-22,189,14,23,194,2,250,2,58,201,202,195,86,94,23,193,1,27,248,22,81,
-23,197,1,28,248,22,87,23,194,2,11,27,248,22,138,15,248,22,80,195,27,
-249,22,131,15,23,196,1,202,28,248,22,189,14,193,250,2,58,204,205,195,251,
-2,62,204,205,206,248,22,81,199,86,95,28,28,248,22,177,14,23,195,2,10,
-28,248,22,141,7,23,195,2,28,248,22,135,15,23,195,2,10,248,22,136,15,
+144,15,248,22,80,23,196,2,27,249,22,137,15,23,196,1,23,200,2,28,248,
+22,131,15,23,194,2,250,2,58,201,202,195,86,94,23,193,1,27,248,22,81,
+23,197,1,28,248,22,87,23,194,2,11,27,248,22,144,15,248,22,80,195,27,
+249,22,137,15,23,196,1,202,28,248,22,131,15,193,250,2,58,204,205,195,251,
+2,62,204,205,206,248,22,81,199,86,95,28,28,248,22,183,14,23,195,2,10,
+28,248,22,141,7,23,195,2,28,248,22,141,15,23,195,2,10,248,22,142,15,
23,195,2,11,12,250,22,188,9,2,5,2,35,23,197,2,28,28,23,195,2,
-28,28,248,22,177,14,23,196,2,10,28,248,22,141,7,23,196,2,28,248,22,
-135,15,23,196,2,10,248,22,136,15,23,196,2,11,248,22,135,15,23,196,2,
+28,28,248,22,183,14,23,196,2,10,28,248,22,141,7,23,196,2,28,248,22,
+141,15,23,196,2,10,248,22,142,15,23,196,2,11,248,22,141,15,23,196,2,
11,10,12,250,22,188,9,2,5,6,45,45,40,111,114,47,99,32,35,102,32,
40,97,110,100,47,99,32,112,97,116,104,45,115,116,114,105,110,103,63,32,114,
101,108,97,116,105,118,101,45,112,97,116,104,63,41,41,23,198,2,28,28,248,
-22,135,15,23,195,2,90,159,39,11,89,161,39,36,11,248,22,134,15,23,198,
+22,141,15,23,195,2,90,159,39,11,89,161,39,36,11,248,22,140,15,23,198,
2,249,22,151,9,194,2,36,11,27,248,22,161,8,6,4,4,80,65,84,72,
27,28,23,194,2,249,80,158,40,40,23,196,1,9,86,94,23,194,1,9,27,
-28,249,22,151,9,247,22,163,8,2,34,249,22,79,248,22,186,14,5,1,46,
-23,196,1,23,194,1,28,248,22,87,23,194,2,11,27,248,22,138,15,248,22,
-80,23,196,2,27,249,22,131,15,23,196,1,23,201,2,28,248,22,189,14,23,
+28,249,22,151,9,247,22,163,8,2,34,249,22,79,248,22,128,15,5,1,46,
+23,196,1,23,194,1,28,248,22,87,23,194,2,11,27,248,22,144,15,248,22,
+80,23,196,2,27,249,22,137,15,23,196,1,23,201,2,28,248,22,131,15,23,
194,2,250,2,58,202,203,195,86,94,23,193,1,27,248,22,81,23,197,1,28,
-248,22,87,23,194,2,11,27,248,22,138,15,248,22,80,23,196,2,27,249,22,
-131,15,23,196,1,23,204,2,28,248,22,189,14,23,194,2,250,2,58,205,206,
+248,22,87,23,194,2,11,27,248,22,144,15,248,22,80,23,196,2,27,249,22,
+137,15,23,196,1,23,204,2,28,248,22,131,15,23,194,2,250,2,58,205,206,
195,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,
-27,248,22,138,15,248,22,80,195,27,249,22,131,15,23,196,1,206,28,248,22,
-189,14,193,250,2,58,23,16,23,17,195,251,2,62,23,16,23,17,23,18,248,
-22,81,199,27,248,22,138,15,23,196,1,28,248,22,189,14,193,250,2,58,198,
+27,248,22,144,15,248,22,80,195,27,249,22,137,15,23,196,1,206,28,248,22,
+131,15,193,250,2,58,23,16,23,17,195,251,2,62,23,16,23,17,23,18,248,
+22,81,199,27,248,22,144,15,23,196,1,28,248,22,131,15,193,250,2,58,198,
199,195,11,250,80,159,39,39,39,196,197,11,250,80,159,39,39,39,196,11,11,
32,67,88,163,8,36,39,57,11,2,31,222,33,69,0,8,35,114,120,35,34,
-92,34,34,27,249,22,165,15,23,197,2,23,198,2,28,23,193,2,86,94,23,
-196,1,27,248,22,104,23,195,2,27,27,248,22,113,23,197,1,27,249,22,165,
+92,34,34,27,249,22,171,15,23,197,2,23,198,2,28,23,193,2,86,94,23,
+196,1,27,248,22,104,23,195,2,27,27,248,22,113,23,197,1,27,249,22,171,
15,23,201,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,104,23,
195,2,27,250,2,67,23,203,2,23,204,1,248,22,113,23,199,1,28,249,22,
-138,8,23,196,2,2,37,249,22,93,23,202,2,194,249,22,79,248,22,186,14,
-28,249,22,151,9,247,22,163,8,2,34,250,22,177,15,2,68,23,200,1,2,
+138,8,23,196,2,2,37,249,22,93,23,202,2,194,249,22,79,248,22,128,15,
+28,249,22,151,9,247,22,163,8,2,34,250,22,183,15,2,68,23,200,1,2,
37,23,197,1,194,86,95,23,199,1,23,193,1,28,249,22,138,8,23,196,2,
-2,37,249,22,93,23,200,2,9,249,22,79,248,22,186,14,28,249,22,151,9,
-247,22,163,8,2,34,250,22,177,15,2,68,23,200,1,2,37,23,197,1,9,
+2,37,249,22,93,23,200,2,9,249,22,79,248,22,128,15,28,249,22,151,9,
+247,22,163,8,2,34,250,22,183,15,2,68,23,200,1,2,37,23,197,1,9,
28,249,22,138,8,23,196,2,2,37,249,22,93,197,194,86,94,23,196,1,249,
-22,79,248,22,186,14,28,249,22,151,9,247,22,163,8,2,34,250,22,177,15,
+22,79,248,22,128,15,28,249,22,151,9,247,22,163,8,2,34,250,22,183,15,
2,68,23,200,1,2,37,23,197,1,194,86,94,23,193,1,28,249,22,138,8,
-23,198,2,2,37,249,22,93,195,9,86,94,23,194,1,249,22,79,248,22,186,
-14,28,249,22,151,9,247,22,163,8,2,34,250,22,177,15,2,68,23,202,1,
+23,198,2,2,37,249,22,93,195,9,86,94,23,194,1,249,22,79,248,22,128,
+15,28,249,22,151,9,247,22,163,8,2,34,250,22,183,15,2,68,23,202,1,
2,37,23,199,1,9,86,95,28,28,248,22,130,8,194,10,248,22,141,7,194,
12,250,22,188,9,2,6,6,21,21,40,111,114,47,99,32,98,121,116,101,115,
63,32,115,116,114,105,110,103,63,41,196,28,28,248,22,88,195,249,22,4,22,
-177,14,196,11,12,250,22,188,9,2,6,6,14,14,40,108,105,115,116,111,102,
+183,14,196,11,12,250,22,188,9,2,6,6,14,14,40,108,105,115,116,111,102,
32,112,97,116,104,63,41,197,250,2,67,197,195,28,248,22,141,7,197,248,22,
-155,8,197,196,86,94,28,28,248,22,177,14,194,10,28,248,22,141,7,194,28,
-248,22,135,15,194,10,248,22,136,15,194,11,12,250,22,188,9,195,2,35,196,
-28,248,22,135,15,194,12,251,22,190,9,196,2,38,2,39,197,86,94,28,28,
-248,22,177,14,194,10,28,248,22,141,7,194,28,248,22,135,15,194,10,248,22,
-136,15,194,11,12,250,22,188,9,195,2,35,196,28,248,22,135,15,194,12,251,
-22,190,9,196,2,38,2,39,197,86,94,86,94,28,28,248,22,177,14,23,195,
-2,10,28,248,22,141,7,23,195,2,28,248,22,135,15,23,195,2,10,248,22,
-136,15,23,195,2,11,12,250,22,188,9,195,2,35,23,197,2,28,248,22,135,
+155,8,197,196,86,94,28,28,248,22,183,14,194,10,28,248,22,141,7,194,28,
+248,22,141,15,194,10,248,22,142,15,194,11,12,250,22,188,9,195,2,35,196,
+28,248,22,141,15,194,12,251,22,190,9,196,2,38,2,39,197,86,94,28,28,
+248,22,183,14,194,10,28,248,22,141,7,194,28,248,22,141,15,194,10,248,22,
+142,15,194,11,12,250,22,188,9,195,2,35,196,28,248,22,141,15,194,12,251,
+22,190,9,196,2,38,2,39,197,86,94,86,94,28,28,248,22,183,14,23,195,
+2,10,28,248,22,141,7,23,195,2,28,248,22,141,15,23,195,2,10,248,22,
+142,15,23,195,2,11,12,250,22,188,9,195,2,35,23,197,2,28,248,22,141,
15,23,195,2,12,251,22,190,9,196,2,38,2,39,23,198,1,249,22,3,88,
163,8,36,37,47,11,9,223,2,33,72,196,28,28,248,22,0,194,249,22,50,
-195,37,11,12,250,22,188,9,195,2,40,196,86,94,28,28,248,22,177,14,193,
-10,28,248,22,141,7,193,28,248,22,135,15,193,10,248,22,136,15,193,11,12,
-250,22,188,9,2,10,2,35,195,28,248,22,135,15,193,12,251,22,190,9,2,
-10,2,38,2,39,196,86,95,86,94,86,94,28,28,248,22,177,14,195,10,28,
-248,22,141,7,195,28,248,22,135,15,195,10,248,22,136,15,195,11,12,250,22,
-188,9,2,10,2,35,197,28,248,22,135,15,195,12,251,22,190,9,2,10,2,
+195,37,11,12,250,22,188,9,195,2,40,196,86,94,28,28,248,22,183,14,193,
+10,28,248,22,141,7,193,28,248,22,141,15,193,10,248,22,142,15,193,11,12,
+250,22,188,9,2,10,2,35,195,28,248,22,141,15,193,12,251,22,190,9,2,
+10,2,38,2,39,196,86,95,86,94,86,94,28,28,248,22,183,14,195,10,28,
+248,22,141,7,195,28,248,22,141,15,195,10,248,22,142,15,195,11,12,250,22,
+188,9,2,10,2,35,197,28,248,22,141,15,195,12,251,22,190,9,2,10,2,
38,2,39,198,249,22,3,32,0,88,163,8,36,37,46,11,9,222,33,75,197,
28,28,248,22,0,194,249,22,50,195,37,11,12,250,22,188,9,2,10,2,40,
-196,251,80,158,40,45,197,198,199,11,86,94,28,28,248,22,177,14,193,10,28,
-248,22,141,7,193,28,248,22,135,15,193,10,248,22,136,15,193,11,12,250,22,
-188,9,2,12,2,35,195,28,248,22,135,15,193,12,251,22,190,9,2,12,2,
-38,2,39,196,86,96,86,94,28,28,248,22,177,14,195,10,28,248,22,141,7,
-195,28,248,22,135,15,195,10,248,22,136,15,195,11,12,250,22,188,9,2,12,
-2,35,197,28,248,22,135,15,195,12,251,22,190,9,2,12,2,38,2,39,198,
-86,94,86,94,28,28,248,22,177,14,196,10,28,248,22,141,7,196,28,248,22,
-135,15,196,10,248,22,136,15,196,11,12,250,22,188,9,2,12,2,35,198,28,
-248,22,135,15,196,12,251,22,190,9,2,12,2,38,2,39,199,249,22,3,32,
+196,251,80,158,40,45,197,198,199,11,86,94,28,28,248,22,183,14,193,10,28,
+248,22,141,7,193,28,248,22,141,15,193,10,248,22,142,15,193,11,12,250,22,
+188,9,2,12,2,35,195,28,248,22,141,15,193,12,251,22,190,9,2,12,2,
+38,2,39,196,86,96,86,94,28,28,248,22,183,14,195,10,28,248,22,141,7,
+195,28,248,22,141,15,195,10,248,22,142,15,195,11,12,250,22,188,9,2,12,
+2,35,197,28,248,22,141,15,195,12,251,22,190,9,2,12,2,38,2,39,198,
+86,94,86,94,28,28,248,22,183,14,196,10,28,248,22,141,7,196,28,248,22,
+141,15,196,10,248,22,142,15,196,11,12,250,22,188,9,2,12,2,35,198,28,
+248,22,141,15,196,12,251,22,190,9,2,12,2,38,2,39,199,249,22,3,32,
0,88,163,8,36,37,46,11,9,222,33,77,198,28,28,248,22,0,194,249,22,
50,195,37,11,12,250,22,188,9,2,12,2,40,196,251,80,158,40,45,197,199,
-200,198,0,6,45,105,110,102,46,48,27,248,22,153,15,2,41,27,28,248,22,
-136,15,23,195,2,193,20,13,159,80,159,38,52,37,250,80,159,41,53,37,249,
-22,33,11,80,159,43,52,37,22,154,15,248,22,153,15,68,111,114,105,103,45,
-100,105,114,27,248,22,153,15,2,32,250,80,159,42,39,39,23,196,1,23,198,
-1,11,28,192,250,22,131,15,195,6,6,6,99,111,110,102,105,103,6,10,10,
+200,198,0,6,45,105,110,102,46,48,27,248,22,159,15,2,41,27,28,248,22,
+142,15,23,195,2,193,20,13,159,80,159,38,52,37,250,80,159,41,53,37,249,
+22,33,11,80,159,43,52,37,22,160,15,248,22,159,15,68,111,114,105,103,45,
+100,105,114,27,248,22,159,15,2,32,250,80,159,42,39,39,23,196,1,23,198,
+1,11,28,192,250,22,137,15,195,6,6,6,99,111,110,102,105,103,6,10,10,
108,105,110,107,115,46,114,107,116,100,11,86,94,27,247,22,147,10,28,249,22,
139,10,23,195,2,2,42,251,22,143,10,23,197,1,2,42,250,22,189,7,2,
43,28,23,202,1,80,159,46,47,38,80,159,46,50,38,248,22,183,11,23,205,
@@ -331,61 +331,61 @@
193,28,248,22,88,23,194,2,28,28,249,22,191,3,38,248,22,92,23,196,2,
10,249,22,191,3,39,248,22,92,23,196,2,28,28,248,22,141,7,248,22,80,
23,195,2,10,249,22,151,9,64,114,111,111,116,248,22,80,23,196,2,28,27,
-248,22,104,194,28,248,22,177,14,23,194,2,10,28,248,22,141,7,23,194,2,
-28,248,22,135,15,23,194,2,10,248,22,136,15,23,194,1,11,27,248,22,87,
-248,22,106,195,28,192,192,248,22,178,15,248,22,113,195,11,11,11,11,250,22,
+248,22,104,194,28,248,22,183,14,23,194,2,10,28,248,22,141,7,23,194,2,
+28,248,22,141,15,23,194,2,10,248,22,142,15,23,194,1,11,27,248,22,87,
+248,22,106,195,28,192,192,248,22,184,15,248,22,113,195,11,11,11,11,250,22,
158,2,196,197,249,22,79,197,200,28,28,248,22,87,248,22,106,23,197,2,10,
-249,22,169,15,248,22,113,23,198,2,247,22,159,8,27,248,22,140,15,249,22,
-138,15,248,22,104,23,200,2,23,198,1,28,248,22,64,248,22,80,23,198,2,
+249,22,175,15,248,22,113,23,198,2,247,22,159,8,27,248,22,146,15,249,22,
+144,15,248,22,104,23,200,2,23,198,1,28,248,22,64,248,22,80,23,198,2,
86,94,23,196,1,86,94,28,250,22,160,2,196,11,11,12,250,22,158,2,196,
11,9,249,22,164,2,195,88,163,8,36,38,50,11,9,224,3,2,33,87,27,
248,22,67,248,22,80,23,199,1,250,22,158,2,23,198,2,23,196,2,249,22,
79,248,22,131,2,23,200,1,250,22,160,2,23,203,1,23,201,1,9,12,250,
22,158,2,195,196,248,22,94,198,20,13,159,80,159,37,57,37,88,163,36,37,
-54,8,240,0,72,0,0,9,225,1,0,2,33,81,27,250,22,148,15,28,23,
+54,8,240,0,72,0,0,9,225,1,0,2,33,81,27,250,22,154,15,28,23,
197,2,80,159,41,47,38,80,159,41,50,38,11,32,0,88,163,8,36,36,41,
11,9,222,33,82,28,249,22,129,4,23,195,2,28,23,196,2,80,158,40,49,
80,158,40,55,20,13,159,80,159,38,57,37,20,20,94,88,163,36,37,55,8,
240,0,120,12,0,9,226,2,1,3,0,33,83,23,196,1,20,13,159,80,159,
38,52,37,26,29,80,159,8,31,53,37,249,22,33,11,80,159,8,33,52,37,
-22,147,14,10,22,148,14,10,22,149,14,10,22,152,14,10,22,151,14,10,22,
-153,14,10,22,150,14,10,22,154,14,10,22,155,14,10,22,156,14,10,22,157,
-14,10,22,158,14,10,22,159,14,11,22,145,14,11,27,249,22,182,5,28,196,
+22,153,14,10,22,154,14,10,22,155,14,10,22,158,14,10,22,157,14,10,22,
+159,14,10,22,156,14,10,22,160,14,10,22,161,14,10,22,162,14,10,22,163,
+14,10,22,164,14,10,22,165,14,11,22,151,14,11,27,249,22,182,5,28,196,
80,159,41,47,38,80,159,41,50,38,66,98,105,110,97,114,121,27,250,22,46,
22,37,88,163,8,36,36,44,11,9,223,4,33,84,20,20,94,88,163,36,36,
43,11,9,223,4,33,85,23,197,1,86,94,28,28,248,22,88,23,194,2,249,
22,4,32,0,88,163,8,36,37,45,11,9,222,33,86,23,195,2,11,12,248,
22,184,9,6,18,18,105,108,108,45,102,111,114,109,101,100,32,99,111,110,116,
-101,110,116,27,247,22,140,2,27,90,159,39,11,89,161,39,36,11,248,22,134,
+101,110,116,27,247,22,140,2,27,90,159,39,11,89,161,39,36,11,248,22,140,
15,28,201,80,159,46,47,38,80,159,46,50,38,192,86,96,249,22,3,20,20,
94,88,163,8,36,37,54,11,9,224,2,3,33,88,23,195,1,23,197,1,249,
22,164,2,195,88,163,8,36,38,48,11,9,223,3,33,89,28,197,86,94,20,
18,159,11,80,158,42,48,193,20,18,159,11,80,158,42,49,196,86,94,20,18,
159,11,80,158,42,54,193,20,18,159,11,80,158,42,55,196,193,28,193,80,158,
-38,48,80,158,38,54,248,22,8,88,163,8,32,37,8,40,8,240,0,120,47,
+38,48,80,158,38,54,248,22,9,88,163,8,32,37,8,40,8,240,0,120,47,
0,9,224,1,2,33,90,0,7,35,114,120,34,47,43,34,28,248,22,141,7,
-23,195,2,27,249,22,167,15,2,92,196,28,192,28,249,22,191,3,248,22,103,
+23,195,2,27,249,22,173,15,2,92,196,28,192,28,249,22,191,3,248,22,103,
195,248,22,181,3,248,22,144,7,198,249,22,7,250,22,163,7,199,36,248,22,
103,198,197,249,22,7,250,22,163,7,199,36,248,22,103,198,249,22,79,249,22,
163,7,200,248,22,105,199,199,249,22,7,196,197,90,159,39,11,89,161,39,36,
-11,248,22,134,15,23,198,1,86,94,23,195,1,28,249,22,151,9,23,195,2,
+11,248,22,140,15,23,198,1,86,94,23,195,1,28,249,22,151,9,23,195,2,
2,36,249,22,7,195,199,27,249,22,79,23,197,1,23,201,1,28,248,22,141,
-7,23,195,2,27,249,22,167,15,2,92,196,28,192,28,249,22,191,3,248,22,
+7,23,195,2,27,249,22,173,15,2,92,196,28,192,28,249,22,191,3,248,22,
103,195,248,22,181,3,248,22,144,7,198,249,22,7,250,22,163,7,199,36,248,
22,103,198,195,249,22,7,250,22,163,7,199,36,248,22,103,198,249,22,79,249,
22,163,7,200,248,22,105,199,197,249,22,7,196,195,90,159,39,11,89,161,39,
-36,11,248,22,134,15,23,198,1,28,249,22,151,9,194,2,36,249,22,7,195,
+36,11,248,22,140,15,23,198,1,28,249,22,151,9,194,2,36,249,22,7,195,
197,249,80,159,45,58,39,194,249,22,79,197,199,32,94,88,163,36,43,8,26,
11,65,99,108,111,111,112,222,33,103,32,95,88,163,8,36,37,47,11,2,31,
222,33,98,32,96,88,163,36,37,43,11,69,116,111,45,115,116,114,105,110,103,
-222,33,97,28,248,22,177,14,193,248,22,181,14,193,192,28,248,22,87,248,22,
+222,33,97,28,248,22,183,14,193,248,22,187,14,193,192,28,248,22,87,248,22,
81,23,195,2,248,22,89,248,2,96,248,22,80,23,196,1,250,22,90,248,2,
96,248,22,80,23,198,2,2,45,248,2,95,248,22,81,23,198,1,249,22,189,
7,2,46,194,32,100,88,163,36,38,48,11,66,102,105,108,116,101,114,222,33,
101,28,248,22,87,23,195,2,9,28,248,23,194,2,248,22,80,23,196,2,249,
22,79,248,22,80,23,197,2,249,2,100,23,197,1,248,22,81,23,199,1,249,
2,100,194,248,22,81,196,249,22,189,7,2,46,248,22,134,2,23,196,1,28,
-248,22,87,23,199,2,86,94,23,198,1,28,23,199,2,28,196,249,22,131,15,
+248,22,87,23,199,2,86,94,23,198,1,28,23,199,2,28,196,249,22,137,15,
200,198,198,27,28,248,22,87,23,197,2,2,44,249,22,1,22,164,7,248,2,
95,23,199,2,248,23,198,1,251,22,189,7,6,70,70,99,111,108,108,101,99,
116,105,111,110,32,110,111,116,32,102,111,117,110,100,10,32,32,99,111,108,108,
@@ -393,78 +393,78 @@
99,116,105,111,110,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97,126,
97,28,248,22,87,23,202,1,248,2,96,23,201,1,250,22,164,7,248,2,96,
23,204,1,2,45,23,201,2,249,22,1,22,164,7,249,22,2,32,0,88,163,
-8,36,37,44,11,9,222,33,99,249,2,100,22,177,14,23,205,2,28,249,22,
+8,36,37,44,11,9,222,33,99,249,2,100,22,183,14,23,205,2,28,249,22,
5,22,133,2,23,201,2,250,22,189,7,6,49,49,10,32,32,32,115,117,98,
45,99,111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,105,110,32,
112,97,114,101,110,116,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97,
23,201,1,250,22,1,22,164,7,248,22,2,32,0,88,163,8,36,37,45,11,
9,222,33,102,249,2,100,22,133,2,23,207,1,86,95,23,199,1,23,198,1,
-2,44,27,248,22,80,23,200,2,27,28,248,22,177,14,23,195,2,249,22,131,
-15,23,196,1,23,198,2,248,22,134,2,23,195,1,28,28,248,22,177,14,248,
-22,80,23,202,2,248,22,190,14,23,194,2,10,27,250,22,1,22,131,15,23,
-197,1,23,201,2,28,28,248,22,87,23,199,2,10,248,22,190,14,23,194,2,
-28,23,200,2,28,28,248,22,189,14,249,22,131,15,195,202,10,27,28,248,22,
-177,14,201,248,22,181,14,201,200,27,248,22,144,7,23,195,2,27,28,249,22,
+2,44,27,248,22,80,23,200,2,27,28,248,22,183,14,23,195,2,249,22,137,
+15,23,196,1,23,198,2,248,22,134,2,23,195,1,28,28,248,22,183,14,248,
+22,80,23,202,2,248,22,132,15,23,194,2,10,27,250,22,1,22,137,15,23,
+197,1,23,201,2,28,28,248,22,87,23,199,2,10,248,22,132,15,23,194,2,
+28,23,200,2,28,28,248,22,131,15,249,22,137,15,195,202,10,27,28,248,22,
+183,14,201,248,22,187,14,201,200,27,248,22,144,7,23,195,2,27,28,249,22,
131,4,23,196,2,40,28,249,22,147,7,6,4,4,46,114,107,116,249,22,163,
7,23,199,2,249,22,183,3,23,200,2,40,249,22,164,7,250,22,163,7,23,
200,1,36,249,22,183,3,23,201,1,40,6,3,3,46,115,115,86,95,23,195,
-1,23,194,1,11,11,28,23,193,2,248,22,189,14,249,22,131,15,198,23,196,
-1,11,28,199,249,22,131,15,194,201,192,254,2,94,202,203,204,205,206,248,22,
-81,23,16,28,23,16,23,16,199,28,199,249,22,131,15,194,201,192,254,2,94,
+1,23,194,1,11,11,28,23,193,2,248,22,131,15,249,22,137,15,198,23,196,
+1,11,28,199,249,22,137,15,194,201,192,254,2,94,202,203,204,205,206,248,22,
+81,23,16,28,23,16,23,16,199,28,199,249,22,137,15,194,201,192,254,2,94,
202,203,204,205,206,248,22,81,23,16,23,16,254,2,94,201,202,203,204,205,248,
22,81,23,15,23,15,90,159,38,11,89,161,38,36,11,249,80,159,40,58,39,
-23,199,1,23,200,1,27,248,22,67,28,248,22,177,14,195,248,22,181,14,195,
-194,27,247,22,158,15,27,250,22,93,28,23,197,2,28,247,22,157,15,27,248,
+23,199,1,23,200,1,27,248,22,67,28,248,22,183,14,195,248,22,187,14,195,
+194,27,247,22,164,15,27,250,22,93,28,23,197,2,28,247,22,163,15,27,248,
80,159,46,56,39,10,27,250,22,160,2,23,197,2,23,203,2,11,28,23,193,
2,192,86,94,23,193,1,250,22,160,2,23,197,1,11,9,9,9,28,23,197,
1,28,80,159,44,50,38,27,248,80,159,46,56,39,11,27,250,22,160,2,23,
197,2,23,203,1,11,28,23,193,2,192,86,94,23,193,1,250,22,160,2,23,
-197,1,11,9,86,94,23,198,1,9,9,247,22,155,15,254,2,94,199,202,203,
-205,23,16,199,11,86,95,28,28,248,22,178,14,23,194,2,10,28,248,22,177,
-14,23,194,2,10,28,248,22,141,7,23,194,2,28,248,22,135,15,23,194,2,
-10,248,22,136,15,23,194,2,11,12,252,22,188,9,23,200,2,2,33,36,23,
+197,1,11,9,86,94,23,198,1,9,9,247,22,161,15,254,2,94,199,202,203,
+205,23,16,199,11,86,95,28,28,248,22,184,14,23,194,2,10,28,248,22,183,
+14,23,194,2,10,28,248,22,141,7,23,194,2,28,248,22,141,15,23,194,2,
+10,248,22,142,15,23,194,2,11,12,252,22,188,9,23,200,2,2,33,36,23,
198,2,23,199,2,28,28,248,22,141,7,23,195,2,10,248,22,130,8,23,195,
2,86,94,23,194,1,12,252,22,188,9,23,200,2,2,47,37,23,198,2,23,
-199,1,90,159,39,11,89,161,39,36,11,248,22,134,15,23,197,2,86,94,23,
+199,1,90,159,39,11,89,161,39,36,11,248,22,140,15,23,197,2,86,94,23,
195,1,86,94,28,192,12,250,22,191,9,23,201,1,2,48,23,199,1,249,22,
-7,194,195,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,178,14,23,
-196,2,10,28,248,22,177,14,23,196,2,10,28,248,22,141,7,23,196,2,28,
-248,22,135,15,23,196,2,10,248,22,136,15,23,196,2,11,12,252,22,188,9,
+7,194,195,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,184,14,23,
+196,2,10,28,248,22,183,14,23,196,2,10,28,248,22,141,7,23,196,2,28,
+248,22,141,15,23,196,2,10,248,22,142,15,23,196,2,11,12,252,22,188,9,
2,26,2,33,36,23,200,2,23,201,2,28,28,248,22,141,7,23,197,2,10,
248,22,130,8,23,197,2,12,252,22,188,9,2,26,2,47,37,23,200,2,23,
-201,2,90,159,39,11,89,161,39,36,11,248,22,134,15,23,199,2,86,94,23,
+201,2,90,159,39,11,89,161,39,36,11,248,22,140,15,23,199,2,86,94,23,
195,1,86,94,28,192,12,250,22,191,9,2,26,2,48,23,201,2,249,22,7,
-194,195,27,249,22,187,14,250,22,176,15,0,20,35,114,120,35,34,40,63,58,
-91,46,93,91,94,46,93,42,124,41,36,34,248,22,183,14,23,201,1,28,248,
+194,195,27,249,22,129,15,250,22,182,15,0,20,35,114,120,35,34,40,63,58,
+91,46,93,91,94,46,93,42,124,41,36,34,248,22,189,14,23,201,1,28,248,
22,141,7,23,203,2,249,22,156,8,23,204,1,8,63,23,202,1,28,248,22,
-178,14,23,199,2,248,22,179,14,23,199,1,86,94,23,198,1,247,22,180,14,
-28,248,22,177,14,194,249,22,131,15,195,194,192,90,159,38,11,89,161,38,36,
-11,86,95,28,28,248,22,178,14,23,196,2,10,28,248,22,177,14,23,196,2,
-10,28,248,22,141,7,23,196,2,28,248,22,135,15,23,196,2,10,248,22,136,
+184,14,23,199,2,248,22,185,14,23,199,1,86,94,23,198,1,247,22,186,14,
+28,248,22,183,14,194,249,22,137,15,195,194,192,90,159,38,11,89,161,38,36,
+11,86,95,28,28,248,22,184,14,23,196,2,10,28,248,22,183,14,23,196,2,
+10,28,248,22,141,7,23,196,2,28,248,22,141,15,23,196,2,10,248,22,142,
15,23,196,2,11,12,252,22,188,9,2,27,2,33,36,23,200,2,23,201,2,
28,28,248,22,141,7,23,197,2,10,248,22,130,8,23,197,2,12,252,22,188,
9,2,27,2,47,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,
-248,22,134,15,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,191,9,
-2,27,2,48,23,201,2,249,22,7,194,195,27,249,22,187,14,249,22,142,8,
-250,22,177,15,0,9,35,114,120,35,34,91,46,93,34,248,22,183,14,23,203,
+248,22,140,15,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,191,9,
+2,27,2,48,23,201,2,249,22,7,194,195,27,249,22,129,15,249,22,142,8,
+250,22,183,15,0,9,35,114,120,35,34,91,46,93,34,248,22,189,14,23,203,
1,6,1,1,95,28,248,22,141,7,23,202,2,249,22,156,8,23,203,1,8,
-63,23,201,1,28,248,22,178,14,23,199,2,248,22,179,14,23,199,1,86,94,
-23,198,1,247,22,180,14,28,248,22,177,14,194,249,22,131,15,195,194,192,249,
-247,22,171,5,194,11,249,247,22,171,5,194,11,27,247,22,157,15,249,80,159,
+63,23,201,1,28,248,22,184,14,23,199,2,248,22,185,14,23,199,1,86,94,
+23,198,1,247,22,186,14,28,248,22,183,14,194,249,22,137,15,195,194,192,249,
+247,22,171,5,194,11,249,247,22,171,5,194,11,27,247,22,163,15,249,80,159,
39,40,38,28,23,195,2,27,248,22,161,8,2,49,28,192,192,2,44,2,44,
-27,28,23,196,1,250,22,131,15,248,22,153,15,2,50,247,22,159,8,2,51,
-11,27,248,80,159,42,8,29,39,250,22,93,9,248,22,89,248,22,153,15,2,
-41,9,28,193,249,22,79,195,194,192,27,247,22,157,15,249,80,159,39,40,38,
+27,28,23,196,1,250,22,137,15,248,22,159,15,2,50,247,22,159,8,2,51,
+11,27,248,80,159,42,8,29,39,250,22,93,9,248,22,89,248,22,159,15,2,
+41,9,28,193,249,22,79,195,194,192,27,247,22,163,15,249,80,159,39,40,38,
28,23,195,2,27,248,22,161,8,2,49,28,192,192,2,44,2,44,27,28,23,
-196,1,250,22,131,15,248,22,153,15,2,50,247,22,159,8,2,51,11,27,248,
-80,159,42,8,30,39,250,22,93,23,203,1,248,22,89,248,22,153,15,2,41,
-9,28,193,249,22,79,195,194,192,27,247,22,157,15,249,80,159,39,40,38,28,
+196,1,250,22,137,15,248,22,159,15,2,50,247,22,159,8,2,51,11,27,248,
+80,159,42,8,30,39,250,22,93,23,203,1,248,22,89,248,22,159,15,2,41,
+9,28,193,249,22,79,195,194,192,27,247,22,163,15,249,80,159,39,40,38,28,
23,195,2,27,248,22,161,8,2,49,28,192,192,2,44,2,44,27,28,23,196,
-1,250,22,131,15,248,22,153,15,2,50,247,22,159,8,2,51,11,27,248,80,
-159,42,8,31,39,250,22,93,23,203,1,248,22,89,248,22,153,15,2,41,23,
+1,250,22,137,15,248,22,159,15,2,50,247,22,159,8,2,51,11,27,248,80,
+159,42,8,31,39,250,22,93,23,203,1,248,22,89,248,22,159,15,2,41,23,
204,1,28,193,249,22,79,195,194,192,86,94,249,22,130,7,247,22,167,5,195,
248,22,154,6,249,22,135,4,36,249,22,183,3,197,198,27,28,23,197,2,86,
-95,23,196,1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,153,15,2,
+95,23,196,1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,159,15,2,
32,27,250,80,159,42,39,39,23,197,1,11,11,27,248,22,138,4,23,199,1,
27,28,23,194,2,23,194,1,86,94,23,194,1,36,27,248,22,138,4,23,202,
1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,249,22,134,6,23,199,
@@ -496,7 +496,7 @@
16,2,88,163,36,37,54,38,2,4,223,0,33,57,80,159,36,38,37,20,15,
16,2,20,25,96,2,5,88,163,8,36,39,8,25,52,9,223,0,33,64,88,
163,36,38,47,44,9,223,0,33,65,88,163,36,37,46,44,9,223,0,33,66,
-80,159,36,39,37,20,15,16,2,27,248,22,161,15,248,22,155,8,27,28,249,
+80,159,36,39,37,20,15,16,2,27,248,22,167,15,248,22,155,8,27,28,249,
22,151,9,247,22,163,8,2,34,6,1,1,59,6,1,1,58,250,22,189,7,
6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,
196,1,88,163,8,36,38,48,11,2,6,223,0,33,70,80,159,36,40,37,20,
@@ -505,7 +505,7 @@
36,42,37,20,15,16,2,32,0,88,163,8,36,38,46,11,2,9,222,33,74,
80,159,36,43,37,20,15,16,2,88,163,45,39,49,8,128,8,2,10,223,0,
33,76,80,159,36,44,37,20,15,16,2,88,163,45,40,50,8,128,8,2,12,
-223,0,33,78,80,159,36,46,37,20,15,16,2,248,22,153,15,70,108,105,110,
+223,0,33,78,80,159,36,46,37,20,15,16,2,248,22,159,15,70,108,105,110,
107,115,45,102,105,108,101,80,159,36,47,37,20,15,16,2,247,22,140,2,80,
158,36,48,20,15,16,2,2,79,80,158,36,49,20,15,16,2,248,80,159,37,
51,37,88,163,36,36,49,8,240,8,0,3,0,9,223,1,33,80,80,159,36,
@@ -529,7 +529,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 8952);
}
{
- SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,49,56,84,0,0,0,0,0,0,0,0,0,
+ SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,48,84,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,1,0,0,15,0,40,
0,57,0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,0,0,
179,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23,
@@ -556,7 +556,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 502);
}
{
- SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,49,56,84,0,0,0,0,0,0,0,0,0,
+ SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,48,84,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,1,0,0,7,0,18,
0,45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0,
187,0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,63,1,94,1,101,
@@ -590,33 +590,33 @@
109,111,100,6,2,2,46,46,6,1,1,46,64,102,105,108,101,66,112,108,97,
110,101,116,6,8,8,109,97,105,110,46,114,107,116,6,4,4,46,114,107,116,
67,105,103,110,111,114,101,100,249,22,14,195,80,159,38,50,38,249,80,159,38,
-53,39,195,10,90,159,39,11,89,161,39,36,11,248,22,134,15,197,86,95,23,
-195,1,23,193,1,28,249,22,165,15,0,11,35,114,120,34,91,46,93,115,115,
-36,34,248,22,182,14,23,197,1,249,80,159,41,57,39,198,2,26,196,27,28,
+53,39,195,10,90,159,39,11,89,161,39,36,11,248,22,140,15,197,86,95,23,
+195,1,23,193,1,28,249,22,171,15,0,11,35,114,120,34,91,46,93,115,115,
+36,34,248,22,188,14,23,197,1,249,80,159,41,57,39,198,2,26,196,27,28,
23,195,2,28,249,22,151,9,23,197,2,80,158,39,51,86,94,23,195,1,80,
158,37,52,27,248,22,148,5,23,197,2,27,28,248,22,77,23,195,2,248,22,
-80,23,195,1,23,194,1,28,248,22,177,14,23,194,2,90,159,39,11,89,161,
-39,36,11,248,22,134,15,23,197,1,86,95,20,18,159,11,80,158,42,51,199,
+80,23,195,1,23,194,1,28,248,22,183,14,23,194,2,90,159,39,11,89,161,
+39,36,11,248,22,140,15,23,197,1,86,95,20,18,159,11,80,158,42,51,199,
20,18,159,11,80,158,42,52,192,192,11,11,28,23,193,2,192,86,94,23,193,
-1,27,247,22,172,5,28,192,192,247,22,154,15,28,24,194,2,12,20,13,159,
+1,27,247,22,172,5,28,192,192,247,22,160,15,28,24,194,2,12,20,13,159,
80,159,36,56,37,80,158,36,54,89,161,37,37,10,249,22,190,4,21,94,2,
27,6,19,19,112,108,97,110,101,116,47,114,101,115,111,108,118,101,114,46,114,
107,116,1,27,112,108,97,110,101,116,45,109,111,100,117,108,101,45,110,97,109,
-101,45,114,101,115,111,108,118,101,114,12,250,22,131,15,23,197,1,23,199,1,
-249,80,159,43,42,39,23,198,1,2,30,250,22,131,15,23,197,1,23,199,1,
-249,80,159,43,42,39,23,198,1,2,30,252,22,131,15,23,199,1,23,201,1,
+101,45,114,101,115,111,108,118,101,114,12,250,22,137,15,23,197,1,23,199,1,
+249,80,159,43,42,39,23,198,1,2,30,250,22,137,15,23,197,1,23,199,1,
+249,80,159,43,42,39,23,198,1,2,30,252,22,137,15,23,199,1,23,201,1,
2,31,247,22,164,8,249,80,159,45,42,39,23,200,1,80,159,45,36,38,252,
-22,131,15,23,199,1,23,201,1,2,31,247,22,164,8,249,80,159,45,42,39,
-23,200,1,80,159,45,36,38,27,252,22,131,15,23,200,1,23,202,1,2,31,
+22,137,15,23,199,1,23,201,1,2,31,247,22,164,8,249,80,159,45,42,39,
+23,200,1,80,159,45,36,38,27,252,22,137,15,23,200,1,23,202,1,2,31,
247,22,164,8,249,80,159,46,42,39,23,201,1,80,159,46,36,38,27,250,22,
-148,15,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,
-195,194,11,27,252,22,131,15,23,200,1,23,202,1,2,31,247,22,164,8,249,
-80,159,46,42,39,23,201,1,80,159,46,36,38,27,250,22,148,15,196,11,32,
+154,15,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,
+195,194,11,27,252,22,137,15,23,200,1,23,202,1,2,31,247,22,164,8,249,
+80,159,46,42,39,23,201,1,80,159,46,36,38,27,250,22,154,15,196,11,32,
0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,195,194,11,27,250,
-22,131,15,23,198,1,23,200,1,249,80,159,44,42,39,23,199,1,2,30,27,
-250,22,148,15,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,
-22,79,195,194,11,27,250,22,131,15,23,198,1,23,200,1,249,80,159,44,42,
-39,23,199,1,2,30,27,250,22,148,15,196,11,32,0,88,163,8,36,36,41,
+22,137,15,23,198,1,23,200,1,249,80,159,44,42,39,23,199,1,2,30,27,
+250,22,154,15,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,
+22,79,195,194,11,27,250,22,137,15,23,198,1,23,200,1,249,80,159,44,42,
+39,23,199,1,2,30,27,250,22,154,15,196,11,32,0,88,163,8,36,36,41,
11,9,222,11,28,192,249,22,79,195,194,11,86,95,28,248,80,159,37,40,39,
23,195,2,12,250,22,188,9,2,28,6,12,12,112,97,116,104,45,115,116,114,
105,110,103,63,23,197,2,28,28,23,195,2,28,248,22,64,23,196,2,10,28,
@@ -627,30 +627,30 @@
111,110,115,47,99,32,40,111,114,47,99,32,35,102,32,115,121,109,98,111,108,
63,41,32,40,110,111,110,45,101,109,112,116,121,45,108,105,115,116,111,102,32,
115,121,109,98,111,108,63,41,41,41,23,197,2,27,28,23,196,2,247,22,188,
-4,11,27,28,23,194,2,250,22,160,2,80,158,41,41,248,22,190,15,247,22,
-152,13,11,11,27,28,23,194,2,250,22,160,2,248,22,81,23,198,2,23,198,
+4,11,27,28,23,194,2,250,22,160,2,80,158,41,41,248,22,132,16,247,22,
+158,13,11,11,27,28,23,194,2,250,22,160,2,248,22,81,23,198,2,23,198,
2,11,11,28,23,193,2,86,96,23,197,1,23,195,1,23,194,1,20,13,159,
80,159,39,38,37,250,80,159,42,39,37,249,22,33,11,80,159,44,38,37,22,
189,4,248,22,104,196,27,248,22,113,194,20,13,159,80,159,40,38,37,250,80,
-159,43,39,37,249,22,33,11,80,159,45,38,37,22,172,5,28,248,22,177,14,
-23,197,2,23,196,1,86,94,23,196,1,247,22,154,15,249,247,22,170,5,248,
+159,43,39,37,249,22,33,11,80,159,45,38,37,22,172,5,28,248,22,183,14,
+23,197,2,23,196,1,86,94,23,196,1,247,22,160,15,249,247,22,170,5,248,
22,80,196,200,86,94,23,193,1,90,159,46,11,89,161,37,36,11,28,248,22,
-137,15,23,208,2,23,207,2,27,247,22,172,5,28,23,193,2,249,22,138,15,
-23,210,2,23,195,1,23,208,2,89,161,39,37,11,248,22,134,15,23,208,1,
-86,94,23,196,1,89,161,38,40,11,28,23,208,2,27,248,22,182,14,23,197,
+143,15,23,208,2,23,207,2,27,247,22,172,5,28,23,193,2,249,22,144,15,
+23,210,2,23,195,1,23,208,2,89,161,39,37,11,248,22,140,15,23,208,1,
+86,94,23,196,1,89,161,38,40,11,28,23,208,2,27,248,22,188,14,23,197,
2,27,248,22,135,8,23,195,2,28,28,249,22,131,4,23,195,2,40,249,22,
138,8,2,26,249,22,141,8,23,198,2,249,22,183,3,23,199,2,40,11,249,
-22,7,23,199,2,248,22,186,14,249,22,142,8,250,22,141,8,23,202,1,36,
+22,7,23,199,2,248,22,128,15,249,22,142,8,250,22,141,8,23,202,1,36,
249,22,183,3,23,203,1,40,5,3,46,115,115,249,22,7,23,199,2,11,249,
22,7,23,197,2,11,89,161,37,42,11,28,249,22,151,9,23,199,2,23,197,
-2,23,193,2,249,22,131,15,23,196,2,23,199,2,89,161,37,43,11,28,23,
+2,23,193,2,249,22,137,15,23,196,2,23,199,2,89,161,37,43,11,28,23,
198,2,28,249,22,151,9,23,200,2,23,197,1,23,193,1,86,94,23,193,1,
-249,22,131,15,23,196,2,23,200,2,86,94,23,195,1,11,89,161,37,44,11,
+249,22,137,15,23,196,2,23,200,2,86,94,23,195,1,11,89,161,37,44,11,
28,249,22,151,9,23,196,2,68,114,101,108,97,116,105,118,101,86,94,23,194,
-1,2,29,23,194,1,89,161,37,45,11,247,22,156,15,27,250,22,148,15,23,
+1,2,29,23,194,1,89,161,37,45,11,247,22,162,15,27,250,22,154,15,23,
203,2,11,32,0,88,163,8,36,36,41,11,9,222,11,27,28,23,194,2,249,
22,79,23,203,2,23,196,1,86,94,23,194,1,11,27,28,23,203,2,28,23,
-194,2,11,27,250,22,148,15,23,207,2,11,32,0,88,163,8,36,36,41,11,
+194,2,11,27,250,22,154,15,23,207,2,11,32,0,88,163,8,36,36,41,11,
9,222,11,28,192,249,22,79,23,206,2,194,11,11,27,28,23,195,2,23,195,
2,23,194,2,27,88,163,36,37,50,8,64,62,122,111,225,18,13,9,33,47,
27,88,163,36,37,50,8,64,66,97,108,116,45,122,111,225,19,14,11,33,48,
@@ -666,8 +666,8 @@
194,1,20,13,159,80,159,8,24,38,37,250,80,159,8,27,39,37,249,22,33,
11,80,159,8,29,38,37,22,189,4,11,20,13,159,80,159,8,24,38,37,250,
80,159,8,27,39,37,249,22,33,11,80,159,8,29,38,37,22,172,5,28,248,
-22,177,14,23,216,2,23,215,1,86,94,23,215,1,247,22,154,15,249,247,22,
-160,15,248,22,80,195,23,28,86,94,23,193,1,27,28,23,195,2,28,23,197,
+22,183,14,23,216,2,23,215,1,86,94,23,215,1,247,22,160,15,249,247,22,
+166,15,248,22,80,195,23,28,86,94,23,193,1,27,28,23,195,2,28,23,197,
1,27,249,22,5,88,163,8,36,37,53,8,65,9,225,28,23,20,33,52,23,
217,2,27,28,23,204,2,11,193,28,192,192,28,193,28,203,28,249,22,131,4,
248,22,81,196,248,22,81,206,193,11,11,11,11,86,94,23,197,1,11,28,23,
@@ -675,8 +675,8 @@
1,23,201,1,23,200,1,23,199,1,23,196,1,23,195,1,20,13,159,80,159,
8,25,38,37,250,80,159,8,28,39,37,249,22,33,11,80,159,8,30,38,37,
22,189,4,23,215,1,20,13,159,80,159,8,25,38,37,250,80,159,8,28,39,
-37,249,22,33,11,80,159,8,30,38,37,22,172,5,28,248,22,177,14,23,217,
-2,23,216,1,86,94,23,216,1,247,22,154,15,249,247,22,160,15,248,22,80,
+37,249,22,33,11,80,159,8,30,38,37,22,172,5,28,248,22,183,14,23,217,
+2,23,216,1,86,94,23,216,1,247,22,160,15,249,247,22,166,15,248,22,80,
195,23,29,86,94,23,193,1,27,28,23,197,2,28,23,201,1,27,249,22,5,
20,20,94,88,163,8,36,37,51,8,64,9,225,29,24,20,33,53,23,213,1,
23,218,2,27,28,23,204,2,11,193,28,192,192,28,193,28,23,204,2,28,249,
@@ -687,8 +687,8 @@
22,89,23,199,1,11,23,221,2,12,20,13,159,80,159,8,26,38,37,250,80,
159,8,29,39,37,249,22,33,11,80,159,8,31,38,37,22,189,4,11,20,13,
159,80,159,8,26,38,37,250,80,159,8,29,39,37,249,22,33,11,80,159,8,
-31,38,37,22,172,5,28,248,22,177,14,23,218,2,23,217,1,86,94,23,217,
-1,247,22,154,15,249,247,22,170,5,248,22,80,195,23,30,86,94,23,193,1,
+31,38,37,22,172,5,28,248,22,183,14,23,218,2,23,217,1,86,94,23,217,
+1,247,22,160,15,249,247,22,170,5,248,22,80,195,23,30,86,94,23,193,1,
27,28,23,197,1,28,23,201,1,27,249,22,5,20,20,94,88,163,8,36,37,
51,8,64,9,225,30,25,22,33,54,23,215,1,23,219,1,27,28,23,205,2,
11,193,28,192,192,28,193,28,204,28,249,22,131,4,248,22,81,196,248,22,81,
@@ -698,16 +698,16 @@
23,221,2,23,222,2,12,20,13,159,80,159,8,27,38,37,250,80,159,8,30,
39,37,249,22,33,11,80,159,8,32,38,37,22,189,4,23,217,1,20,13,159,
80,159,8,27,38,37,250,80,159,8,30,39,37,249,22,33,11,80,159,8,32,
-38,37,22,172,5,28,248,22,177,14,23,219,2,23,218,1,86,94,23,218,1,
-247,22,154,15,249,247,22,170,5,248,22,80,195,23,31,86,94,23,193,1,28,
+38,37,22,172,5,28,248,22,183,14,23,219,2,23,218,1,86,94,23,218,1,
+247,22,160,15,249,247,22,170,5,248,22,80,195,23,31,86,94,23,193,1,28,
28,248,22,77,23,223,2,248,22,80,23,223,2,10,27,28,23,199,2,86,94,
23,215,1,23,214,1,86,94,23,214,1,23,215,1,28,28,248,22,77,23,224,
-32,0,0,0,2,248,22,149,9,248,22,189,14,23,195,2,11,12,20,13,159,
+32,0,0,0,2,248,22,149,9,248,22,131,15,23,195,2,11,12,20,13,159,
80,159,8,28,38,37,250,80,159,8,31,39,37,249,22,33,11,80,159,8,33,
38,37,22,189,4,28,23,33,28,23,202,1,11,195,86,94,23,202,1,11,20,
13,159,80,159,8,28,38,37,250,80,159,8,31,39,37,249,22,33,11,80,159,
-8,33,38,37,22,172,5,28,248,22,177,14,23,220,2,23,219,1,86,94,23,
-219,1,247,22,154,15,249,247,22,170,5,194,23,32,12,28,193,250,22,158,2,
+8,33,38,37,22,172,5,28,248,22,183,14,23,220,2,23,219,1,86,94,23,
+219,1,247,22,160,15,249,247,22,170,5,194,23,32,12,28,193,250,22,158,2,
248,22,81,197,195,250,22,89,200,201,202,12,27,249,22,171,8,80,159,39,46,
38,249,22,190,3,248,22,186,3,248,22,173,2,200,8,128,8,27,28,193,248,
22,176,2,194,11,28,192,27,249,22,102,198,195,28,192,248,22,81,193,11,11,
@@ -715,12 +715,12 @@
8,80,159,40,46,38,195,27,28,193,248,22,176,2,194,11,250,22,172,8,80,
159,42,46,38,197,248,22,175,2,249,22,79,249,22,79,204,205,28,198,198,9,
0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,60,
-88,163,8,36,37,59,11,2,32,222,33,61,27,249,22,165,15,2,59,23,196,
+88,163,8,36,37,59,11,2,32,222,33,61,27,249,22,171,15,2,59,23,196,
2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,27,248,
-22,113,23,197,1,27,249,22,165,15,2,59,23,196,2,28,23,193,2,86,94,
+22,113,23,197,1,27,249,22,171,15,2,59,23,196,2,28,23,193,2,86,94,
23,194,1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,
-22,165,15,2,59,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248,
-22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,165,15,2,59,23,196,
+22,171,15,2,59,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248,
+22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,171,15,2,59,23,196,
2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,248,2,
60,248,22,113,23,197,1,248,22,89,194,248,22,89,194,248,22,89,194,248,22,
89,194,32,62,88,163,36,37,55,11,2,32,222,33,63,28,248,22,87,248,22,
@@ -730,12 +730,12 @@
22,81,23,195,2,249,22,7,9,248,22,80,195,90,159,38,11,89,161,38,36,
11,248,2,62,248,22,81,196,249,22,7,249,22,79,248,22,80,199,196,195,249,
22,7,249,22,79,248,22,80,199,196,195,249,22,7,249,22,79,248,22,80,199,
-196,195,27,27,249,22,165,15,2,59,23,197,2,28,23,193,2,86,94,23,195,
-1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,165,
+196,195,27,27,249,22,171,15,2,59,23,197,2,28,23,193,2,86,94,23,195,
+1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,171,
15,2,59,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,
-23,196,2,27,248,22,113,23,197,1,27,249,22,165,15,2,59,23,196,2,28,
+23,196,2,27,248,22,113,23,197,1,27,249,22,171,15,2,59,23,196,2,28,
23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,27,248,22,113,
-23,197,1,27,249,22,165,15,2,59,23,196,2,28,23,193,2,86,94,23,194,
+23,197,1,27,249,22,171,15,2,59,23,196,2,28,23,193,2,86,94,23,194,
1,249,22,79,248,22,104,23,196,2,248,2,60,248,22,113,23,197,1,248,22,
89,194,248,22,89,194,248,22,89,194,248,22,89,195,28,23,195,1,192,28,248,
22,87,248,22,81,23,195,2,249,22,7,9,248,22,80,195,27,248,22,81,194,
@@ -746,16 +746,16 @@
201,196,195,249,22,7,249,22,79,248,22,80,202,196,195,249,22,7,249,22,79,
248,22,80,200,196,195,86,96,28,248,22,146,5,23,196,2,12,250,22,188,9,
2,22,6,21,21,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,
-112,97,116,104,63,23,198,2,28,28,23,196,2,248,22,153,13,23,197,2,10,
+112,97,116,104,63,23,198,2,28,28,23,196,2,248,22,159,13,23,197,2,10,
12,250,22,188,9,2,22,6,20,20,40,111,114,47,99,32,35,102,32,110,97,
109,101,115,112,97,99,101,63,41,23,199,2,28,24,193,2,248,24,194,1,23,
-196,2,86,94,23,193,1,12,27,250,22,160,2,80,159,41,41,38,248,22,190,
-15,247,22,152,13,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,
+196,2,86,94,23,193,1,12,27,250,22,160,2,80,159,41,41,38,248,22,132,
+16,247,22,158,13,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,
22,79,247,22,140,2,247,22,140,2,86,94,250,22,158,2,80,159,43,41,38,
-248,22,190,15,247,22,152,13,195,192,86,94,250,22,158,2,248,22,80,23,197,
+248,22,132,16,247,22,158,13,195,192,86,94,250,22,158,2,248,22,80,23,197,
2,23,200,2,68,100,101,99,108,97,114,101,100,28,23,198,2,27,28,248,22,
77,248,22,148,5,23,200,2,248,22,147,5,248,22,80,248,22,148,5,23,201,
-1,23,198,1,27,250,22,160,2,80,159,44,41,38,248,22,190,15,23,204,1,
+1,23,198,1,27,250,22,160,2,80,159,44,41,38,248,22,132,16,23,204,1,
11,28,23,193,2,27,250,22,160,2,248,22,81,23,198,1,197,11,28,192,250,
22,158,2,248,22,81,199,197,195,12,12,12,251,211,197,198,199,10,32,67,88,
163,36,38,47,11,76,102,108,97,116,116,101,110,45,115,117,98,45,112,97,116,
@@ -765,7 +765,7 @@
23,195,1,250,22,184,9,2,22,6,37,37,116,111,111,32,109,97,110,121,32,
34,46,46,34,115,32,105,110,32,115,117,98,109,111,100,117,108,101,32,112,97,
116,104,58,32,126,46,115,250,22,90,2,34,28,249,22,153,9,23,201,2,2,
-36,198,28,248,22,177,14,199,198,249,22,89,28,248,22,64,201,2,4,2,37,
+36,198,28,248,22,183,14,199,198,249,22,89,28,248,22,64,201,2,4,2,37,
200,199,251,2,68,196,197,248,22,81,199,248,22,81,200,251,2,68,196,197,249,
22,79,248,22,80,202,200,248,22,81,200,251,2,68,196,197,9,197,27,249,22,
164,7,6,31,31,115,116,97,110,100,97,114,100,45,109,111,100,117,108,101,45,
@@ -777,16 +777,16 @@
198,39,249,22,164,7,250,22,163,7,198,36,249,22,183,3,199,39,2,40,193,
193,0,8,35,114,120,34,91,46,93,34,32,76,88,163,8,36,37,47,11,2,
32,222,33,77,28,248,22,87,23,194,2,9,250,22,90,6,4,4,10,32,32,
-32,248,22,181,14,248,22,105,23,198,2,248,2,76,248,22,81,23,198,1,28,
+32,248,22,187,14,248,22,105,23,198,2,248,2,76,248,22,81,23,198,1,28,
249,22,153,9,248,22,81,23,200,2,23,197,1,28,249,22,151,9,248,22,80,
23,200,1,23,196,1,251,22,184,9,2,22,6,41,41,99,121,99,108,101,32,
105,110,32,108,111,97,100,105,110,103,10,32,32,97,116,32,112,97,116,104,58,
32,126,97,10,32,32,112,97,116,104,115,58,126,97,23,200,1,249,22,1,22,
164,7,248,2,76,248,22,94,23,201,1,12,12,247,192,20,13,159,80,159,43,
-49,38,249,22,79,249,22,79,248,22,190,15,247,22,152,13,23,201,1,23,195,
+49,38,249,22,79,249,22,79,248,22,132,16,247,22,158,13,23,201,1,23,195,
1,20,13,159,80,159,43,38,37,250,80,159,46,39,37,249,22,33,11,80,159,
48,38,37,22,188,4,23,198,2,249,247,22,171,5,23,200,1,27,248,22,67,
-248,22,181,14,23,201,1,28,23,202,2,28,250,22,160,2,248,22,80,23,201,
+248,22,187,14,23,201,1,28,23,202,2,28,250,22,160,2,248,22,80,23,201,
1,23,201,1,11,249,22,79,11,203,249,22,79,194,203,192,86,94,28,248,22,
156,5,23,196,2,12,28,23,197,2,250,22,186,9,11,6,15,15,98,97,100,
32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250,22,188,9,2,22,
@@ -826,7 +826,7 @@
249,2,67,2,36,28,249,22,153,9,248,22,104,23,204,2,2,35,248,22,81,
23,202,1,248,22,106,23,202,1,28,248,22,77,193,248,22,81,193,11,11,11,
27,28,248,22,64,23,196,2,27,248,80,159,43,47,39,249,22,79,23,199,2,
-247,22,155,15,28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,
+247,22,161,15,28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,
36,11,249,80,159,46,53,39,248,22,70,23,201,2,11,27,28,248,22,87,23,
195,2,2,39,249,22,164,7,23,197,2,2,40,251,80,159,49,58,39,23,204,
1,28,248,22,87,23,199,2,23,199,1,86,94,23,199,1,248,22,80,23,199,
@@ -834,45 +834,45 @@
197,1,28,248,22,141,7,23,196,2,86,94,23,196,1,27,248,80,159,43,8,
28,39,23,202,2,27,248,80,159,44,47,39,249,22,79,23,200,2,23,197,2,
28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,36,11,249,80,
-159,47,53,39,23,201,2,11,250,22,1,22,131,15,23,199,1,249,22,93,249,
+159,47,53,39,23,201,2,11,250,22,1,22,137,15,23,199,1,249,22,93,249,
22,2,32,0,88,163,8,36,37,44,11,9,222,33,72,23,200,1,248,22,89,
-248,2,73,23,201,1,28,248,22,177,14,23,196,2,86,94,23,196,1,248,80,
-159,42,8,29,39,248,22,140,15,28,248,22,137,15,23,198,2,23,197,2,249,
-22,138,15,23,199,2,248,80,159,46,8,28,39,23,205,2,28,249,22,151,9,
+248,2,73,23,201,1,28,248,22,183,14,23,196,2,86,94,23,196,1,248,80,
+159,42,8,29,39,248,22,146,15,28,248,22,143,15,23,198,2,23,197,2,249,
+22,144,15,23,199,2,248,80,159,46,8,28,39,23,205,2,28,249,22,151,9,
248,22,80,23,198,2,2,27,27,248,80,159,43,47,39,249,22,79,23,199,2,
-247,22,155,15,28,23,193,2,192,86,94,23,193,1,90,159,39,11,89,161,38,
+247,22,161,15,28,23,193,2,192,86,94,23,193,1,90,159,39,11,89,161,38,
36,11,249,80,159,47,53,39,248,22,104,23,202,2,11,89,161,37,38,11,28,
-248,22,87,248,22,106,23,201,2,28,248,22,87,23,194,2,249,22,169,15,2,
+248,22,87,248,22,106,23,201,2,28,248,22,87,23,194,2,249,22,175,15,2,
75,23,196,2,11,10,27,28,23,196,2,248,2,73,23,196,2,28,248,22,87,
-23,195,2,2,39,28,249,22,169,15,2,75,23,197,2,248,2,73,23,196,2,
+23,195,2,2,39,28,249,22,175,15,2,75,23,197,2,248,2,73,23,196,2,
249,22,164,7,23,197,2,2,40,27,28,23,197,1,86,94,23,196,1,249,22,
93,28,248,22,87,248,22,106,23,205,2,21,93,6,5,5,109,122,108,105,98,
249,22,1,22,93,249,22,2,80,159,53,8,30,39,248,22,106,23,208,2,23,
197,1,28,248,22,87,23,196,2,86,94,23,195,1,248,22,89,23,197,1,86,
94,23,196,1,23,195,1,251,80,159,51,58,39,23,206,1,248,22,80,23,198,
2,248,22,81,23,198,1,23,198,1,28,249,22,151,9,248,22,80,23,198,2,
-2,37,248,80,159,42,8,29,39,248,22,140,15,249,22,138,15,248,22,142,15,
+2,37,248,80,159,42,8,29,39,248,22,146,15,249,22,144,15,248,22,148,15,
248,22,104,23,201,2,248,80,159,46,8,28,39,23,205,2,12,86,94,28,28,
-248,22,177,14,23,194,2,10,248,22,166,8,23,194,2,86,94,23,201,1,12,
+248,22,183,14,23,194,2,10,248,22,166,8,23,194,2,86,94,23,201,1,12,
28,23,201,2,250,22,186,9,67,114,101,113,117,105,114,101,249,22,189,7,6,
17,17,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,
198,2,248,22,80,23,199,2,6,0,0,23,204,1,86,94,23,201,1,250,22,
188,9,2,22,2,33,23,198,2,27,28,248,22,166,8,23,195,2,249,22,171,
-8,23,196,2,36,249,22,140,15,248,22,141,15,23,197,2,11,27,28,248,22,
+8,23,196,2,36,249,22,146,15,248,22,147,15,23,197,2,11,27,28,248,22,
166,8,23,196,2,249,22,171,8,23,197,2,37,248,80,159,44,59,39,23,195,
2,90,159,39,11,89,161,39,36,11,28,248,22,166,8,23,199,2,250,22,7,
-2,41,249,22,171,8,23,203,2,38,2,41,248,22,134,15,23,198,2,86,95,
+2,41,249,22,171,8,23,203,2,38,2,41,248,22,140,15,23,198,2,86,95,
23,195,1,23,193,1,27,28,248,22,166,8,23,200,2,249,22,171,8,23,201,
2,39,249,80,159,49,57,39,23,197,2,5,0,27,28,248,22,166,8,23,201,
2,249,22,171,8,23,202,2,40,248,22,147,5,23,200,2,27,250,22,160,2,
-80,159,52,41,38,248,22,190,15,247,22,152,13,11,27,28,23,194,2,23,194,
+80,159,52,41,38,248,22,132,16,247,22,158,13,11,27,28,23,194,2,23,194,
1,86,94,23,194,1,27,249,22,79,247,22,140,2,247,22,140,2,86,94,250,
-22,158,2,80,159,54,41,38,248,22,190,15,247,22,152,13,195,192,27,28,23,
+22,158,2,80,159,54,41,38,248,22,132,16,247,22,158,13,195,192,27,28,23,
204,2,248,22,147,5,249,22,79,248,22,148,5,23,200,2,23,207,2,23,196,
2,86,95,28,23,212,1,27,250,22,160,2,248,22,80,23,199,2,196,11,28,
23,193,1,12,27,27,28,248,22,17,80,159,55,50,38,80,159,54,50,38,247,
-22,19,251,22,33,11,80,159,58,49,38,9,23,197,1,27,248,22,190,15,247,
-22,152,13,86,94,249,22,3,20,20,94,88,163,8,36,37,54,11,9,226,14,
+22,19,251,22,33,11,80,159,58,49,38,9,23,197,1,27,248,22,132,16,247,
+22,158,13,86,94,249,22,3,20,20,94,88,163,8,36,37,54,11,9,226,14,
13,2,3,33,78,23,195,1,23,196,2,248,28,248,22,17,80,159,56,50,38,
32,0,88,163,36,37,42,11,9,222,33,79,80,159,55,8,31,39,20,20,96,
88,163,36,36,56,8,140,128,9,230,19,15,13,12,8,7,5,2,33,80,23,
@@ -880,11 +880,11 @@
22,141,7,23,206,2,10,28,248,22,64,23,206,2,10,28,248,22,77,23,206,
2,249,22,151,9,248,22,80,23,208,2,2,27,11,249,80,159,53,48,39,28,
248,22,141,7,23,208,2,249,22,79,23,209,1,248,80,159,56,8,28,39,23,
-215,1,86,94,23,212,1,249,22,79,23,209,1,247,22,155,15,252,22,168,8,
+215,1,86,94,23,212,1,249,22,79,23,209,1,247,22,161,15,252,22,168,8,
23,209,1,23,208,1,23,206,1,23,204,1,23,203,1,12,192,86,96,20,18,
159,11,80,158,36,54,248,80,159,37,8,26,37,249,22,33,11,80,159,39,56,
37,248,22,187,4,80,159,37,55,38,248,22,171,5,80,159,37,37,39,248,22,
-146,14,80,159,37,44,39,20,18,159,11,80,158,36,54,248,80,159,37,8,26,
+152,14,80,159,37,44,39,20,18,159,11,80,158,36,54,248,80,159,37,8,26,
37,249,22,33,11,80,159,39,56,37,20,18,159,11,80,158,36,54,248,80,159,
37,8,26,37,249,22,33,11,80,159,39,56,37,159,36,20,113,159,36,16,1,
11,16,0,20,26,144,9,2,1,2,1,29,11,11,11,9,9,11,11,11,10,
@@ -937,7 +937,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 7928);
}
{
- SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,49,56,84,0,0,0,0,0,0,0,0,0,
+ SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,48,84,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,16,
0,29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,98,1,
0,0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,
diff --git a/src/racket/src/error.c b/src/racket/src/error.c
index cad46de6b4..9c71f5377a 100644
--- a/src/racket/src/error.c
+++ b/src/racket/src/error.c
@@ -787,6 +787,16 @@ call_error(char *buffer, int len, Scheme_Object *exn)
p[1] = exn;
scheme_apply_multi(display_handler, 2, p);
+ if (SCHEME_CHAPERONE_STRUCTP(exn)
+ && (scheme_is_struct_instance(exn_table[MZEXN_BREAK_HANG_UP].type, exn)
+ || scheme_is_struct_instance(exn_table[MZEXN_BREAK_TERMINATE].type, exn))) {
+ /* Default uncaught exception handler exits on `exn:break:hang-up'
+ or `exn:break:terminate'. */
+ p[0] = scheme_make_integer(1);
+ scheme_do_exit(1, p);
+ /* Fall through to regular escape if the exit handler doesn't exit/escape. */
+ }
+
v = scheme_make_byte_string_without_copying("error escape handler");
v = scheme_make_closed_prim_w_arity(nested_exn_handler,
scheme_make_pair(v, exn),
diff --git a/src/racket/src/makeexn b/src/racket/src/makeexn
index 61868a833c..fe08d4aa75 100755
--- a/src/racket/src/makeexn
+++ b/src/racket/src/makeexn
@@ -65,7 +65,11 @@ propeties (the latter in curly braces), strings are contracts/comments.
(break [break_field_check
(continuation "escape continuation" "resumes from the break")]
- "asynchronous break signal"))
+ "asynchronous break signal"
+ (hang-up []
+ "terminal disconnect")
+ (terminate []
+ "termination request")))
)
diff --git a/src/racket/src/place.c b/src/racket/src/place.c
index b2bbf82a32..93c47bbac6 100644
--- a/src/racket/src/place.c
+++ b/src/racket/src/place.c
@@ -135,7 +135,7 @@ void scheme_init_place(Scheme_Env *env)
PLACE_PRIM_W_ARITY("place-sleep", place_sleep, 1, 1, plenv);
PLACE_PRIM_W_ARITY("place-wait", place_wait, 1, 1, plenv);
PLACE_PRIM_W_ARITY("place-kill", place_kill, 1, 1, plenv);
- PLACE_PRIM_W_ARITY("place-break", place_break, 1, 1, plenv);
+ PLACE_PRIM_W_ARITY("place-break", place_break, 1, 2, plenv);
PLACE_PRIM_W_ARITY("place?", place_p, 1, 1, plenv);
PLACE_PRIM_W_ARITY("place-channel", place_channel, 0, 0, plenv);
PLACE_PRIM_W_ARITY("place-channel-put", place_send, 2, 2, plenv);
@@ -550,7 +550,7 @@ static void do_place_kill(Scheme_Place *place)
place->place_obj = NULL;
}
-static int do_place_break(Scheme_Place *place)
+static int do_place_break(Scheme_Place *place, int kind)
{
Scheme_Place_Object *place_obj;
place_obj = place->place_obj;
@@ -558,7 +558,7 @@ static int do_place_break(Scheme_Place *place)
if (place_obj) {
mzrt_mutex_lock(place_obj->lock);
- place_obj->pbreak = 1;
+ place_obj->pbreak = kind;
if (place_obj->signal_handle)
scheme_signal_received_at(place_obj->signal_handle);
@@ -585,14 +585,30 @@ static Scheme_Object *place_kill(int argc, Scheme_Object *args[]) {
return scheme_void;
}
-static Scheme_Object *place_break(int argc, Scheme_Object *args[]) {
- Scheme_Place *place;
- place = (Scheme_Place *) args[0];
+static Scheme_Object *place_break(int argc, Scheme_Object *args[])
+{
+ Scheme_Place *place = (Scheme_Place *) args[0];
+ int kind = MZEXN_BREAK;
if (!SAME_TYPE(SCHEME_TYPE(args[0]), scheme_place_type))
scheme_wrong_contract("place-break", "place?", 0, argc, args);
- return scheme_make_integer(do_place_break(place));
+ if ((argc > 1) && SCHEME_TRUEP(args[1])) {
+ if (SCHEME_SYMBOLP(args[1])
+ && !SCHEME_SYM_WEIRDP(args[1])
+ && !strcmp(SCHEME_SYM_VAL(args[1]), "hang-up"))
+ kind = MZEXN_BREAK_HANG_UP;
+ else if (SCHEME_SYMBOLP(args[1])
+ && !SCHEME_SYM_WEIRDP(args[1])
+ && !strcmp(SCHEME_SYM_VAL(args[1]), "terminate"))
+ kind = MZEXN_BREAK_TERMINATE;
+ else
+ scheme_wrong_contract("place-break", "(or/c #f 'hang-up 'terminate)", 1, argc, args);
+ }
+
+ do_place_break(place, kind);
+
+ return scheme_void;
}
static int place_deadp(Scheme_Object *place) {
@@ -2324,7 +2340,7 @@ void scheme_place_check_for_interruption()
if (local_die > 0)
scheme_kill_thread(scheme_main_thread);
if (local_break)
- scheme_break_thread(NULL);
+ scheme_break_kind_thread(NULL, local_break);
}
void scheme_place_set_memory_use(intptr_t mem_use)
diff --git a/src/racket/src/schemef.h b/src/racket/src/schemef.h
index 2b84c0d61c..85cbf777a4 100644
--- a/src/racket/src/schemef.h
+++ b/src/racket/src/schemef.h
@@ -107,8 +107,10 @@ MZ_EXTERN Scheme_Object *scheme_thread_w_details(Scheme_Object *thunk,
int suspend_to_kill);
MZ_EXTERN void scheme_kill_thread(Scheme_Thread *p);
MZ_EXTERN void scheme_break_thread(Scheme_Thread *p);
+MZ_EXTERN void scheme_break_kind_thread(Scheme_Thread *p, int kind);
MZ_EXTERN void scheme_break_main_thread();
MZ_EXTERN void scheme_break_main_thread_at(void *);
+MZ_EXTERN void scheme_break_kind_main_thread_at(void *, int kind);
MZ_EXTERN void *scheme_get_main_thread_break_handle();
MZ_EXTERN void scheme_set_break_main_target(Scheme_Thread *p);
diff --git a/src/racket/src/schemex.h b/src/racket/src/schemex.h
index 5226fd5e6d..e69de29bb2 100644
--- a/src/racket/src/schemex.h
+++ b/src/racket/src/schemex.h
@@ -1,968 +0,0 @@
-/*
- Racket
- Copyright (c) 2004-2012 PLT Scheme Inc.
- Copyright (c) 1995-2001 Matthew Flatt
- All rights reserved.
-
- Please see the full copyright in the documentation.
-
- Originally based on:
- libscheme
- Copyright (c) 1994 Brent Benson
- All rights reserved.
-*/
-
-typedef struct {
-/*========================================================================*/
-/* setjmpup (continuations) */
-/*========================================================================*/
-void (*scheme_init_jmpup_buf)(Scheme_Jumpup_Buf *b);
-int (*scheme_setjmpup_relative)(Scheme_Jumpup_Buf *b, void *base,
- void * volatile start, struct Scheme_Cont *cont);
-void (*scheme_longjmpup)(Scheme_Jumpup_Buf *b);
-void (*scheme_reset_jmpup_buf)(Scheme_Jumpup_Buf *b);
-#ifdef USE_MZ_SETJMP
-int (*scheme_mz_setjmp)(mz_pre_jmp_buf b);
-void (*scheme_mz_longjmp)(mz_pre_jmp_buf b, int v);
-#endif
-void (*scheme_clear_escape)(void);
-Scheme_Jumpup_Buf_Holder *(*scheme_new_jmpupbuf_holder)(void);
-/*========================================================================*/
-/* parameters */
-/*========================================================================*/
-Scheme_Config *(*scheme_current_config)(void);
-Scheme_Config *(*scheme_minimal_config)(void);
-Scheme_Config *(*scheme_extend_config)(Scheme_Config *c, int pos, Scheme_Object *init_val);
-void (*scheme_install_config)(Scheme_Config *);
-Scheme_Object *(*scheme_get_param)(Scheme_Config *c, int pos);
-void (*scheme_set_param)(Scheme_Config *c, int pos, Scheme_Object *o);
-Scheme_Object *(*scheme_get_thread_param)(Scheme_Config *c, Scheme_Thread_Cell_Table *cells, int pos);
-void (*scheme_set_thread_param)(Scheme_Config *c, Scheme_Thread_Cell_Table *cells, int pos, Scheme_Object *o);
-Scheme_Env *(*scheme_get_env)(Scheme_Config *config);
-Scheme_Thread_Cell_Table *(*scheme_empty_cell_table)();
-Scheme_Thread_Cell_Table *(*scheme_inherit_cells)(Scheme_Thread_Cell_Table *cells);
-Scheme_Object *(*scheme_current_break_cell)();
-/*========================================================================*/
-/* threads */
-/*========================================================================*/
-#ifndef USE_THREAD_LOCAL
-# ifndef LINK_EXTENSIONS_BY_TABLE
-Scheme_Thread *scheme_current_thread;
-volatile int scheme_fuel_counter;
-# else
-Scheme_Thread **scheme_current_thread_ptr;
-volatile int *scheme_fuel_counter_ptr;
-# endif
-#endif
-Scheme_Thread *(*scheme_get_current_thread)();
-void (*scheme_start_atomic)(void);
-void (*scheme_end_atomic)(void);
-void (*scheme_end_atomic_no_swap)(void);
-void (*scheme_start_in_scheduler)(void);
-void (*scheme_end_in_scheduler)(void);
-void (*scheme_start_atomic_no_break)(void);
-void (*scheme_end_atomic_can_break)(void);
-void (*scheme_out_of_fuel)(void);
-Scheme_Object *(*scheme_thread)(Scheme_Object *thunk);
-Scheme_Object *(*scheme_thread_w_details)(Scheme_Object *thunk,
- Scheme_Config *init_config,
- Scheme_Thread_Cell_Table *copy_from,
- Scheme_Object *break_cell,
- Scheme_Custodian *owning_custodian,
- int suspend_to_kill);
-void (*scheme_kill_thread)(Scheme_Thread *p);
-void (*scheme_break_thread)(Scheme_Thread *p);
-void (*scheme_break_main_thread)();
-void (*scheme_break_main_thread_at)(void *);
-void *(*scheme_get_main_thread_break_handle)();
-void (*scheme_set_break_main_target)(Scheme_Thread *p);
-void (*scheme_thread_block)(float sleep_time);
-void (*scheme_thread_block_enable_break)(float sleep_time, int enable);
-void (*scheme_swap_thread)(Scheme_Thread *process);
-void (*scheme_making_progress)();
-void (*scheme_weak_suspend_thread)(Scheme_Thread *p);
-void (*scheme_weak_resume_thread)(Scheme_Thread *p);
-int (*scheme_block_until)(Scheme_Ready_Fun f, Scheme_Needs_Wakeup_Fun, Scheme_Object *, float);
-int (*scheme_block_until_enable_break)(Scheme_Ready_Fun f, Scheme_Needs_Wakeup_Fun, Scheme_Object *,
- float, int enable);
-int (*scheme_block_until_unless)(Scheme_Ready_Fun f, Scheme_Needs_Wakeup_Fun fdf,
- Scheme_Object *data, float delay,
- Scheme_Object *unless,
- int enable_break);
-void (*scheme_wait_input_allowed)(Scheme_Input_Port *port, int nonblock);
-int (*scheme_unless_ready)(Scheme_Object *unless);
-int (*scheme_in_main_thread)(void);
-void (*scheme_cancel_sleep)(void);
-void (*scheme_start_sleeper_thread)(void (*mzsleep)(float seconds, void *fds), float secs, void *fds, int hit_fd);
-void (*scheme_end_sleeper_thread)();
-void (*scheme_set_place_sleep)(Scheme_Sleep_Proc slp);
-void (*scheme_notify_sleep_progress)();
-Scheme_Object *(*scheme_make_thread_cell)(Scheme_Object *def_val, int inherited);
-Scheme_Object *(*scheme_thread_cell_get)(Scheme_Object *cell, Scheme_Thread_Cell_Table *cells);
-void (*scheme_thread_cell_set)(Scheme_Object *cell, Scheme_Thread_Cell_Table *cells, Scheme_Object *v);
-int (*scheme_tls_allocate)();
-void (*scheme_tls_set)(int pos, void *v);
-void *(*scheme_tls_get)(int pos);
-Scheme_Custodian *(*scheme_make_custodian)(Scheme_Custodian *);
-Scheme_Custodian_Reference *(*scheme_add_managed)(Scheme_Custodian *m, Scheme_Object *o,
- Scheme_Close_Custodian_Client *f, void *data,
- int strong);
-Scheme_Custodian_Reference *(*scheme_add_managed_close_on_exit)(Scheme_Custodian *m, Scheme_Object *o,
- Scheme_Close_Custodian_Client *f, void *data);
-void (*scheme_custodian_check_available)(Scheme_Custodian *m, const char *who, const char *what);
-int (*scheme_custodian_is_available)(Scheme_Custodian *m);
-void (*scheme_remove_managed)(Scheme_Custodian_Reference *m, Scheme_Object *o);
-void (*scheme_close_managed)(Scheme_Custodian *m);
-void (*scheme_schedule_custodian_close)(Scheme_Custodian *c);
-void (*scheme_add_custodian_extractor)(Scheme_Type t, Scheme_Custodian_Extractor e);
-void (*scheme_add_atexit_closer)(Scheme_Exit_Closer_Func f);
-void (*scheme_add_evt)(Scheme_Type type,
- Scheme_Ready_Fun ready,
- Scheme_Needs_Wakeup_Fun wakeup,
- Scheme_Sync_Filter_Fun filter,
- int can_redirect);
-void (*scheme_add_evt_through_sema)(Scheme_Type type,
- Scheme_Sync_Sema_Fun sema,
- Scheme_Sync_Filter_Fun filter);
-int (*scheme_is_evt)(Scheme_Object *o);
-Scheme_Object *(*scheme_sync)(int argc, Scheme_Object *argv[]);
-Scheme_Object *(*scheme_sync_enable_break)(int argc, Scheme_Object *argv[]);
-Scheme_Object *(*scheme_sync_timeout)(int argc, Scheme_Object *argv[]);
-Scheme_Object *(*scheme_make_evt_set)(int argc, Scheme_Object **argv);
-void (*scheme_add_swap_callback)(Scheme_Closure_Func f, Scheme_Object *data);
-void (*scheme_add_swap_out_callback)(Scheme_Closure_Func f, Scheme_Object *data);
-Scheme_Object *(*scheme_call_enable_break)(Scheme_Prim *prim, int argc, Scheme_Object *argv[]);
-int (*scheme_close_should_force_port_closed)();
-void (*scheme_push_kill_action)(Scheme_Kill_Action_Func f, void *d);
-void (*scheme_pop_kill_action)();
-void (*scheme_set_can_break)(int on);
-void (*scheme_push_break_enable)(Scheme_Cont_Frame_Data *cframe, int on, int pre_check);
-void (*scheme_pop_break_enable)(Scheme_Cont_Frame_Data *cframe, int post_check);
-int (*scheme_with_stack_freeze)(Scheme_Frozen_Stack_Proc wha_f, void *wha_data);
-int (*scheme_frozen_run_some)(Scheme_Frozen_Stack_Proc do_f, void *do_data, int run_msecs);
-int (*scheme_is_in_frozen_stack)();
-Scheme_Object *scheme_abort_continuation_no_dws;
-Scheme_Object *scheme_call_with_composable_no_dws;
-Scheme_On_Atomic_Timeout_Proc (*scheme_set_on_atomic_timeout)(Scheme_On_Atomic_Timeout_Proc p);
-/*========================================================================*/
-/* error handling */
-/*========================================================================*/
-void (*scheme_signal_error)(const char *msg, ...);
-void (*scheme_raise_exn)(int exnid, ...);
-void (*scheme_warning)(char *msg, ...);
-void (*scheme_raise)(Scheme_Object *exn);
-int (*scheme_log_level_p)(Scheme_Logger *logger, int level);
-void (*scheme_log)(Scheme_Logger *logger, int level, int flags,
- const char *msg, ...);
-void (*scheme_log_w_data)(Scheme_Logger *logger, int level, int flags,
- Scheme_Object *data,
- const char *msg, ...);
-void (*scheme_log_message)(Scheme_Logger *logger, int level, char *buffer, intptr_t len, Scheme_Object *data);
-void (*scheme_log_abort)(char *buffer);
-void (*scheme_log_warning)(char *buffer);
-void (*scheme_glib_log_message)(const char *log_domain, int log_level, const char *message, void *user_data);
-void (*scheme_out_of_memory_abort)();
-void (*scheme_wrong_count)(const char *name, int minc, int maxc,
- int argc, Scheme_Object **argv);
-void (*scheme_wrong_count_m)(const char *name, int minc, int maxc,
- int argc, Scheme_Object **argv,
- int is_method);
-void (*scheme_case_lambda_wrong_count)(const char *name, int argc,
- Scheme_Object **argv, int is_method, int count, ...);
-void (*scheme_wrong_type)(const char *name, const char *expected,
- int which, int argc,
- Scheme_Object **argv);
-void (*scheme_wrong_contract)(const char *name, const char *expected,
- int which, int argc,
- Scheme_Object **argv);
-void (*scheme_wrong_field_type)(Scheme_Object *c_name,
- const char *expected,
- Scheme_Object *o);
-void (*scheme_wrong_field_contract)(Scheme_Object *c_name,
- const char *expected,
- Scheme_Object *o);
-void (*scheme_arg_mismatch)(const char *name, const char *msg, Scheme_Object *o);
-void (*scheme_contract_error)(const char *name, const char *msg, ...);
-void (*scheme_wrong_return_arity)(const char *where,
- int expected, int got,
- Scheme_Object **argv,
- const char *context_detail, ...);
-void (*scheme_unbound_global)(Scheme_Bucket *b);
-Scheme_Object *(*scheme_dynamic_wind)(void (*pre)(void *),
- Scheme_Object *(* volatile act)(void *),
- void (* volatile post)(void *),
- Scheme_Object *(*jmp_handler)(void *),
- void * volatile data);
-/*========================================================================*/
-/* types */
-/*========================================================================*/
-Scheme_Type (*scheme_make_type)(const char *name);
-char *(*scheme_get_type_name)(Scheme_Type type);
-char *(*scheme_get_type_name_or_null)(Scheme_Type type);
-/*========================================================================*/
-/* constants */
-/*========================================================================*/
-Scheme_Object *scheme_eof;
-Scheme_Object *(*scheme_make_eof)(void);
-Scheme_Object *scheme_null;
-Scheme_Object *(*scheme_make_null)(void);
-Scheme_Object *scheme_true;
-Scheme_Object *(*scheme_make_true)(void);
-Scheme_Object *scheme_false;
-Scheme_Object *(*scheme_make_false)(void);
-Scheme_Object *scheme_void;
-Scheme_Object *(*scheme_make_void)(void);
-Scheme_Object *scheme_undefined;
-Scheme_Object *scheme_tail_call_waiting;
-Scheme_Object *scheme_multiple_values;
-unsigned short **scheme_uchar_table;
-unsigned char **scheme_uchar_cases_table;
-unsigned char **scheme_uchar_cats_table;
-int *scheme_uchar_ups;
-int *scheme_uchar_downs;
-int *scheme_uchar_titles;
-int *scheme_uchar_folds;
-unsigned char *scheme_uchar_combining_classes;
-void *scheme_on_demand_jit_code;
-/*========================================================================*/
-/* evaluation */
-/*========================================================================*/
-Scheme_Object *(*scheme_eval)(Scheme_Object *obj, Scheme_Env *env);
-Scheme_Object *(*scheme_eval_multi)(Scheme_Object *obj, Scheme_Env *env);
-Scheme_Object *(*scheme_eval_with_prompt)(Scheme_Object *obj, Scheme_Env *env);
-Scheme_Object *(*scheme_eval_multi_with_prompt)(Scheme_Object *obj, Scheme_Env *env);
-Scheme_Object *(*scheme_eval_compiled)(Scheme_Object *obj, Scheme_Env *env);
-Scheme_Object *(*scheme_eval_compiled_multi)(Scheme_Object *obj, Scheme_Env *env);
-Scheme_Object *(*_scheme_eval_compiled)(Scheme_Object *obj, Scheme_Env *env);
-Scheme_Object *(*_scheme_eval_compiled_multi)(Scheme_Object *obj, Scheme_Env *env);
-Scheme_Object *(*scheme_apply)(Scheme_Object *rator, int num_rands, Scheme_Object **rands);
-Scheme_Object *(*scheme_apply_multi)(Scheme_Object *rator, int num_rands, Scheme_Object **rands);
-Scheme_Object *(*scheme_apply_no_eb)(Scheme_Object *rator, int num_rands, Scheme_Object **rands);
-Scheme_Object *(*scheme_apply_multi_no_eb)(Scheme_Object *rator, int num_rands, Scheme_Object **rands);
-Scheme_Object *(*scheme_apply_to_list)(Scheme_Object *rator, Scheme_Object *argss);
-Scheme_Object *(*scheme_apply_with_prompt)(Scheme_Object *rator, int num_rands, Scheme_Object **rands);
-Scheme_Object *(*scheme_apply_multi_with_prompt)(Scheme_Object *rator, int num_rands, Scheme_Object **rands);
-Scheme_Object *(*_scheme_apply_with_prompt)(Scheme_Object *rator, int num_rands, Scheme_Object **rands);
-Scheme_Object *(*_scheme_apply_multi_with_prompt)(Scheme_Object *rator, int num_rands, Scheme_Object **rands);
-Scheme_Object *(*scheme_eval_string)(const char *str, Scheme_Env *env);
-Scheme_Object *(*scheme_eval_string_multi)(const char *str, Scheme_Env *env);
-Scheme_Object *(*scheme_eval_string_all)(const char *str, Scheme_Env *env, int all);
-Scheme_Object *(*scheme_eval_string_with_prompt)(const char *str, Scheme_Env *env);
-Scheme_Object *(*scheme_eval_string_multi_with_prompt)(const char *str, Scheme_Env *env);
-Scheme_Object *(*scheme_eval_string_all_with_prompt)(const char *str, Scheme_Env *env, int all);
-Scheme_Object *(*scheme_eval_all_with_prompt)(Scheme_Object *port, Scheme_Env *env, int all);
-Scheme_Object *(*scheme_eval_module_string)(const char *str, Scheme_Env *env);
-Scheme_Object *(*_scheme_apply_known_prim_closure)(Scheme_Object *rator, int argc,
- Scheme_Object **argv);
-Scheme_Object *(*_scheme_apply_known_prim_closure_multi)(Scheme_Object *rator, int argc,
- Scheme_Object **argv);
-Scheme_Object *(*_scheme_apply_prim_closure)(Scheme_Object *rator, int argc,
- Scheme_Object **argv);
-Scheme_Object *(*_scheme_apply_prim_closure_multi)(Scheme_Object *rator, int argc,
- Scheme_Object **argv);
-Scheme_Object **(*scheme_current_argument_stack)();
-Scheme_Object *(*scheme_call_with_prompt)(Scheme_Closed_Prim f, void *data);
-Scheme_Object *(*scheme_call_with_prompt_multi)(Scheme_Closed_Prim f, void *data);
-Scheme_Object *(*_scheme_call_with_prompt)(Scheme_Closed_Prim f, void *data);
-Scheme_Object *(*_scheme_call_with_prompt_multi)(Scheme_Closed_Prim f, void *data);
-Scheme_Object *(*scheme_values)(int c, Scheme_Object **v);
-Scheme_Object *(*scheme_check_one_value)(Scheme_Object *v);
-/* Tail calls - only use these when you're writing new functions/syntax */
-Scheme_Object *(*scheme_tail_apply)(Scheme_Object *f, int n, Scheme_Object **arg);
-Scheme_Object *(*scheme_tail_apply_no_copy)(Scheme_Object *f, int n, Scheme_Object **arg);
-Scheme_Object *(*scheme_tail_apply_to_list)(Scheme_Object *f, Scheme_Object *l);
-Scheme_Object *(*scheme_tail_eval_expr)(Scheme_Object *obj);
-void (*scheme_set_tail_buffer_size)(int s);
-Scheme_Object *(*scheme_force_value)(Scheme_Object *);
-Scheme_Object *(*scheme_force_one_value)(Scheme_Object *);
-MZ_MARK_STACK_TYPE (*scheme_set_cont_mark)(Scheme_Object *key, Scheme_Object *val);
-void (*scheme_push_continuation_frame)(Scheme_Cont_Frame_Data *);
-void (*scheme_pop_continuation_frame)(Scheme_Cont_Frame_Data *);
-void (*scheme_temp_dec_mark_depth)();
-void (*scheme_temp_inc_mark_depth)();
-Scheme_Object *(*scheme_current_continuation_marks)(Scheme_Object *prompt_tag);
-Scheme_Object *(*scheme_extract_one_cc_mark)(Scheme_Object *mark_set,
- Scheme_Object *key);
-Scheme_Object *(*scheme_extract_one_cc_mark_to_tag)(Scheme_Object *mark_set,
- Scheme_Object *key,
- Scheme_Object *prompt_tag);
-/* Internal */
-Scheme_Object *(*scheme_do_eval)(Scheme_Object *obj, int _num_rands, Scheme_Object **rands, int val);
-Scheme_Object *(*scheme_eval_compiled_stx_string)(Scheme_Object *expr, Scheme_Env *env,
- intptr_t shift, Scheme_Object *modidx);
-Scheme_Object *(*scheme_load_compiled_stx_string)(const char *str, intptr_t len);
-Scheme_Object *(*scheme_compiled_stx_symbol)(Scheme_Object *stx);
-Scheme_Object *(*scheme_eval_compiled_sized_string)(const char *str, int len, Scheme_Env *env);
-Scheme_Object *(*scheme_eval_compiled_sized_string_with_magic)(const char *str, int len, Scheme_Env *env,
- Scheme_Object *magic_symbol, Scheme_Object *magic_val,
- int multi_ok);
-void (*scheme_detach_multple_array)(Scheme_Object **a);
-/*========================================================================*/
-/* memory management */
-/*========================================================================*/
-/* The core allocator functions depend on the GC. Macros in scheme.h */
-/* map to the apporpriate core allocation function. */
-#ifndef SCHEME_NO_GC
-# ifndef SCHEME_NO_GC_PROTO
-void *(*GC_malloc)(size_t size_in_bytes);
-void *(*GC_malloc_atomic)(size_t size_in_bytes);
-# ifdef MZ_PRECISE_GC
-void *(*GC_malloc_one_tagged)(size_t size_in_bytes);
-void *(*GC_malloc_atomic_uncollectable)(size_t size_in_bytes);
-void *(*scheme_malloc_uncollectable)(size_t size_in_bytes);
-void *(*GC_malloc_array_tagged)(size_t size_in_bytes);
-void *(*GC_malloc_allow_interior)(size_t size_in_bytes);
-void *(*GC_malloc_atomic_allow_interior)(size_t size_in_bytes);
-void *(*GC_malloc_tagged_allow_interior)(size_t size_in_bytes);
-# else
-void *(*GC_malloc_stubborn)(size_t size_in_bytes);
-void *(*GC_malloc_uncollectable)(size_t size_in_bytes);
-# endif
-# endif
-#endif
-void *(*scheme_malloc_code)(intptr_t size);
-void *(*scheme_malloc_permanent_code)(intptr_t size);
-void (*scheme_free_code)(void *p);
-#ifndef MZ_PRECISE_GC
-void *(*scheme_malloc_gcable_code)(intptr_t size);
-#endif
-void *(*scheme_malloc_eternal)(size_t n);
-void (*scheme_end_stubborn_change)(void *p);
-void *(*scheme_calloc)(size_t num, size_t size);
-char *(*scheme_strdup)(const char *str);
-char *(*scheme_strdup_eternal)(const char *str);
-void *(*scheme_malloc_fail_ok)(void *(*f)(size_t), size_t);
-#ifndef MZ_PRECISE_GC
-void (*scheme_late_weak_reference)(void **p);
-void (*scheme_late_weak_reference_indirect)(void **p, void *v);
-void (*scheme_weak_reference)(void **p);
-void (*scheme_weak_reference_indirect)(void **p, void *v);
-void (*scheme_unweak_reference)(void **p);
-#endif
-void (*scheme_add_finalizer)(void *p, void (*f)(void *p, void *data), void *data);
-void (*scheme_add_finalizer_once)(void *p, void (*f)(void *p, void *data), void *data);
-void (*scheme_subtract_finalizer)(void *p, void (*f)(void *p, void *data), void *data);
-void (*scheme_add_scheme_finalizer)(void *p, void (*f)(void *p, void *data), void *data);
-void (*scheme_add_scheme_finalizer_once)(void *p, void (*f)(void *p, void *data), void *data);
-void (*scheme_register_finalizer)(void *p,
- void (*f)(void *p, void *data), void *data,
- void (**oldf)(void *p, void *data),
- void **olddata);
-void (*scheme_remove_all_finalization)(void *p);
-void (*scheme_dont_gc_ptr)(void *p);
-void (*scheme_gc_ptr_ok)(void *p);
-void (*scheme_collect_garbage)(void);
-void (*scheme_enable_garbage_collection)(int on);
-#ifdef MZ_PRECISE_GC
-# ifndef USE_THREAD_LOCAL
-void **GC_variable_stack;
-# endif
-void (*GC_register_traversers)(short tag, Size_Proc size, Mark_Proc mark, Fixup_Proc fixup,
- int is_constant_size, int is_atomic);
-void *(*GC_resolve)(void *p);
-void (*GC_mark)(const void *p);
-void (*GC_fixup)(void *p);
-void *(*GC_fixup_self)(void *p);
-#endif
-void **(*scheme_malloc_immobile_box)(void *p);
-void (*scheme_free_immobile_box)(void **b);
-Scheme_Object *(*scheme_add_gc_callback)(Scheme_Object *pre, Scheme_Object *post);
-void (*scheme_remove_gc_callback)(Scheme_Object *key);
-/*========================================================================*/
-/* hash tables */
-/*========================================================================*/
-Scheme_Bucket_Table *(*scheme_make_bucket_table)(intptr_t size_hint, int type);
-void (*scheme_add_to_table)(Scheme_Bucket_Table *table, const char *key, void *val, int);
-void (*scheme_change_in_table)(Scheme_Bucket_Table *table, const char *key, void *new_val);
-void *(*scheme_lookup_in_table)(Scheme_Bucket_Table *table, const char *key);
-Scheme_Bucket *(*scheme_bucket_from_table)(Scheme_Bucket_Table *table, const char *key);
-int (*scheme_bucket_table_equal)(Scheme_Bucket_Table *t1, Scheme_Bucket_Table *t2);
-Scheme_Bucket_Table *(*scheme_clone_bucket_table)(Scheme_Bucket_Table *bt);
-Scheme_Hash_Table *(*scheme_make_hash_table)(int type);
-Scheme_Hash_Table *(*scheme_make_hash_table_equal)();
-Scheme_Hash_Table *(*scheme_make_hash_table_eqv)();
-void (*scheme_hash_set)(Scheme_Hash_Table *table, Scheme_Object *key, Scheme_Object *val);
-Scheme_Object *(*scheme_hash_get)(Scheme_Hash_Table *table, Scheme_Object *key);
-Scheme_Object *(*scheme_eq_hash_get)(Scheme_Hash_Table *table, Scheme_Object *key);
-void (*scheme_hash_set_atomic)(Scheme_Hash_Table *table, Scheme_Object *key, Scheme_Object *val);
-Scheme_Object *(*scheme_hash_get_atomic)(Scheme_Hash_Table *table, Scheme_Object *key);
-int (*scheme_hash_table_equal)(Scheme_Hash_Table *t1, Scheme_Hash_Table *t2);
-int (*scheme_is_hash_table_equal)(Scheme_Object *o);
-int (*scheme_is_hash_table_eqv)(Scheme_Object *o);
-Scheme_Hash_Table *(*scheme_clone_hash_table)(Scheme_Hash_Table *bt);
-Scheme_Hash_Tree *(*scheme_make_hash_tree)(int kind);
-Scheme_Hash_Tree *(*scheme_hash_tree_set)(Scheme_Hash_Tree *tree, Scheme_Object *key, Scheme_Object *val);
-Scheme_Object *(*scheme_hash_tree_get)(Scheme_Hash_Tree *tree, Scheme_Object *key);
-Scheme_Object *(*scheme_eq_hash_tree_get)(Scheme_Hash_Tree *tree, Scheme_Object *key);
-intptr_t (*scheme_hash_tree_next)(Scheme_Hash_Tree *tree, intptr_t pos);
-int (*scheme_hash_tree_index)(Scheme_Hash_Tree *tree, intptr_t pos, Scheme_Object **_key, Scheme_Object **_val);
-int (*scheme_hash_tree_equal)(Scheme_Hash_Tree *t1, Scheme_Hash_Tree *t2);
-int (*scheme_is_hash_tree_equal)(Scheme_Object *o);
-int (*scheme_is_hash_tree_eqv)(Scheme_Object *o);
-/*========================================================================*/
-/* basic Scheme value constructors */
-/*========================================================================*/
-Scheme_Object *(*scheme_make_prim)(Scheme_Prim *prim);
-Scheme_Object *(*scheme_make_noneternal_prim)(Scheme_Prim *prim);
-Scheme_Object *(*scheme_make_prim_w_arity)(Scheme_Prim *prim, const char *name,
- mzshort mina, mzshort maxa);
-Scheme_Object *(*scheme_make_folding_prim)(Scheme_Prim *prim,
- const char *name,
- mzshort mina, mzshort maxa,
- short functional);
-Scheme_Object *(*scheme_make_immed_prim)(Scheme_Prim *prim,
- const char *name,
- mzshort mina, mzshort maxa);
-Scheme_Object *(*scheme_make_noncm_prim)(Scheme_Prim *prim,
- const char *name,
- mzshort mina, mzshort maxa);
-Scheme_Object *(*scheme_make_noneternal_prim_w_arity)(Scheme_Prim *prim,
- const char *name,
- mzshort mina, mzshort maxa);
-Scheme_Object *(*scheme_make_prim_w_everything)(Scheme_Prim *fun, int eternal,
- const char *name,
- mzshort mina, mzshort maxa,
- int folding,
- mzshort minr, mzshort maxr);
-Scheme_Object *(*scheme_make_prim_closure_w_arity)(Scheme_Primitive_Closure_Proc *prim,
- int size, Scheme_Object **vals,
- const char *name,
- mzshort mina, mzshort maxa);
-Scheme_Object *(*scheme_make_folding_prim_closure)(Scheme_Primitive_Closure_Proc *prim,
- int size, Scheme_Object **vals,
- const char *name,
- mzshort mina, mzshort maxa,
- short functional);
-Scheme_Object *(*scheme_make_closed_prim)(Scheme_Closed_Prim *prim, void *data);
-Scheme_Object *(*scheme_make_closed_prim_w_arity)(Scheme_Closed_Prim *prim,
- void *data, const char *name,
- mzshort mina, mzshort maxa);
-Scheme_Object *(*scheme_make_folding_closed_prim)(Scheme_Closed_Prim *prim,
- void *data, const char *name,
- mzshort mina, mzshort maxa,
- short functional);
-Scheme_Object *(*scheme_make_closed_prim_w_everything)(Scheme_Closed_Prim *fun,
- void *data,
- const char *name,
- mzshort mina, mzshort maxa,
- short folding,
- mzshort minr, mzshort maxr);
-void (*scheme_prim_is_method)(Scheme_Object *o);
-Scheme_Object *(*scheme_make_pair)(Scheme_Object *car, Scheme_Object *cdr);
-Scheme_Object *(*scheme_make_mutable_pair)(Scheme_Object *car, Scheme_Object *cdr);
-Scheme_Object *(*scheme_make_raw_pair)(Scheme_Object *, Scheme_Object *);
-Scheme_Object *(*scheme_make_byte_string)(const char *chars);
-Scheme_Object *(*scheme_make_sized_byte_string)(char *chars, intptr_t len, int copy);
-Scheme_Object *(*scheme_make_sized_offset_byte_string)(char *chars, intptr_t d, intptr_t len, int copy);
-Scheme_Object *(*scheme_make_immutable_sized_byte_string)(char *chars, intptr_t len, int copy);
-Scheme_Object *(*scheme_make_byte_string_without_copying)(char *chars);
-Scheme_Object *(*scheme_alloc_byte_string)(intptr_t size, char fill);
-Scheme_Object *(*scheme_append_byte_string)(Scheme_Object *, Scheme_Object *);
-Scheme_Object *(*scheme_make_utf8_string)(const char *chars);
-Scheme_Object *(*scheme_make_sized_utf8_string)(char *chars, intptr_t len);
-Scheme_Object *(*scheme_make_sized_offset_utf8_string)(char *chars, intptr_t d, intptr_t len);
-Scheme_Object *(*scheme_make_immutable_sized_utf8_string)(char *chars, intptr_t len);
-Scheme_Object *(*scheme_make_locale_string)(const char *chars);
-Scheme_Object *(*scheme_char_string_to_byte_string)(Scheme_Object *s);
-Scheme_Object *(*scheme_byte_string_to_char_string)(Scheme_Object *s);
-Scheme_Object *(*scheme_char_string_to_byte_string_locale)(Scheme_Object *s);
-Scheme_Object *(*scheme_byte_string_to_char_string_locale)(Scheme_Object *s);
-Scheme_Object *(*scheme_char_string_to_path)(Scheme_Object *p);
-Scheme_Object *(*scheme_path_to_char_string)(Scheme_Object *p);
-Scheme_Object *(*scheme_make_char_string)(const mzchar *chars);
-Scheme_Object *(*scheme_make_sized_char_string)(mzchar *chars, intptr_t len, int copy);
-Scheme_Object *(*scheme_make_sized_offset_char_string)(mzchar *chars, intptr_t d, intptr_t len, int copy);
-Scheme_Object *(*scheme_make_immutable_sized_char_string)(mzchar *chars, intptr_t len, int copy);
-Scheme_Object *(*scheme_make_char_string_without_copying)(mzchar *chars);
-Scheme_Object *(*scheme_alloc_char_string)(intptr_t size, mzchar fill);
-Scheme_Object *(*scheme_append_char_string)(Scheme_Object *, Scheme_Object *);
-mzchar *(*scheme_string_recase)(mzchar *s, int d, int len, int mode, int inplace, int *_len);
-Scheme_Object *(*scheme_make_vector)(intptr_t size, Scheme_Object *fill);
-Scheme_Double_Vector *(*scheme_alloc_flvector)(intptr_t size);
-Scheme_Vector *(*scheme_alloc_fxvector)(intptr_t size);
-Scheme_Object *(*scheme_make_integer_value)(intptr_t i);
-Scheme_Object *(*scheme_make_integer_value_from_unsigned)(uintptr_t i);
-Scheme_Object *(*scheme_make_integer_value_from_long_long)(mzlonglong i);
-Scheme_Object *(*scheme_make_integer_value_from_unsigned_long_long)(umzlonglong i);
-Scheme_Object *(*scheme_make_integer_value_from_long_halves)(uintptr_t lowhalf, uintptr_t hihalf);
-Scheme_Object *(*scheme_make_integer_value_from_unsigned_long_halves)(uintptr_t lowhalf, uintptr_t hihalf);
-Scheme_Object *(*scheme_make_double)(double d);
-#ifdef MZ_USE_SINGLE_FLOATS
-Scheme_Object *(*scheme_make_float)(float f) ;
-#endif
-Scheme_Object *(*scheme_make_char)(mzchar ch);
-Scheme_Object *(*scheme_make_char_or_nul)(mzchar ch);
-Scheme_Object *(*scheme_make_sema)(intptr_t v);
-void (*scheme_post_sema)(Scheme_Object *o);
-void (*scheme_post_sema_all)(Scheme_Object *o);
-int (*scheme_wait_sema)(Scheme_Object *o, int just_try);
-int (*scheme_try_plain_sema)(Scheme_Object *o);
-Scheme_Object **scheme_char_constants;
-Scheme_Object *(*scheme_make_channel)();
-Scheme_Object *(*scheme_make_channel_put_evt)(Scheme_Object *ch, Scheme_Object *v);
-int (*scheme_get_int_val)(Scheme_Object *o, intptr_t *v);
-int (*scheme_get_unsigned_int_val)(Scheme_Object *o, uintptr_t *v);
-int (*scheme_get_long_long_val)(Scheme_Object *o, mzlonglong *v);
-int (*scheme_get_unsigned_long_long_val)(Scheme_Object *o, umzlonglong *v);
-double (*scheme_real_to_double)(Scheme_Object *r);
-Scheme_Object *(*scheme_make_cptr)(void *cptr, Scheme_Object *typetag);
-Scheme_Object *(*scheme_make_offset_cptr)(void *cptr, intptr_t offset, Scheme_Object *typetag);
-Scheme_Object *(*scheme_make_external_cptr)(void *cptr, Scheme_Object *typetag);
-Scheme_Object *(*scheme_make_offset_external_cptr)(void *cptr, intptr_t offset, Scheme_Object *typetag);
-int (*scheme_is_cpointer)(Scheme_Object *cp);
-const char *(*scheme_get_proc_name)(Scheme_Object *p, int *len, int for_error);
-/*========================================================================*/
-/* strings */
-/*========================================================================*/
-intptr_t (*scheme_utf8_decode)(const unsigned char *s, intptr_t start, intptr_t end,
- unsigned int *us, intptr_t dstart, intptr_t dend,
- intptr_t *ipos, char utf16, int permissive);
-intptr_t (*scheme_utf8_decode_as_prefix)(const unsigned char *s, intptr_t start, intptr_t end,
- unsigned int *us, intptr_t dstart, intptr_t dend,
- intptr_t *ipos, char utf16, int permissive);
-intptr_t (*scheme_utf8_decode_all)(const unsigned char *s, intptr_t len, unsigned int *us,
- int permissive);
-intptr_t (*scheme_utf8_decode_prefix)(const unsigned char *s, intptr_t len, unsigned int *us,
- int permissive);
-mzchar *(*scheme_utf8_decode_to_buffer)(const unsigned char *s, intptr_t len,
- mzchar *buf, intptr_t blen);
-mzchar *(*scheme_utf8_decode_to_buffer_len)(const unsigned char *s, intptr_t len,
- mzchar *buf, intptr_t blen, intptr_t *rlen);
-intptr_t (*scheme_utf8_decode_count)(const unsigned char *s, intptr_t start, intptr_t end,
- int *_state, int might_continue, int permissive);
-intptr_t (*scheme_utf8_encode)(const unsigned int *us, intptr_t start, intptr_t end,
- unsigned char *s, intptr_t dstart,
- char utf16);
-intptr_t (*scheme_utf8_encode_all)(const unsigned int *us, intptr_t len, unsigned char *s);
-char *(*scheme_utf8_encode_to_buffer)(const mzchar *s, intptr_t len,
- char *buf, intptr_t blen);
-char *(*scheme_utf8_encode_to_buffer_len)(const mzchar *s, intptr_t len,
- char *buf, intptr_t blen, intptr_t *rlen);
-unsigned short *(*scheme_ucs4_to_utf16)(const mzchar *text, intptr_t start, intptr_t end,
- unsigned short *buf, intptr_t bufsize,
- intptr_t *ulen, intptr_t term_size);
-mzchar *(*scheme_utf16_to_ucs4)(const unsigned short *text, intptr_t start, intptr_t end,
- mzchar *buf, intptr_t bufsize,
- intptr_t *ulen, intptr_t term_size);
-Scheme_Object *(*scheme_open_converter)(const char *from_e, const char *to_e);
-void (*scheme_close_converter)(Scheme_Object *conv);
-/*========================================================================*/
-/* bignums */
-/*========================================================================*/
-Scheme_Object *(*scheme_make_bignum)(intptr_t v);
-Scheme_Object *(*scheme_make_bignum_from_unsigned)(uintptr_t v);
-Scheme_Object *(*scheme_make_bignum_from_long_long)(mzlonglong v);
-Scheme_Object *(*scheme_make_bignum_from_unsigned_long_long)(umzlonglong v);
-double (*scheme_bignum_to_double)(const Scheme_Object *n);
-Scheme_Object *(*scheme_bignum_from_double)(double d);
-#ifdef MZ_USE_SINGLE_FLOATS
-float (*scheme_bignum_to_float)(const Scheme_Object *n);
-Scheme_Object *(*scheme_bignum_from_float)(float d);
-#else
-# define scheme_bignum_to_float scheme_bignum_to_double
-# define scheme_bignum_from_float scheme_bignum_from_double
-#endif
-char *(*scheme_bignum_to_string)(const Scheme_Object *n, int radix);
-char *(*scheme_bignum_to_allocated_string)(const Scheme_Object *n, int radix, int alloc);
-Scheme_Object *(*scheme_read_bignum)(const mzchar *str, int offset, int radix);
-Scheme_Object *(*scheme_read_bignum_bytes)(const char *str, int offset, int radix);
-Scheme_Object *(*scheme_bignum_normalize)(const Scheme_Object *n);
-/*========================================================================*/
-/* rationals */
-/*========================================================================*/
-Scheme_Object *(*scheme_make_rational)(const Scheme_Object *r, const Scheme_Object *d);
-double (*scheme_rational_to_double)(const Scheme_Object *n);
-Scheme_Object *(*scheme_rational_from_double)(double d);
-#ifdef MZ_USE_SINGLE_FLOATS
-float (*scheme_rational_to_float)(const Scheme_Object *n);
-Scheme_Object *(*scheme_rational_from_float)(float d);
-#else
-# define scheme_rational_to_float scheme_rational_to_double
-# define scheme_rational_from_float scheme_rational_from_double
-#endif
-Scheme_Object *(*scheme_rational_normalize)(const Scheme_Object *n);
-Scheme_Object *(*scheme_rational_numerator)(const Scheme_Object *n);
-Scheme_Object *(*scheme_rational_denominator)(const Scheme_Object *n);
-/*========================================================================*/
-/* complexes */
-/*========================================================================*/
-Scheme_Object *(*scheme_make_complex)(const Scheme_Object *r, const Scheme_Object *i);
-Scheme_Object *(*scheme_complex_normalize)(const Scheme_Object *n);
-Scheme_Object *(*scheme_complex_real_part)(const Scheme_Object *n);
-Scheme_Object *(*scheme_complex_imaginary_part)(const Scheme_Object *n);
-/* Exact/inexact: */
-int (*scheme_is_exact)(const Scheme_Object *n);
-int (*scheme_is_inexact)(const Scheme_Object *n);
-/*========================================================================*/
-/* macros, syntax, and compilation */
-/*========================================================================*/
-Scheme_Object *(*scheme_expand)(Scheme_Object *form, Scheme_Env *env);
-Scheme_Object *(*scheme_compile)(Scheme_Object *form, Scheme_Env *env, int writeable);
-/*========================================================================*/
-/* ports */
-/*========================================================================*/
-Scheme_Object *(*scheme_read)(Scheme_Object *port);
-Scheme_Object *(*scheme_read_syntax)(Scheme_Object *port, Scheme_Object *stxsrc);
-void (*scheme_write)(Scheme_Object *obj, Scheme_Object *port);
-void (*scheme_print)(Scheme_Object *obj, Scheme_Object *port);
-void (*scheme_display)(Scheme_Object *obj, Scheme_Object *port);
-void (*scheme_write_w_max)(Scheme_Object *obj, Scheme_Object *port, intptr_t maxl);
-void (*scheme_display_w_max)(Scheme_Object *obj, Scheme_Object *port, intptr_t maxl);
-void (*scheme_print_w_max)(Scheme_Object *obj, Scheme_Object *port, intptr_t maxl);
-void (*scheme_write_byte_string)(const char *str, intptr_t len, Scheme_Object *port);
-void (*scheme_write_char_string)(const mzchar *str, intptr_t len, Scheme_Object *port);
-intptr_t (*scheme_put_byte_string)(const char *who, Scheme_Object *port,
- const char *str, intptr_t d, intptr_t len,
- int rarely_block);
-intptr_t (*scheme_put_char_string)(const char *who, Scheme_Object *port,
- const mzchar *str, intptr_t d, intptr_t len);
-char *(*scheme_write_to_string)(Scheme_Object *obj, intptr_t *len);
-char *(*scheme_display_to_string)(Scheme_Object *obj, intptr_t *len);
-char *(*scheme_print_to_string)(Scheme_Object *obj, intptr_t *len);
-char *(*scheme_write_to_string_w_max)(Scheme_Object *obj, intptr_t *len, intptr_t maxl);
-char *(*scheme_display_to_string_w_max)(Scheme_Object *obj, intptr_t *len, intptr_t maxl);
-char *(*scheme_print_to_string_w_max)(Scheme_Object *obj, intptr_t *len, intptr_t maxl);
-void (*scheme_debug_print)(Scheme_Object *obj);
-void (*scheme_flush_output)(Scheme_Object *port);
-char *(*scheme_format)(mzchar *format, int flen, int argc, Scheme_Object **argv, intptr_t *rlen);
-void (*scheme_printf)(mzchar *format, int flen, int argc, Scheme_Object **argv);
-char *(*scheme_format_utf8)(char *format, int flen, int argc, Scheme_Object **argv, intptr_t *rlen);
-void (*scheme_printf_utf8)(char *format, int flen, int argc, Scheme_Object **argv);
-int (*scheme_getc)(Scheme_Object *port);
-int (*scheme_get_byte)(Scheme_Object *port);
-int (*scheme_peekc)(Scheme_Object *port);
-int (*scheme_peek_byte)(Scheme_Object *port);
-int (*scheme_peekc_skip)(Scheme_Object *port, Scheme_Object *skip);
-int (*scheme_peek_byte_skip)(Scheme_Object *port, Scheme_Object *skip, Scheme_Object *unless_evt);
-int (*scheme_getc_special_ok)(Scheme_Object *port);
-int (*scheme_get_byte_special_ok)(Scheme_Object *port);
-int (*scheme_peekc_special_ok)(Scheme_Object *port);
-int (*scheme_peek_byte_special_ok_skip)(Scheme_Object *port, Scheme_Object *skip, Scheme_Object *unless_evt);
-int (*scheme_peekc_special_ok_skip)(Scheme_Object *port, Scheme_Object *skip);
-void (*scheme_ungetc)(int ch, Scheme_Object *port);
-int (*scheme_byte_ready)(Scheme_Object *port);
-int (*scheme_char_ready)(Scheme_Object *port);
-int (*scheme_peekc_is_ungetc)(Scheme_Object *port);
-void (*scheme_need_wakeup)(Scheme_Object *port, void *fds);
-intptr_t (*scheme_get_byte_string)(const char *who,
- Scheme_Object *port,
- char *buffer, intptr_t offset, intptr_t size,
- int only_avail,
- int peek, Scheme_Object *peek_skip);
-intptr_t (*scheme_get_byte_string_unless)(const char *who,
- Scheme_Object *port,
- char *buffer, intptr_t offset, intptr_t size,
- int only_avail,
- int peek, Scheme_Object *peek_skip,
- Scheme_Object *unless_evt);
-intptr_t (*scheme_get_byte_string_special_ok_unless)(const char *who,
- Scheme_Object *port,
- char *buffer, intptr_t offset, intptr_t size,
- int only_avail,
- int peek, Scheme_Object *peek_skip,
- Scheme_Object *unless_evt);
-Scheme_Object *(*scheme_progress_evt)(Scheme_Object *port);
-int (*scheme_peeked_read)(Scheme_Object *port,
- intptr_t size,
- Scheme_Object *unless_evt,
- Scheme_Object *target_evt);
-intptr_t (*scheme_get_char_string)(const char *who,
- Scheme_Object *port,
- mzchar *buffer, intptr_t offset, intptr_t size,
- int peek, Scheme_Object *peek_skip);
-intptr_t (*scheme_get_bytes)(Scheme_Object *port, intptr_t size, char *buffer, int offset);
-Scheme_Object *(*scheme_get_ready_special)(Scheme_Object *port, Scheme_Object *stxsrc, int peek);
-intptr_t (*scheme_tell)(Scheme_Object *port);
-intptr_t (*scheme_output_tell)(Scheme_Object *port);
-intptr_t (*scheme_tell_line)(Scheme_Object *port);
-intptr_t (*scheme_tell_column)(Scheme_Object *port);
-void (*scheme_tell_all)(Scheme_Object *port, intptr_t *line, intptr_t *col, intptr_t *pos);
-void (*scheme_set_port_location)(int argc, Scheme_Object **argv);
-void (*scheme_count_lines)(Scheme_Object *port);
-void (*scheme_close_input_port)(Scheme_Object *port);
-void (*scheme_close_output_port)(Scheme_Object *port);
-Scheme_Object *(*scheme_write_special)(int argc, Scheme_Object *argv[]);
-Scheme_Object *(*scheme_write_special_nonblock)(int argc, Scheme_Object *argv[]);
-Scheme_Object *(*scheme_make_write_evt)(const char *who, Scheme_Object *port,
- Scheme_Object *special, char *str, intptr_t start, intptr_t size);
-Scheme_Port *(*scheme_port_record)(Scheme_Object *port);
-Scheme_Input_Port *(*scheme_input_port_record)(Scheme_Object *port);
-Scheme_Output_Port *(*scheme_output_port_record)(Scheme_Object *port);
-int (*scheme_is_input_port)(Scheme_Object *port);
-int (*scheme_is_output_port)(Scheme_Object *port);
-Scheme_Object *(*scheme_make_port_type)(const char *name);
-Scheme_Input_Port *(*scheme_make_input_port)(Scheme_Object *subtype, void *data,
- Scheme_Object *name,
- Scheme_Get_String_Fun get_byte_string_fun,
- Scheme_Peek_String_Fun peek_string_fun,
- Scheme_Progress_Evt_Fun progress_evt_fun,
- Scheme_Peeked_Read_Fun peeked_read_fun,
- Scheme_In_Ready_Fun byte_ready_fun,
- Scheme_Close_Input_Fun close_fun,
- Scheme_Need_Wakeup_Input_Fun need_wakeup_fun,
- int must_close);
-Scheme_Output_Port *(*scheme_make_output_port)(Scheme_Object *subtype, void *data,
- Scheme_Object *name,
- Scheme_Write_String_Evt_Fun write_byte_string_evt_fun,
- Scheme_Write_String_Fun write_byte_string_fun,
- Scheme_Out_Ready_Fun ready_fun,
- Scheme_Close_Output_Fun close_fun,
- Scheme_Need_Wakeup_Output_Fun need_wakeup_fun,
- Scheme_Write_Special_Evt_Fun write_special_evt_fun,
- Scheme_Write_Special_Fun write_special_fun,
- int must_close);
-void (*scheme_set_next_port_custodian)(Scheme_Custodian *c);
-void (*scheme_set_port_location_fun)(Scheme_Port *port,
- Scheme_Location_Fun location_fun);
-void (*scheme_set_port_count_lines_fun)(Scheme_Port *port,
- Scheme_Count_Lines_Fun count_lines_fun);
-void (*scheme_port_count_lines)(Scheme_Port *ip, const char *buffer,
- intptr_t offset, intptr_t got);
-Scheme_Object *(*scheme_progress_evt_via_get)(Scheme_Input_Port *port);
-int (*scheme_peeked_read_via_get)(Scheme_Input_Port *port,
- intptr_t size,
- Scheme_Object *unless_evt,
- Scheme_Object *target_ch);
-Scheme_Object *(*scheme_write_evt_via_write)(Scheme_Output_Port *port,
- const char *str, intptr_t offset, intptr_t size);
-Scheme_Object *(*scheme_write_special_evt_via_write_special)(Scheme_Output_Port *port,
- Scheme_Object *special);
-Scheme_Object *(*scheme_open_input_file)(const char *name, const char *who);
-Scheme_Object *(*scheme_open_output_file)(const char *name, const char *who);
-Scheme_Object *(*scheme_open_input_output_file)(const char *name, const char *who, Scheme_Object **oport);
-Scheme_Object *(*scheme_open_output_file_with_mode)(const char *name, const char *who, int text);
-Scheme_Object *(*scheme_make_file_input_port)(FILE *fp);
-Scheme_Object *(*scheme_make_named_file_input_port)(FILE *fp, Scheme_Object *name);
-Scheme_Object *(*scheme_make_file_output_port)(FILE *fp);
-Scheme_Object *(*scheme_make_fd_input_port)(int fd, Scheme_Object *name, int regfile, int win_textmode);
-Scheme_Object *(*scheme_make_fd_output_port)(int fd, Scheme_Object *name, int regfile, int win_textmode, int read_too);
-Scheme_Object *(*scheme_make_byte_string_input_port)(const char *str);
-Scheme_Object *(*scheme_make_sized_byte_string_input_port)(const char *str, intptr_t len);
-Scheme_Object *(*scheme_make_byte_string_output_port)();
-char *(*scheme_get_sized_byte_string_output)(Scheme_Object *port, intptr_t *len);
-char *(*scheme_get_reset_sized_byte_string_output)(Scheme_Object *port, intptr_t *len, int reset, intptr_t startpos, intptr_t endpos);
-void (*scheme_pipe)(Scheme_Object **read, Scheme_Object **write);
-void (*scheme_pipe_with_limit)(Scheme_Object **write, Scheme_Object **read, int maxsize);
-Scheme_Object *(*scheme_make_null_output_port)(int can_write_special);
-Scheme_Object *(*scheme_make_redirect_output_port)(Scheme_Object *port);
-intptr_t (*scheme_set_file_position)(Scheme_Object *port, intptr_t pos);
-int (*scheme_file_exists)(char *filename);
-int (*scheme_directory_exists)(char *dirname);
-char *(*scheme_expand_filename)(char* filename, int ilen, const char *errorin, int *ex, int guards);
-char *(*scheme_expand_user_filename)(char* filename, int ilen, const char *errorin, int *ex, int guards);
-char *(*scheme_expand_string_filename)(Scheme_Object *f, const char *errorin, int *ex, int guards);
-char *(*scheme_os_getcwd)(char *buf, int buflen, int *actlen, int noexn);
-int (*scheme_os_setcwd)(char *buf, int noexn);
-char *(*scheme_getdrive)(void);
-Scheme_Object *(*scheme_split_path)(const char *path, int len, Scheme_Object **base, int *isdir, int kind);
-Scheme_Object *(*scheme_build_path)(int argc, Scheme_Object **argv);
-Scheme_Object *(*scheme_path_to_directory_path)(Scheme_Object *p);
-Scheme_Object *(*scheme_path_to_complete_path)(Scheme_Object *path, Scheme_Object *relto_path);
-Scheme_Object *(*scheme_simplify_path)(int argc, Scheme_Object *argv[]);
-Scheme_Object *(*scheme_make_path)(const char *chars);
-Scheme_Object *(*scheme_make_sized_path)(char *chars, intptr_t len, int copy);
-Scheme_Object *(*scheme_make_sized_offset_path)(char *chars, intptr_t d, intptr_t len, int copy);
-Scheme_Object *(*scheme_make_sized_offset_kind_path)(char *chars, intptr_t d, intptr_t len, int copy, int kind);
-Scheme_Object *(*scheme_make_path_without_copying)(char *chars);
-#ifdef MACINTOSH_EVENTS
-char *(*scheme_mac_spec_to_path)(mzFSSpec *spec);
-int (*scheme_mac_path_to_spec)(const char *filename, mzFSSpec *spec);
-#endif
-void *(*scheme_alloc_fdset_array)(int count, int permanent);
-void *(*scheme_init_fdset_array)(void *fdarray, int count);
-void *(*scheme_get_fdset)(void *fdarray, int pos);
-void (*scheme_fdzero)(void *fd);
-void (*scheme_fdset)(void *fd, int pos);
-void (*scheme_fdclr)(void *fd, int pos);
-int (*scheme_fdisset)(void *fd, int pos);
-void (*scheme_add_fd_handle)(void *h, void *fds, int repost);
-void (*scheme_add_fd_eventmask)(void *fds, int mask);
-void (*scheme_collapse_win_fd)(void *fds);
-void (*scheme_set_wakeup_time)(void *fds, double end_time);
-void (*scheme_security_check_file)(const char *who, const char *filename, int guards);
-void (*scheme_security_check_file_link)(const char *who, const char *filename, const char *content);
-void (*scheme_security_check_network)(const char *who, const char *host, int port, int client);
-struct mz_addrinfo *(*scheme_get_host_address)(const char *address, int id, int *err,
- int family, int passive, int tcp);
-void (*scheme_free_host_address)(struct mz_addrinfo *a);
-const char *(*scheme_host_address_strerror)(int errnum);
-void (*scheme_getnameinfo)(void *sa, int salen,
- char *host, int hostlen,
- char *serv, int servlen);
-int (*scheme_get_port_file_descriptor)(Scheme_Object *p, intptr_t *_fd);
-intptr_t (*scheme_get_port_fd)(Scheme_Object *p);
-int (*scheme_get_port_socket)(Scheme_Object *p, intptr_t *_s);
-void (*scheme_socket_to_ports)(intptr_t s, const char *name, int takeover,
- Scheme_Object **_inp, Scheme_Object **_outp);
-Scheme_Object *(*scheme_fd_to_semaphore)(intptr_t fd, int mode, int is_socket);
-void (*scheme_set_type_printer)(Scheme_Type stype, Scheme_Type_Printer printer);
-void (*scheme_print_bytes)(Scheme_Print_Params *pp, const char *str, int offset, int len);
-void (*scheme_print_utf8)(Scheme_Print_Params *pp, const char *str, int offset, int len);
-void (*scheme_print_string)(Scheme_Print_Params *pp, const mzchar *str, int offset, int len);
-Scheme_Object *(*scheme_read_byte_string)(Scheme_Object *port);
-/*========================================================================*/
-/* namespace/environment */
-/*========================================================================*/
-Scheme_Object *(*scheme_make_namespace)(int argc, Scheme_Object *argv[]);
-void (*scheme_add_global)(const char *name, Scheme_Object *val, Scheme_Env *env);
-void (*scheme_add_global_symbol)(Scheme_Object *name, Scheme_Object *val,
- Scheme_Env *env);
-Scheme_Object *(*scheme_make_envunbox)(Scheme_Object *value);
-Scheme_Object *(*scheme_lookup_global)(Scheme_Object *symbol, Scheme_Env *env);
-Scheme_Bucket *(*scheme_global_bucket)(Scheme_Object *symbol, Scheme_Env *env);
-Scheme_Bucket *(*scheme_global_keyword_bucket)(Scheme_Object *symbol, Scheme_Env *env);
-Scheme_Bucket *(*scheme_module_bucket)(Scheme_Object *mod, Scheme_Object *var, int pos, Scheme_Env *env);
-Scheme_Object *(*scheme_builtin_value)(const char *name); /* convenience */
-void (*scheme_set_global_bucket)(char *proc, Scheme_Bucket *var, Scheme_Object *val,
- int set_undef);
-void (*scheme_install_macro)(Scheme_Bucket *b, Scheme_Object *v);
-void (*scheme_save_initial_module_set)(Scheme_Env *env);
-Scheme_Env *(*scheme_primitive_module)(Scheme_Object *name, Scheme_Env *for_env);
-void (*scheme_finish_primitive_module)(Scheme_Env *env);
-void (*scheme_protect_primitive_provide)(Scheme_Env *env, Scheme_Object *name);
-Scheme_Object *(*scheme_make_modidx)(Scheme_Object *path,
- Scheme_Object *base,
- Scheme_Object *resolved);
-Scheme_Object *(*scheme_apply_for_syntax_in_env)(Scheme_Object *proc, Scheme_Env *env);
-Scheme_Object *(*scheme_dynamic_require)(int argc, Scheme_Object *argv[]);
-Scheme_Object *(*scheme_namespace_require)(Scheme_Object *);
-int (*scheme_is_module_path)(Scheme_Object *);
-Scheme_Object *(*scheme_datum_to_kernel_stx)(Scheme_Object *e);
-int (*scheme_module_is_declared)(Scheme_Object *name, int try_load);
-/*========================================================================*/
-/* symbols */
-/*========================================================================*/
-Scheme_Object *(*scheme_intern_symbol)(const char *name);
-Scheme_Object *(*scheme_intern_exact_symbol)(const char *name, uintptr_t len);
-Scheme_Object *(*scheme_intern_exact_char_symbol)(const mzchar *name, uintptr_t len);
-Scheme_Object *(*scheme_make_symbol)(const char *name); /* Make uninterned */
-Scheme_Object *(*scheme_make_exact_symbol)(const char *name, uintptr_t len); /* Exact case */
-Scheme_Object *(*scheme_make_exact_char_symbol)(const mzchar *name, uintptr_t len); /* Exact case */
-const char *(*scheme_symbol_name)(Scheme_Object *sym);
-const char *(*scheme_symbol_name_and_size)(Scheme_Object *sym, uintptr_t *l, int flags);
-char *(*scheme_symbol_val)(Scheme_Object *sym);
-Scheme_Object *(*scheme_intern_exact_keyword)(const char *name, uintptr_t len);
-Scheme_Object *(*scheme_intern_exact_char_keyword)(const mzchar *name, uintptr_t len);
-/*========================================================================*/
-/* structs */
-/*========================================================================*/
-Scheme_Object **(*scheme_make_struct_values)(Scheme_Object *struct_type,
- Scheme_Object **names,
- int count, int flags);
-Scheme_Object **(*scheme_make_struct_names)(Scheme_Object *base,
- Scheme_Object *field_names,
- int flags, int *count_out);
-Scheme_Object *(*scheme_make_struct_type)(Scheme_Object *base,
- Scheme_Object *parent,
- Scheme_Object *inspector,
- int num_fields, int num_uninit_fields,
- Scheme_Object *uninit_val,
- Scheme_Object *properties,
- Scheme_Object *guard);
-Scheme_Object *(*scheme_make_struct_type2)(Scheme_Object *base,
- Scheme_Object *parent,
- Scheme_Object *inspector,
- int num_fields, int num_uninit_fields,
- Scheme_Object *uninit_val,
- Scheme_Object *proc_attr,
- Scheme_Object *properties,
- char *immutable_array,
- Scheme_Object *guard);
-Scheme_Object *(*scheme_make_struct_instance)(Scheme_Object *stype,
- int argc,
- Scheme_Object **argv);
-int (*scheme_is_struct_instance)(Scheme_Object *type, Scheme_Object *v);
-Scheme_Object *(*scheme_struct_ref)(Scheme_Object *s, int pos);
-void (*scheme_struct_set)(Scheme_Object *s, int pos, Scheme_Object *v);
-Scheme_Object *(*scheme_make_struct_type_property)(Scheme_Object *name);
-Scheme_Object *(*scheme_make_struct_type_property_w_guard)(Scheme_Object *name, Scheme_Object *guard);
-Scheme_Object *(*scheme_struct_type_property_ref)(Scheme_Object *prop, Scheme_Object *s);
-Scheme_Object *(*scheme_chaperone_struct_type_property_ref)(Scheme_Object *prop, Scheme_Object *s);
-Scheme_Object *(*scheme_make_location)(Scheme_Object *src,
- Scheme_Object *line,
- Scheme_Object *col,
- Scheme_Object *pos,
- Scheme_Object *span);
-int (*scheme_is_location)(Scheme_Object *o);
-Scheme_Object *(*scheme_make_inspector)(Scheme_Object *superior);
-int (*scheme_is_subinspector)(Scheme_Object *i, Scheme_Object *sup);
-/*========================================================================*/
-/* utilities */
-/*========================================================================*/
-int (*scheme_eq)(Scheme_Object *obj1, Scheme_Object *obj2);
-int (*scheme_eqv)(Scheme_Object *obj1, Scheme_Object *obj2);
-int (*scheme_equal)(Scheme_Object *obj1, Scheme_Object *obj2);
-int (*scheme_chaperone_of)(Scheme_Object *obj1, Scheme_Object *obj2);
-int (*scheme_impersonator_of)(Scheme_Object *obj1, Scheme_Object *obj2);
-#ifdef MZ_PRECISE_GC
-intptr_t (*scheme_hash_key)(Scheme_Object *o);
-#endif
-intptr_t (*scheme_equal_hash_key)(Scheme_Object *o);
-intptr_t (*scheme_equal_hash_key2)(Scheme_Object *o);
-intptr_t (*scheme_recur_equal_hash_key)(Scheme_Object *o, void *cycle_data);
-intptr_t (*scheme_recur_equal_hash_key2)(Scheme_Object *o, void *cycle_data);
-intptr_t (*scheme_eqv_hash_key)(Scheme_Object *o);
-intptr_t (*scheme_eqv_hash_key2)(Scheme_Object *o);
-void (*scheme_set_type_equality)(Scheme_Type type,
- Scheme_Equal_Proc f,
- Scheme_Primary_Hash_Proc hash1,
- Scheme_Secondary_Hash_Proc hash2);
-int (*scheme_recur_equal)(Scheme_Object *obj1, Scheme_Object *obj2, void *cycle_info);
-Scheme_Object *(*scheme_build_list)(int argc, Scheme_Object **argv);
-Scheme_Object *(*scheme_build_list_offset)(int argc, Scheme_Object **argv, int delta);
-int (*scheme_is_list)(Scheme_Object *obj1);
-int (*scheme_list_length)(Scheme_Object *list);
-int (*scheme_proper_list_length)(Scheme_Object *list);
-Scheme_Object *(*scheme_alloc_list)(int size);
-Scheme_Object *(*scheme_map_1)(Scheme_Object *(*f)(Scheme_Object*),
- Scheme_Object *l);
-Scheme_Object *(*scheme_car)(Scheme_Object *pair);
-Scheme_Object *(*scheme_cdr)(Scheme_Object *pair);
-Scheme_Object *(*scheme_cadr)(Scheme_Object *pair);
-Scheme_Object *(*scheme_caddr)(Scheme_Object *pair);
-Scheme_Object *(*scheme_vector_to_list)(Scheme_Object *vec);
-Scheme_Object *(*scheme_list_to_vector)(Scheme_Object *list);
-Scheme_Object *(*scheme_append)(Scheme_Object *lstx, Scheme_Object *lsty);
-Scheme_Object *(*scheme_reverse)(Scheme_Object *l);
-Scheme_Object *(*scheme_box)(Scheme_Object *v);
-Scheme_Object *(*scheme_unbox)(Scheme_Object *obj);
-void (*scheme_set_box)(Scheme_Object *b, Scheme_Object *v);
-Scheme_Object *(*scheme_make_weak_box)(Scheme_Object *v);
-Scheme_Object *(*scheme_make_late_weak_box)(Scheme_Object *v);
-Scheme_Object *(*scheme_make_ephemeron)(Scheme_Object *key, Scheme_Object *val);
-Scheme_Object *(*scheme_ephemeron_value)(Scheme_Object *o);
-Scheme_Object *(*scheme_ephemeron_key)(Scheme_Object *o);
-Scheme_Object *(*scheme_make_stubborn_will_executor)();
-Scheme_Object *(*scheme_load)(const char *file);
-Scheme_Object *(*scheme_load_extension)(const char *filename, Scheme_Env *env);
-void (*scheme_register_extension_global)(void *ptr, intptr_t size);
-intptr_t (*scheme_get_seconds)(void);
-intptr_t (*scheme_get_milliseconds)(void);
-double (*scheme_get_inexact_milliseconds)(void);
-intptr_t (*scheme_get_process_milliseconds)(void);
-intptr_t (*scheme_get_thread_milliseconds)(Scheme_Object *thrd);
-char *(*scheme_banner)(void);
-char *(*scheme_version)(void);
-int (*scheme_check_proc_arity)(const char *where, int a,
- int which, int argc, Scheme_Object **argv);
-int (*scheme_check_proc_arity2)(const char *where, int a,
- int which, int argc, Scheme_Object **argv,
- int false_ok);
-char *(*scheme_make_provided_string)(Scheme_Object *o, int count, intptr_t *len);
-char *(*scheme_make_args_string)(const char *s, int which, int argc, Scheme_Object **argv, intptr_t *len);
-char *(*scheme_make_arg_lines_string)(const char *s, int which, int argc, Scheme_Object **argv, intptr_t *len);
-const char *(*scheme_system_library_subpath)();
-void (*scheme_signal_received)(void);
-void (*scheme_signal_received_at)(void *);
-void *(*scheme_get_signal_handle)();
-void (*scheme_wait_until_signal_received)(void);
-intptr_t (*scheme_char_strlen)(const mzchar *s);
-Scheme_Object *(*scheme_stx_extract_marks)(Scheme_Object *stx);
-int (*scheme_get_place_id)(void);
-Scheme_Hash_Table *(*scheme_get_place_table)(void);
-void *(*scheme_register_process_global)(const char *key, void *val);
-Scheme_Object *(*scheme_malloc_key)(void);
-void (*scheme_free_key)(Scheme_Object *k);
-#ifndef SCHEME_EX_INLINE
-} Scheme_Extension_Table;
-#endif
diff --git a/src/racket/src/schexn.h b/src/racket/src/schexn.h
index 2a22e42f11..eb92b46e2e 100644
--- a/src/racket/src/schexn.h
+++ b/src/racket/src/schexn.h
@@ -23,6 +23,8 @@ enum {
MZEXN_FAIL_UNSUPPORTED,
MZEXN_FAIL_USER,
MZEXN_BREAK,
+ MZEXN_BREAK_TERMINATE,
+ MZEXN_BREAK_HANG_UP,
MZEXN_OTHER
};
#endif
@@ -53,7 +55,9 @@ static exn_rec exn_table[] = {
{ 2, NULL, NULL, 0, NULL, 1 },
{ 2, NULL, NULL, 0, NULL, 1 },
{ 2, NULL, NULL, 0, NULL, 1 },
- { 3, NULL, NULL, 0, NULL, 0 }
+ { 3, NULL, NULL, 0, NULL, 0 },
+ { 3, NULL, NULL, 0, NULL, 20 },
+ { 3, NULL, NULL, 0, NULL, 20 }
};
#else
static exn_rec *exn_table;
@@ -86,6 +90,8 @@ static exn_rec *exn_table;
exn_table[MZEXN_FAIL_UNSUPPORTED].args = 2;
exn_table[MZEXN_FAIL_USER].args = 2;
exn_table[MZEXN_BREAK].args = 3;
+ exn_table[MZEXN_BREAK_TERMINATE].args = 3;
+ exn_table[MZEXN_BREAK_HANG_UP].args = 3;
#endif
#endif
@@ -125,4 +131,6 @@ static exn_rec *exn_table;
SETUP_STRUCT(MZEXN_FAIL_UNSUPPORTED, EXN_PARENT(MZEXN_FAIL), "exn:fail:unsupported", 0, NULL, scheme_null, NULL)
SETUP_STRUCT(MZEXN_FAIL_USER, EXN_PARENT(MZEXN_FAIL), "exn:fail:user", 0, NULL, scheme_null, NULL)
SETUP_STRUCT(MZEXN_BREAK, EXN_PARENT(MZEXN), "exn:break", 1, MZEXN_BREAK_FIELDS, scheme_null, scheme_make_prim(break_field_check))
+ SETUP_STRUCT(MZEXN_BREAK_TERMINATE, EXN_PARENT(MZEXN_BREAK), "exn:break:terminate", 0, NULL, scheme_null, NULL)
+ SETUP_STRUCT(MZEXN_BREAK_HANG_UP, EXN_PARENT(MZEXN_BREAK), "exn:break:hang-up", 0, NULL, scheme_null, NULL)
#endif
diff --git a/src/racket/src/schminc.h b/src/racket/src/schminc.h
index 58154f4bb8..dcccea8bd6 100644
--- a/src/racket/src/schminc.h
+++ b/src/racket/src/schminc.h
@@ -12,9 +12,9 @@
finally, set EXPECTED_PRIM_COUNT to the right value and
USE_COMPILED_STARTUP to 1 and `make' again. */
-#define USE_COMPILED_STARTUP 1
+#define USE_COMPILED_STARTUP 0
-#define EXPECTED_PRIM_COUNT 1065
+#define EXPECTED_PRIM_COUNT 1071
#define EXPECTED_UNSAFE_COUNT 79
#define EXPECTED_FLFXNUM_COUNT 69
#define EXPECTED_FUTURES_COUNT 15
diff --git a/src/racket/src/schvers.h b/src/racket/src/schvers.h
index 83873f5e75..7e134cbfd4 100644
--- a/src/racket/src/schvers.h
+++ b/src/racket/src/schvers.h
@@ -13,12 +13,12 @@
consistently.)
*/
-#define MZSCHEME_VERSION "5.3.0.19"
+#define MZSCHEME_VERSION "5.3.0.20"
#define MZSCHEME_VERSION_X 5
#define MZSCHEME_VERSION_Y 3
#define MZSCHEME_VERSION_Z 0
-#define MZSCHEME_VERSION_W 19
+#define MZSCHEME_VERSION_W 20
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)
diff --git a/src/racket/src/thread.c b/src/racket/src/thread.c
index 22e2198252..29526e9378 100644
--- a/src/racket/src/thread.c
+++ b/src/racket/src/thread.c
@@ -506,7 +506,7 @@ void scheme_init_thread(Scheme_Env *env)
GLOBAL_PRIM_W_ARITY("thread-wait" , thread_wait , 1, 1, env);
GLOBAL_PRIM_W_ARITY("current-thread" , sch_current , 0, 0, env);
GLOBAL_PRIM_W_ARITY("kill-thread" , kill_thread , 1, 1, env);
- GLOBAL_PRIM_W_ARITY("break-thread" , break_thread , 1, 1, env);
+ GLOBAL_PRIM_W_ARITY("break-thread" , break_thread , 1, 2, env);
GLOBAL_PRIM_W_ARITY("thread-suspend" , thread_suspend , 1, 1, env);
GLOBAL_PRIM_W_ARITY("thread-resume" , thread_resume , 1, 2, env);
GLOBAL_PRIM_W_ARITY("thread-resume-evt" , make_thread_resume , 1, 1, env);
@@ -4205,7 +4205,7 @@ void scheme_pop_break_enable(Scheme_Cont_Frame_Data *cframe, int post_check)
}
}
-static Scheme_Object *raise_user_break(int argc, Scheme_Object ** volatile argv)
+static Scheme_Object *raise_user_break(void *data, int argc, Scheme_Object ** volatile argv)
{
/* The main action here is buried in code to free temporary bignum
space on escapes. Aside from a thread kill, this is the only
@@ -4216,6 +4216,9 @@ static Scheme_Object *raise_user_break(int argc, Scheme_Object ** volatile argv)
that's why we save and restore an old snapshot. */
mz_jmp_buf *savebuf, newbuf;
intptr_t save[4];
+ int kind;
+
+ kind = SCHEME_INT_VAL((Scheme_Object *)data);
savebuf = scheme_current_thread->error_buf;
scheme_current_thread->error_buf = &newbuf;
@@ -4223,7 +4226,11 @@ static Scheme_Object *raise_user_break(int argc, Scheme_Object ** volatile argv)
if (!scheme_setjmp(newbuf)) {
/* >>>> This is the main action <<<< */
- scheme_raise_exn(MZEXN_BREAK, argv[0], "user break");
+ scheme_raise_exn(kind, argv[0], ((kind == MZEXN_BREAK_TERMINATE)
+ ? "terminate break"
+ : ((kind == MZEXN_BREAK_HANG_UP)
+ ? "hang-up break"
+ : "user break")));
/* will definitely escape (or thread will die) */
} else {
/* As expected, we're escaping. Unless we're continuing, then
@@ -4244,7 +4251,9 @@ static void raise_break(Scheme_Thread *p)
Thread_Schedule_State_Record ssr;
Scheme_Object *a[1];
Scheme_Cont_Frame_Data cframe;
+ int kind;
+ kind = p->external_break;
p->external_break = 0;
if (p->blocker && (p->block_check == (Scheme_Ready_Fun)syncing_ready)) {
@@ -4255,7 +4264,7 @@ static void raise_break(Scheme_Thread *p)
save_thread_schedule_state(p, &ssr, 0);
p->ran_some = 1;
- a[0] = scheme_make_prim((Scheme_Prim *)raise_user_break);
+ a[0] = scheme_make_closed_prim((Scheme_Closed_Prim *)raise_user_break, scheme_make_integer(kind));
/* Continuation frame ensures that this doesn't
look like it's in tail position with respect to
@@ -4304,14 +4313,22 @@ static void exit_or_escape(Scheme_Thread *p)
select_thread();
}
-void scheme_break_main_thread_at(void *p)
+void scheme_break_kind_main_thread_at(void *p, int kind)
/* This function can be called from an interrupt handler.
On some platforms, it will even be called from multiple
OS threads. In the case of multiple threads, there's a
tiny chance that a single Ctl-C will trigger multiple
break exceptions. */
+ XFORM_SKIP_PROC
{
- *(volatile short *)p = 1;
+ if (kind > *(volatile short *)p)
+ *(volatile short *)p = kind;
+}
+
+void scheme_break_main_thread_at(void *p)
+ XFORM_SKIP_PROC
+{
+ scheme_break_kind_main_thread_at(p, MZEXN_BREAK);
}
void scheme_break_main_thread()
@@ -4343,13 +4360,14 @@ static void check_ready_break()
if (delayed_break_ready) {
if (scheme_main_thread) {
+ int kind = delayed_break_ready;
delayed_break_ready = 0;
- scheme_break_thread(main_break_target_thread);
+ scheme_break_kind_thread(main_break_target_thread, kind);
}
}
}
-void scheme_break_thread(Scheme_Thread *p)
+void scheme_break_kind_thread(Scheme_Thread *p, int kind)
{
if (!p) {
p = scheme_main_thread;
@@ -4362,7 +4380,8 @@ void scheme_break_thread(Scheme_Thread *p)
p = p->nestee;
}
- p->external_break = 1;
+ if (kind > p->external_break)
+ p->external_break = kind;
if (p == scheme_current_thread) {
if (scheme_can_break(p)) {
@@ -4377,6 +4396,11 @@ void scheme_break_thread(Scheme_Thread *p)
# endif
}
+void scheme_break_thread(Scheme_Thread *p)
+{
+ return scheme_break_kind_thread(p, MZEXN_BREAK);
+}
+
static void call_on_atomic_timeout(int must)
{
Scheme_Thread *p = scheme_current_thread;
@@ -5113,19 +5137,29 @@ sch_sleep(int argc, Scheme_Object *args[])
static Scheme_Object *break_thread(int argc, Scheme_Object *args[])
{
Scheme_Thread *p;
+ int kind = MZEXN_BREAK;
if (!SAME_TYPE(SCHEME_TYPE(args[0]), scheme_thread_type))
scheme_wrong_contract("break-thread", "thread?", 0, argc, args);
+ if ((argc > 1) && SCHEME_TRUEP(args[1])) {
+ if (SCHEME_SYMBOLP(args[1])
+ && !SCHEME_SYM_WEIRDP(args[1])
+ && !strcmp(SCHEME_SYM_VAL(args[1]), "hang-up"))
+ kind = MZEXN_BREAK_HANG_UP;
+ else if (SCHEME_SYMBOLP(args[1])
+ && !SCHEME_SYM_WEIRDP(args[1])
+ && !strcmp(SCHEME_SYM_VAL(args[1]), "terminate"))
+ kind = MZEXN_BREAK_TERMINATE;
+ else
+ scheme_wrong_contract("break-thread", "(or/c #f 'hang-up 'terminate)", 1, argc, args);
+ }
+
p = (Scheme_Thread *)args[0];
- scheme_break_thread(p);
+ scheme_break_kind_thread(p, kind);
- /* In case p == scheme_current_thread */
- if (!scheme_fuel_counter) {
- scheme_thread_block(0.0);
- scheme_current_thread->ran_some = 1;
- }
+ scheme_check_break_now();
return scheme_void;
}