Alternatively, you could store C++ buffers in your struct instead of std::vector objects. Then if you need to access your data with stl, just assign each buffer to an std::vector out from these buffers.
If you can't afford the extra copy performed by std::vector constructor, you'll need to implement your own wrapper class deriving from std::vector that nulls out the internal container upon destruction. This is required to avoid std::vector to deallocate your buffer memory. Of course I haven't tested this solution yet but it should work. :) -mab From: softimage-boun...@listproc.autodesk.com [mailto:softimage-boun...@listproc.autodesk.com] On Behalf Of Guillaume Laforge Sent: Sunday, June 09, 2013 3:29 PM To: softimage@listproc.autodesk.com Subject: Re: [C++] Store a structure of vector in a UserData Well, if you need the exact number of bytes, you will need to take into account the size of std::vector objects I think :). On Sun, Jun 9, 2013 at 10:07 AM, Stephan Woermann <swoerman...@googlemail.com<mailto:swoerman...@googlemail.com>> wrote: To get the total size of the struct, this should work: Foo test; sizeof( double ) * test.A.size() + sizeof( double ) * test.B.size() + sizeof( bool ) * 2 Stephan 2013/6/9 Guillaume Laforge <guillaume.laforge...@gmail.com<mailto:guillaume.laforge...@gmail.com>> Hi Ahmidou :), You could try to use pointers to std::vector. This way you will be able to access those vector and get the double values correctly. But you must handle the allocation/deallocation of those vectors by yourself: struct Foo{ std::vector<double> *A; std::vector<double> *B; bool C; bool D; Foo() { A = new std::vector<double>; B = new std::vector<double>; } ~Foo() { delete A; delete B; } }; Hope this help, Guillaume On Sun, Jun 9, 2013 at 8:07 AM, Ahmidou Lyazidi <ahmidou....@gmail.com<mailto:ahmidou....@gmail.com>> wrote: Hi List, Is it possible to store this kind of struct in a UserData (map or blob): struct Foo{ std::vector<double> A; std::vector<double> B; bool C; bool D; }; I can pull out the structure, and the vectors have the good number of item...but they are empty, the values are gone I'm not sure, but I think it's lost because of the size parameter in UserDataMap.PutItemValue I tried to set the real size ( sizeof(vector)+ sizeof(double)*vector::size() ) but this gave me some crazy results. Any idea? Thanks ----------------------------------------------- Ahmidou Lyazidi Director | TD | CG artist http://vimeo.com/ahmidou/videos http://www.cappuccino-films.com
<<attachment: winmail.dat>>