1/*
2
3This file is part of netcdf-4, a netCDF-like interface for HDF5, or a
4HDF5 backend for netCDF, depending on your point of view.
5
6This file handles the nc_ calls, calling the appropriate nc3 or nc4
7function, depending on ncid.
8
9Copyright 2003, University Corporation for Atmospheric Research. See
10netcdf-4/docs/COPYRIGHT file for copying and redistribution
11conditions.
12*/
13
14#include "nc4internal.h"
15#include "nc3dispatch.h"
16
17/* This will return the length of a netcdf data type in bytes. Since
18   we haven't added any new types, I just call the v3 function.
19   Ed Hartnett 10/43/03
20*/
21
22/* This function only does anything for netcdf-3 files. */
23int
24NC4_set_base_pe(int ncid, int pe)
25{
26      return NC_ENOTNC3;
27}
28
29/* This function only does anything for netcdf-3 files. */
30int
31NC4_inq_base_pe(int ncid, int *pe)
32{
33   return NC_ENOTNC3;
34}
35
36/* Get the format (i.e. classic, 64-bit-offset, or netcdf-4) of an
37 * open file. */
38int
39NC4_inq_format(int ncid, int *formatp)
40{
41   NC *nc;
42   NC_HDF5_FILE_INFO_Tnc4_info;
43
44   LOG((2, "nc_inq_format: ncid 0x%x", ncid));
45
46   if (!formatp)
47      return NC_NOERR;
48
49   /* Find the file metadata. */
50   if (!(nc = nc4_find_nc_file(ncid,&nc4_info)))
51      return NC_EBADID;
52
53   /* Otherwise, this is a netcdf-4 file. Check if classic NC3 rules
54    * are in effect for this file. */
55   if (nc4_info->cmode & NC_CLASSIC_MODEL)
56      *formatp = NC_FORMAT_NETCDF4_CLASSIC;
57   else
58      *formatp = NC_FORMAT_NETCDF4;
59
60   return NC_NOERR;
61}
62
63/* Get the extended format of an open file. */
64int
65NC4_inq_format_extended(int ncid, int *formatp, int *modep)
66{
67   NC *nc;
68   NC_HDF5_FILE_INFO_Th5;
69
70   LOG((2, "nc_inq_format_extended: ncid 0x%x", ncid));
71
72   /* Find the file metadata. */
73   if (!(nc = nc4_find_nc_file(ncid,&h5)))
74      return NC_EBADID;
75
76   if(modep) *modep = (nc->mode|NC_NETCDF4);
77
78   if(formatp) {
79#ifdef USE_HDF4
80 /* Distinguish HDF5 from HDF4 */
81 *formatp = (h5->hdf4 ? NC_FORMATX_NC_HDF4 : NC_FORMATX_NC_HDF5);
82#else /* USE_HDF4 */
83 *formatp = NC_FORMATX_NC_HDF5;
84#endif /* USE_HDF4 */
85   }
86   return NC_NOERR;
87}


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed