*** empty log message ***
[bpt/guile.git] / ice-9 / debugger / state.scm
CommitLineData
8ee7506b
NJ
1;;;; (ice-9 debugger state) -- debugger state representation
2
3;;; Copyright (C) 2002 Free Software Foundation, Inc.
4;;;
5;;; This program is free software; you can redistribute it and/or
6;;; modify it under the terms of the GNU General Public License as
7;;; published by the Free Software Foundation; either version 2, or
8;;; (at your option) any later version.
9;;;
10;;; This program is distributed in the hope that it will be useful,
11;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
12;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13;;; General Public License for more details.
14;;;
15;;; You should have received a copy of the GNU General Public License
16;;; along with this software; see the file COPYING. If not, write to
17;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18;;; Boston, MA 02111-1307 USA
19;;;
20;;; As a special exception, the Free Software Foundation gives permission
21;;; for additional uses of the text contained in its release of GUILE.
22;;;
23;;; The exception is that, if you link the GUILE library with other files
24;;; to produce an executable, this does not by itself cause the
25;;; resulting executable to be covered by the GNU General Public License.
26;;; Your use of that executable is in no way restricted on account of
27;;; linking the GUILE library code into it.
28;;;
29;;; This exception does not however invalidate any other reasons why
30;;; the executable file might be covered by the GNU General Public License.
31;;;
32;;; This exception applies only to the code released by the
33;;; Free Software Foundation under the name GUILE. If you copy
34;;; code from other Free Software Foundation releases into a copy of
35;;; GUILE, as the General Public License permits, the exception does
36;;; not apply to the code that you add in this way. To avoid misleading
37;;; anyone as to the status of such modified files, you must delete
38;;; this exception notice from them.
39;;;
40;;; If you write modifications of your own for GUILE, it is your choice
41;;; whether to permit this exception to apply to your modifications.
42;;; If you do not wish that, delete this exception notice.
43
44(define-module (ice-9 debugger state)
45 #:export (make-state
46 state-stack
47 state-index
48 state-flags
49 set-stack-index!))
50
51(define state-rtd (make-record-type "debugger-state" '(stack index flags)))
52(define state? (record-predicate state-rtd))
53(define make-state
54 (let ((make-state-internal (record-constructor state-rtd
55 '(stack index flags))))
56 (lambda (stack index . flags)
57 (make-state-internal stack index flags))))
58(define state-stack (record-accessor state-rtd 'stack))
59(define state-index (record-accessor state-rtd 'index))
60(define state-flags (record-accessor state-rtd 'flags))
61
62(define set-state-index! (record-modifier state-rtd 'index))
63
64(define (set-stack-index! state index)
65 (let* ((stack (state-stack state))
66 (ssize (stack-length stack)))
67 (set-state-index! state
68 (cond ((< index 0) 0)
69 ((>= index ssize) (- ssize 1))
70 (else index)))))
71
72;;; (ice-9 debugger state) ends here.