Ah, I see. Well, that is definitely different from what I was thinking
he was asking. And, requires a different answer than I gave. ;)

Mark

On Thu, 2010-06-03 at 04:39, Quincey Koziol wrote:
> Hi Mark,
> 
> On Jun 2, 2010, at 9:36 PM, Mark Miller wrote:
> 
> > Yes. But the procedure you'd use depends a bit on what kind of object
> > you are talking about (dataset or attribute) and how you chose to define
> > the object. Did you use H5T_C_S1 as the datatype for the string? Did you
> > maybe just define a dataset/attribute of type H5T_NATIVE_CHAR and then
> > an 1D dataspace of some size? I think those choices effect how you'd go
> > about obtaining length.
> > 
> > A general algorithm might look like...
> > 
> >     1. whether its a dataset or attribute, you need to open it first
> >        (H5Dopen/H5Aopen)
> >     2. then get its datatype (H5Dget_type/H5Aget_type)
> >     3. then get the size of that datatype (H5Tget_size)
> >     4. Then get the size of the dataspace
> >     5. Use results from steps 3 and 4 to determine total size.
> 
>       Actually, I think that Ken is trying to determine the actual string 
> length for an individual element of a dataset or attribute, and he's correct 
> that there's no way to retrieve the length before reading it in.  The method 
> you describe above is correct for determining the size of the array an 
> application will need to allocate for reading the strings, but the size 
> returned from H5Tget_size() should be the same as sizeof(char *) (for 
> variable-length strings - for variable-length sequences of another datatype, 
> it should be sizeof(hvl_t)).  The memory for the actual strings themselves 
> will be allocated at read time (and the malloc/free routines used can be 
> controlled with H5Pset_vlen_mem_manager).
> 
>       Quincey
> 
> > Mark
> > 
> > On Wed, 2010-06-02 at 18:55, Ken Sullivan wrote:
> >> Quick question, is there a way to find the length of a variable length
> >> string without first reading it?
> >> 
> >> Thanks,
> >> Ken
> > -- 
> > Mark C. Miller, Lawrence Livermore National Laboratory
> > ================!!LLNL BUSINESS ONLY!!================
> > [email protected]      urgent: [email protected]
> > T:8-6 (925)-423-5901     M/W/Th:7-12,2-7 (530)-753-851
> > 
> > 
> > _______________________________________________
> > Hdf-forum is for HDF software users discussion.
> > [email protected]
> > http://*mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
> 
> 
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://*mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
-- 
Mark C. Miller, Lawrence Livermore National Laboratory
================!!LLNL BUSINESS ONLY!!================
[email protected]      urgent: [email protected]
T:8-6 (925)-423-5901     M/W/Th:7-12,2-7 (530)-753-851


_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

Reply via email to