This is a report on the modifications I had to make so the netCDF library
had
no names the same as those in the HDF library. (Initially there were lots of
conflicts because
HDF includes all the netcdf-2 names.) I only wanted to use netcdf-3 names
so it
seemed reasonable to try to suppress the netcdf-2 names in the netcdf
library. (I
could have modified HDF rather than netCDF, but it turned out to be just a
couple of hours
work to do it this way.)
I ran configure with
CPPFLAGS="-DNDEBUG -DNO_NETCDF_2" ./configure
I had hoped that this would suppress the generation of the version 2 stuff
in v2i.c, but I had
to insert several #ifndef commands to make this happen. I found the only
code in v2i.c which
needed to be retained was that for function nctypelen (which was supposed to
disappear from
version 3 if I remember correctly :-( )
This left just ten conflicting names. So I changed these by inserting the
following into nc.h:
/*
* Redefine following names to avoid conflict with HDF names
*/
#define nctypelen nc_nctypelen
int nctypelen(nc_type type);
#define NC_begins nc_NC_begins
#define NC_check_id nc_NC_check_id
#define NC_computeshapes nc_NC_computeshapes
#define NC_endef nc_NC_endef
#define NC_findattr nc_NC_findattr
#define NC_lookupattr nc_NC_lookupattr
#define NC_lookupvar nc_NC_lookupvar
#define NC_var_shape nc_NC_var_shape
#define NC_varoffset nc_NC_varoffset
Finally, I found it useful to define a NULL data-type like the HDF type
DFNT_NONE.
So I added the following line defining dummy type NC_NAT to netcdf.h as
follows:
/*
* The netcdf external data types
*/
typedef enum {
NC_NAT = 0, /* NAT = 'Not A Type' (c.f. NaN) */
NC_BYTE = 1, /* signed 1 byte integer */
NC_CHAR = 2, /* ISO/ASCII character */
NC_SHORT = 3, /* signed 2 byte integer */
NC_INT = 4, /* signed 4 byte integer */
NC_FLOAT = 5, /* single precision floating point number */
NC_DOUBLE = 6 /* double precision floating point number */
} nc_type;
I will send a copy of my modified code to Unidata.
Harvey Davies, CSIRO Atmospheric Research,
Private Bag No. 1, Aspendale 3195
E-mail: harvey.davies@xxxxxxxxxxxx
Phone: +61 3 9239 4556
Fax: +61 3 9239 4444