Another option would be to play the relational database game and split 'offsets' into a different dataset. Connect the items with some key (an index?) and perhaps a length. Of course connecting the dots is a manual procedure.
Depending on what you're doing this might not be terribly efficient. I've used this pattern a fair amount. Most of my accesses are sequential, so I can just maintain an index for each dataset. In this case, getting the next set of offsets is an increment while keys match. Scott From: Hdf-forum [mailto:[email protected]] On Behalf Of Gerd Heber Sent: Monday, October 28, 2013 5:13 PM To: HDF Users Discussion List Subject: Re: [Hdf-forum] Creating/storing data of variable length compound members Nick, there's, as usual, no single right answer. What's the average length of 'offsets' and what's the length variability? ( 'size_t' is not a good starting point for a machine independent representation.) Representing 'offsets' a VLEN has its price: you'll loose some performance and the ability to use compression on the data set. If there's a sensible upper bound on the length and only slight variation in the length, you might stick with a (fixed-size) ARRAY component. A compromise would be to separate the two parts of your compound and have a 'bounding boxes' (+ HDF5 reference) dataset and an 'offsets' dataset. Entries in the former would be compounds of your bounding boxes and an HDF5 region reference into a global 'offsets' dataset. (In this simple case, you can think of a region reference as a (offset, count) pair which references a contiguous region in a global 'offsets' dataset.) G. From: Hdf-forum [mailto:[email protected]] On Behalf Of Nicholas Yue Sent: Monday, October 28, 2013 3:53 PM To: HDF Users Discussion List Subject: [Hdf-forum] Creating/storing data of variable length compound members Hi, I would like to store a collection of the following as a compound data struct MyBox { double minX; double minY; double minZ; double maxX; double maxY; double maxZ; std::vector<size_t> offsets; }; I have no problem with the POD min* and max* However, I am unsure how best to handle std::vector<size_t> I read about variable length for string and was wondering if the information is applicable. Which example code should I consult to have a better understand of variable length as used within a compound type ? Cheers -- Nicholas Yue Graphics - RenderMan, Visualization, OpenGL, HDF5 Custom Dev - C++ porting, OSX, Linux, Windows http://au.linkedin.com/in/nicholasyue https://vimeo.com/channels/naiadtools ________________________________ This e-mail and any files transmitted with it may be proprietary and are intended solely for the use of the individual or entity to whom they are addressed. If you have received this e-mail in error please notify the sender. Please note that any views or opinions presented in this e-mail are solely those of the author and do not necessarily represent those of Exelis Inc. The recipient should check this e-mail and any attachments for the presence of viruses. Exelis Inc. accepts no liability for any damage caused by any virus transmitted by this e-mail.
_______________________________________________ Hdf-forum is for HDF software users discussion. [email protected] http://mail.lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
