chicken-users
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]