HDF5 headers -- not self-sufficient?

Is it the case that you're always supposed to include hdf5.h or H5Cpp.h?

It seems to be suggested in the documentation that to instantiate
H5::H5File, I have to include H5File.h.

The actual case is that H5File.h doesn't include the headers for it's
superclasses. And to top it off the flag values used by the constructors
are in a separate header H5FPublic.h.

This seems counter to the conventions of every other C++ (or C!) library I
regularly use. With those libraries, if you use a class you include its
header, and the header itself includes whatever it needs to to fully
define its class. At a minimum this would
include the header for any parent class, and any manifest constants it
uses.

The HDF group might have another development paradigm.

···

--
Kent Williams norman-k-williams@uiowa.edu

________________________________
Notice: This UI Health Care e-mail (including attachments) is covered by the Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential and may be legally privileged. If you are not the intended recipient, you are hereby notified that any retention, dissemination, distribution, or copying of this communication is strictly prohibited. Please reply to the sender that you have received the message in error, then delete it. Thank you.
________________________________

Hello,

An application should only need to include H5Cpp.h if it uses the HDF5 C++
API. Please send us the specific documentation entry and we will
correct/clarify it.

Thanks,
Binh-Minh

···

-------------
The HDF Group

-----Original Message-----
From: hdf-forum-bounces@hdfgroup.org [mailto:hdf-forum-bounces@hdfgroup.org]
On Behalf Of Williams, Norman K
Sent: Wednesday, March 16, 2011 1:34 PM
To: HDF Users Discussion List
Subject: [Hdf-forum] HDF5 headers -- not self-sufficient?

Is it the case that you're always supposed to include hdf5.h or H5Cpp.h?

It seems to be suggested in the documentation that to instantiate
H5::H5File, I have to include H5File.h.

The actual case is that H5File.h doesn't include the headers for it's
superclasses. And to top it off the flag values used by the constructors
are in a separate header H5FPublic.h.

This seems counter to the conventions of every other C++ (or C!) library I
regularly use. With those libraries, if you use a class you include its
header, and the header itself includes whatever it needs to to fully
define its class. At a minimum this would
include the header for any parent class, and any manifest constants it
uses.

The HDF group might have another development paradigm.

--
Kent Williams norman-k-williams@uiowa.edu

________________________________
Notice: This UI Health Care e-mail (including attachments) is covered by the
Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential
and may be legally privileged. If you are not the intended recipient, you
are hereby notified that any retention, dissemination, distribution, or
copying of this communication is strictly prohibited. Please reply to the
sender that you have received the message in error, then delete it. Thank
you.
________________________________

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

--
Internal Virus Database is out-of-date.
Checked by AVG.
Version: 7.5.549 / Virus Database: 270.9.0/1778 - Release Date: 11/9/2008
2:14 PM

I think I wasn't clear.

My complaint is that the HDF5 C++ headers (and I believe the C headers as
well) don't include the necessary headers to that you could, for example
just use

#include <H5File.h>

If the only class you cared about was H5::H5File.

H5File.h includes no other headers, and yet H5::H5File derives from two
other H5 classes. And if you include the headers for those classes, they
also don't include headers for the classes from which they derive.

So you have two choices: #include <H5Cpp.h> and pull in the entire
library's headers,
or spend considerable time tracking down all the headers needed by
H5File.h to compile.

The former choice pulls in files that aren't needed, and the later choice
is difficult, error-prone, and time consuming.

···

On 3/16/11 12:52 PM, "Binh-Minh Ribler" <bmribler@hdfgroup.org> wrote:

Hello,

An application should only need to include H5Cpp.h if it uses the HDF5 C++
API. Please send us the specific documentation entry and we will
correct/clarify it.

Thanks,
Binh-Minh
-------------
The HDF Group

-----Original Message-----
From: hdf-forum-bounces@hdfgroup.org
[mailto:hdf-forum-bounces@hdfgroup.org]
On Behalf Of Williams, Norman K
Sent: Wednesday, March 16, 2011 1:34 PM
To: HDF Users Discussion List
Subject: [Hdf-forum] HDF5 headers -- not self-sufficient?

Is it the case that you're always supposed to include hdf5.h or H5Cpp.h?

It seems to be suggested in the documentation that to instantiate
H5::H5File, I have to include H5File.h.

The actual case is that H5File.h doesn't include the headers for it's
superclasses. And to top it off the flag values used by the constructors
are in a separate header H5FPublic.h.

This seems counter to the conventions of every other C++ (or C!) library I
regularly use. With those libraries, if you use a class you include its
header, and the header itself includes whatever it needs to to fully
define its class. At a minimum this would
include the header for any parent class, and any manifest constants it
uses.

The HDF group might have another development paradigm.

--
Kent Williams norman-k-williams@uiowa.edu

________________________________
Notice: This UI Health Care e-mail (including attachments) is covered by
the
Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is
confidential
and may be legally privileged. If you are not the intended recipient, you
are hereby notified that any retention, dissemination, distribution, or
copying of this communication is strictly prohibited. Please reply to the
sender that you have received the message in error, then delete it. Thank
you.
________________________________

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

--
Internal Virus Database is out-of-date.
Checked by AVG.
Version: 7.5.549 / Virus Database: 270.9.0/1778 - Release Date: 11/9/2008
2:14 PM

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

________________________________
Notice: This UI Health Care e-mail (including attachments) is covered by the Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential and may be legally privileged. If you are not the intended recipient, you are hereby notified that any retention, dissemination, distribution, or copying of this communication is strictly prohibited. Please reply to the sender that you have received the message in error, then delete it. Thank you.
________________________________

Ah, yes, I misunderstood you.

The header files were arranged for ease of use, not for minimizing
compilation time. There weren't that much code in these header files that
would have a big impact on the compilation time anyway. But, you're right,
you have two choices to consider.

Thanks for using HDF,
Binh-Minh

···

-----Original Message-----
From: hdf-forum-bounces@hdfgroup.org [mailto:hdf-forum-bounces@hdfgroup.org]
On Behalf Of Williams, Norman K
Sent: Wednesday, March 16, 2011 2:12 PM
To: HDF Users Discussion List
Subject: Re: [Hdf-forum] HDF5 headers -- not self-sufficient?

I think I wasn't clear.

My complaint is that the HDF5 C++ headers (and I believe the C headers as
well) don't include the necessary headers to that you could, for example
just use

#include <H5File.h>

If the only class you cared about was H5::H5File.

H5File.h includes no other headers, and yet H5::H5File derives from two
other H5 classes. And if you include the headers for those classes, they
also don't include headers for the classes from which they derive.

So you have two choices: #include <H5Cpp.h> and pull in the entire
library's headers,
or spend considerable time tracking down all the headers needed by
H5File.h to compile.

The former choice pulls in files that aren't needed, and the later choice
is difficult, error-prone, and time consuming.

On 3/16/11 12:52 PM, "Binh-Minh Ribler" <bmribler@hdfgroup.org> wrote:

Hello,

An application should only need to include H5Cpp.h if it uses the HDF5 C++
API. Please send us the specific documentation entry and we will
correct/clarify it.

Thanks,
Binh-Minh
-------------
The HDF Group

-----Original Message-----
From: hdf-forum-bounces@hdfgroup.org
[mailto:hdf-forum-bounces@hdfgroup.org]
On Behalf Of Williams, Norman K
Sent: Wednesday, March 16, 2011 1:34 PM
To: HDF Users Discussion List
Subject: [Hdf-forum] HDF5 headers -- not self-sufficient?

Is it the case that you're always supposed to include hdf5.h or H5Cpp.h?

It seems to be suggested in the documentation that to instantiate
H5::H5File, I have to include H5File.h.

The actual case is that H5File.h doesn't include the headers for it's
superclasses. And to top it off the flag values used by the constructors
are in a separate header H5FPublic.h.

This seems counter to the conventions of every other C++ (or C!) library I
regularly use. With those libraries, if you use a class you include its
header, and the header itself includes whatever it needs to to fully
define its class. At a minimum this would
include the header for any parent class, and any manifest constants it
uses.

The HDF group might have another development paradigm.

--
Kent Williams norman-k-williams@uiowa.edu

________________________________
Notice: This UI Health Care e-mail (including attachments) is covered by
the
Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is
confidential
and may be legally privileged. If you are not the intended recipient, you
are hereby notified that any retention, dissemination, distribution, or
copying of this communication is strictly prohibited. Please reply to the
sender that you have received the message in error, then delete it. Thank
you.
________________________________

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

--
Internal Virus Database is out-of-date.
Checked by AVG.
Version: 7.5.549 / Virus Database: 270.9.0/1778 - Release Date: 11/9/2008
2:14 PM

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

________________________________
Notice: This UI Health Care e-mail (including attachments) is covered by the
Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential
and may be legally privileged. If you are not the intended recipient, you
are hereby notified that any retention, dissemination, distribution, or
copying of this communication is strictly prohibited. Please reply to the
sender that you have received the message in error, then delete it. Thank
you.
________________________________

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

--
Internal Virus Database is out-of-date.
Checked by AVG.
Version: 7.5.549 / Virus Database: 270.9.0/1778 - Release Date: 11/9/2008
2:14 PM