[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-users] efficient procedure for setting a substring?
From: |
Thomas Chust |
Subject: |
Re: [Chicken-users] efficient procedure for setting a substring? |
Date: |
Fri, 19 May 2006 19:29:20 +0000 (GMT) |
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