Hey Graeme, 2011/11/30 Graeme Gill <grae...@argyllcms.com>: > Hi Koen, > I guess it doesn't matter how it's implemented in the > back end - I started out explicitly using std::vector<> but > it was clumsy, and the idea of converting from a natively > fixed size block to a std::vector<> and back to a blob > again in the backend seems just as bad. Neater might be
It think it's okay to do it -- it's just an additional copy operation. > to implement void * in the back end, and then implement std::vector<> > on top of it. That would be possible too -- provided we can solve memory management so that the backend remains responsible for the memory allocated for a returned blob value of unknown size, or copies the blob into a preallocated array in case the size is fixed. This will complicate backend design a bit since he will need to keep track of returned blobs until the statement is reset or the next row is fetched. > const char *sql_value_traits<uchar32> > ::type(SqlConnection *conn, int size) Actually, you should be able to specialize this as: template <std::size_t N> struct sql_value_traits<(unsigned char &)[N], void> { ... } Regardless of the rest of the discussion, this looks like the way to go for the traits class ! Regards, koen ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d _______________________________________________ witty-interest mailing list witty-interest@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/witty-interest