monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Monotone-devel] Patch to speed up add operation


From: Eric Anderson
Subject: Re: [Monotone-devel] Patch to speed up add operation
Date: Thu, 25 Aug 2005 00:47:10 -0700

address@hidden writes:
 > Benoît Dejean wrote:
 > > [ &string[0] not guarenteed to be contigous, although most implement
 > >   that way; c_str() is safe only for read ]

Is .data() assumed to be contigous as well? There are a lot of casts
of string.data() to (const char *) or equivalent in the monotone code.  
Try fgrep '.data()' *.cc to find a bunch.

 > Scott Meyers has stated, that the only container forseen to be used with 
 > C libraries is std::vector, where the trick above shall work.

This is why I wrote:
 > Since guess_binary() took a string, I used the slightly questionable: 
 > &string[0] trick to get a writeable pointer to the string in
 > file.read(&buf[0],bufsize) in monotone_guess_binary_filename_for_lua.
 > Does anyone know of a way to just read up to some number of bytes into
 > a string?  If not, should guess_binaries signature be changed to 
 > guess_binary(unsigned char *data, int datalen) and a char[bufsize] array
 > be used instead of a string?

I didn't change the signature because I still don't have a feel for
what changes are acceptable vs. not in the monotone code.  Does
someone have an opinion on changing the signature?  The vector change
would also be a signature change, and I'd prefer the unsigned char *,
datalen version, as it simplifies the calling code, continues to
interact properly with something that wants to call it on a string
(those calls have to be foo.{c_str,data}(),foo.size()).
        -Eric





reply via email to

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