Hi, On Thu, Jul 11, 2002 at 12:15:30PM +0100, Nick Ing-Simmons wrote: > For my Tk application of encode the in-place form causes unnecessary > copies. e.g. I need the original and the form encoded into the encoding > required by the font, or I have to copy the input arg to return location.
But whether the caller or the callee makes the copy should make no difference in performance. I personally prefer to make copies as late as possible. > Doing in-place is very hard to do when converting between two variable > length encodings. I suspect your "all perl" version is not _really_ > doing it "in place" but just in same scalar, but in different PV "buffers". Correct. But (see your own example below) I could also write something like my $replace = $subchar x 128; $_[n] =~ y/\x80-\xff/$replace/; for many 8bit to ascii encodings and leave the decision whether a copy of the original is left to the caller. > The Encode API is writen to allow core of encodings to be written in C > Keeping return value and source separate is very useful for C. However, do you need witch-craft to copy a string buffer in C if the need for it arises? > I would use Encode that way as well. > > my $enc = find_encoding('cp1250'); > my $string = decode($enc,$octets); That's it. ;-) Provided that it is safe to call decode() and encode() as many times as I want, even after an error, that's exactly what I was looking for. Thanks! Guido -- Imperia AG, Development Leyboldstr. 10 - D-50354 Hürth - http://www.imperia.de/
msg01376/pgp00000.pgp
Description: PGP signature