On Fri, 19 May 2006, Graham Fawcett wrote:
While speaking of buffers, is there an efficient, low-level way to set
a substring within an existing string? [...]
Hello,
you can probably hack something together in pure CHICKEN Scheme using
move-memory!, pointer-offset and direct access to the lolevel slots of
strings.
But you can also always resort to C:
(define (substring-set! buffer replace #!optional (start 0) (count
(string-length replace))
(if (or (< start 0)
(< count 0)
(> start (string-length buffer))
(> count (string-length replace))
(> count (- (string-length buffer) start)))
(error
'substring-set! "start and/or count parameters have bad values"
buffer replace start count))
((foreign-lambda* void ((scheme-pointer buffer) (scheme-pointer replace)
(integer start) (integer count))
"memmove(buffer + start, replace, count);")
buffer replace start count))
Beware that the above code is completely untested, I just hacked it
quickly into my mail client.
cu,
Thomas
_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users