From: Warren Young Date: August 15 2007 6:27am Subject: Eyeballs needed on new reference counted pointer template List-Archive: http://lists.mysql.com/plusplus/6930 Message-Id: <46C29CC6.9060005@etr-usa.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Smart pointers are tricky, and automatic memory management is even trickier, and I just created a template that does both. I swapped it in for existing code in MySQL++ that used value semantics and it passes the test suite, but I'd still appreciate someone else taking a look at it. http://svn.gna.org/viewcvs/mysqlpp/trunk/lib/refcounted.h?view=markup This is part of a general effort toward improving the way MySQL++ handles memory and object copies. The particular need that sparked the creation of this template is that in released MySQL++ versions, you cannot use a Row object after the Result/ResUse object that created it is destroyed or reused itself. This doesn't seem to catch too many newbies, but we do see it from time to time. I built a similar, but more primitive, mechanism last week for ColData, which should improve performance of field access greatly: v2.3 copied each field two or three times on every access, because it had to do everything with value semantics to avoid similar problems to the one described above. I hope to move ColData's buffer management to this new template, but I'm not yet certain how it's going to work yet. And yes, I am aware that this wheel has already been invented. It's in Boost, for instance, but the last time I brought up the possibility of making Boost a dependency of MySQL++, it was shot down so violently that the detritus from the explosion settled in a thin even layer of powdery ash over six counties.