diff options
author | Andy Wingo <wingo@pobox.com> | 2019-10-22 13:47:02 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2019-10-22 13:47:02 +0200 |
commit | 0c8d20d2d022e4b990002d7960699af74732409b (patch) | |
tree | 42237b1808707c9a064a3825955e9becb2de33b7 | |
parent | 40395c0dff238b62ba312e623a70c7f4b015507d (diff) | |
download | guile-0c8d20d2d022e4b990002d7960699af74732409b.tar.gz |
Re-implement (ice-9 gap-buffer) records in terms of srfi-9
* module/ice-9/gap-buffer.scm (gap-buffer): Use srfi-9.
-rw-r--r-- | module/ice-9/gap-buffer.scm | 62 |
1 files changed, 24 insertions, 38 deletions
diff --git a/module/ice-9/gap-buffer.scm b/module/ice-9/gap-buffer.scm index 4533bb539..b2fec4ecb 100644 --- a/module/ice-9/gap-buffer.scm +++ b/module/ice-9/gap-buffer.scm @@ -88,42 +88,30 @@ ;;; Code: (define-module (ice-9 gap-buffer) - :autoload (srfi srfi-13) (string-join) - :export (gb? - make-gap-buffer - gb-point - gb-point-min - gb-point-max - gb-insert-string! - gb-insert-char! - gb-delete-char! - gb-erase! - gb-goto-char - gb->string - gb-filter! - gb->lines - gb-filter-lines! - make-gap-buffer-port)) - -(define gap-buffer - (make-record-type 'gap-buffer - '(s ; the buffer, a string - all-sz ; total allocation - gap-ofs ; GAP starts, aka (1- point) - aft-ofs ; AFTER starts - ))) - -(define gb? (record-predicate gap-buffer)) - -(define s: (record-accessor gap-buffer 's)) -(define all-sz: (record-accessor gap-buffer 'all-sz)) -(define gap-ofs: (record-accessor gap-buffer 'gap-ofs)) -(define aft-ofs: (record-accessor gap-buffer 'aft-ofs)) - -(define s! (record-modifier gap-buffer 's)) -(define all-sz! (record-modifier gap-buffer 'all-sz)) -(define gap-ofs! (record-modifier gap-buffer 'gap-ofs)) -(define aft-ofs! (record-modifier gap-buffer 'aft-ofs)) + #:use-module (srfi srfi-9) + #:export (gb? + make-gap-buffer + gb-point + gb-point-min + gb-point-max + gb-insert-string! + gb-insert-char! + gb-delete-char! + gb-erase! + gb-goto-char + gb->string + gb-filter! + gb->lines + gb-filter-lines! + make-gap-buffer-port)) + +(define-record-type gap-buffer + (new) + gb? + (s s: s!) ; the buffer, a string + (all-sz all-sz: all-sz!) ; total allocation + (gap-ofs gap-ofs: gap-ofs!) ; GAP starts, aka (1- point) + (aft-ofs aft-ofs: aft-ofs!)) ; AFTER starts ;; todo: expose (define default-initial-allocation 128) @@ -133,8 +121,6 @@ (define (round-up n) (* default-chunk-size (+ 1 (quotient n default-chunk-size)))) -(define new (record-constructor gap-buffer '())) - (define (realloc gb inc) (let* ((old-s (s: gb)) (all-sz (all-sz: gb)) |