Hi Ahmidou, I'm often storing just a pointer to an array/buffer/vector to pass any struct to a User Data and it is working fine. It is hard to help you without seeing more chunks of your code :). Maybe you could try to repro the issue on a simpler code that you could share here ?
Cheers, Guillaume On Mon, Jun 10, 2013 at 4:33 AM, Ahmidou Lyazidi <[email protected]>wrote: > Thanks everyone, unfortunatly I'm still stuck..... > > @ Stephane, this is what I'm doing, but it's not working: > sizeof( test.A ) + sizeof( double ) * test.A.size() + sizeof( test.B ) + > sizeof( double ) * test.B.size() + sizeof( bool ) * 2 > > @ Guillame > Thanks, I tryed your example but I'm probably doing it the wrong way: > > Foo Test; > //Set some values > Test.A->pushback(12); > Test.B->pushback(24); > Test.B->pushback(32); > Test.C->pushback(true); > Test.D->pushback(false); > > myMap.PutItemValue( i, (unsigned char*)&Test, sizeof( Foo )) ; > > // Get them back > const unsigned char* pInternalData = NULL ; > UINT cntData = 0 ; > myMap.GetItemValue( 0, pInternalData, cntData ) ; > > Foo *pData = (Foo*) pInternalData ; > if(pData) > { > Application().LogMessage("nb "+CString(pData->A->size())); > } > > this return empty vector.... > > @MAB > Could you point me to some ressources on the web about this? > > Thanks!! > > > > ----------------------------------------------- > Ahmidou Lyazidi > Director | TD | CG artist > http://vimeo.com/ahmidou/videos > http://www.cappuccino-films.com > > > 2013/6/10 Marc-Andre Belzile <[email protected]> > >> 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: [email protected] [mailto: >> [email protected]] On Behalf Of Guillaume Laforge >> Sent: Sunday, June 09, 2013 3:29 PM >> To: [email protected] >> 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 < >> [email protected]<mailto:[email protected]>> 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 <[email protected]<mailto: >> [email protected]>> >> 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 <[email protected] >> <mailto:[email protected]>> 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 >> >> >> >> >

