Re: direct access to ns[C]String buffer
Brodie Thiesfield <[email protected]> Tue, 12 Nov 2002 13:23:20 +0900
| Newsgroups | gmane.comp.mozilla.devel.xpcom |
|---|---|
| Organization | Another Netscape Collabra Server User |
| Message-ID | <[email protected]> |
Benjamin Smedberg wrote: > Brodie Thiesfield wrote: > >> Is there any way to get direct access to a buffer in a string class >> similar to the MFC CString::GetBuffer()/CString::ReleaseBuffer() pair? >> >> terminated string into it. I want to assign this string to a nsCString >> which is returned from the interface. The easiest way would be to >> request the string to have the max size buffer, write the data > > > The "proper" way is to allocate the buffer and fill it, then use the > ns[C]String .Adopt() member function. The ns[C]String class then owns > the buffer and will deallocate it when deleted. OK, that sounds easy enough. I had found the Adopt() method, but then because I had some hassles where it seemed that the method wasn't available on all classes, I went looking for another method. It looks like it is there now though, so it seems that I must have been on drugs at the time. If the ns[C]String in question is an |inout| or |out| argument to an XPCOM interface method, the memory allocation needs to be done with nsMemory::Alloc() and everything will be happy, right? What do I use other times (not an IDL argument), is it best to always use nsMemory::Alloc() for ns[C]Strings? Regards, Brodie.