On 5/19/06, Thomas Chust <[EMAIL PROTECTED]> wrote:
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? [...]

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.

Thanks -- that ought to do the trick!

Graham


_______________________________________________
Chicken-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to