annotate main/netcdf/src/__netcdf__.cc @ 11989:fef2bde1d412 octave-forge

restructure test (4)
author abarth93
date Mon, 29 Jul 2013 20:02:39 +0000
parents 2dcf60b06fb2
children 06b8749dbbcc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11984
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1 // Copyright (C) 2013 Alexander Barth <barth.alexander@gmail.com>
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
2 //
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
3 // This program is free software; you can redistribute it and/or modify it under
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
4 // the terms of the GNU General Public License as published by the Free Software
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
5 // Foundation; either version 2 of the License, or (at your option) any later
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
6 // version.
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
7 //
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
8 // This program is distributed in the hope that it will be useful, but WITHOUT
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
9 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
10 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
11 // details.
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
12 //
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
13 // You should have received a copy of the GNU General Public License along with
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
14 // this program; if not, see <http://www.gnu.org/licenses/>.
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
15
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
16
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
17 #include <octave/oct.h>
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
18 #include <octave/ov-cell.h>
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
19
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
20 #include <netcdf.h>
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
21
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
22 #include <string>
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
23 #include <map>
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
24 #include <iostream>
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
25 #include <algorithm>
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
26 #include <vector>
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
27
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
28 std::map<std::string, octave_value> netcdf_constants;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
29
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
30 void init() {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
31 #include "netcdf_constants.h"
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
32 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
33
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
34 void check_err(int status)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
35 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
36 if (status != NC_NOERR) error("%s",nc_strerror(status));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
37 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
38
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
39 // convert name to upper-case and add "NC_" prefix if it is missing
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
40 std::string normalize_ncname(std::string name) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
41 std::string prefix = "NC_";
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
42 std::string ncname = name;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
43 // to upper case
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
44 std::transform(ncname.begin(), ncname.end(),ncname.begin(), ::toupper);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
45
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
46 // add prefix if it is missing
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
47 if (ncname.substr(0, prefix.size()) != prefix) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
48 ncname = prefix + ncname;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
49 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
50 return ncname;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
51 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
52
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
53 octave_value netcdf_get_constant(octave_value ov)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
54 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
55 if (netcdf_constants.empty())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
56 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
57 init();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
58 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
59
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
60 if (ov.is_scalar_type())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
61 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
62 return ov.scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
63 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
64
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
65 std::string name = ov.string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
66 name = normalize_ncname(name);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
67 std::map<std::string, octave_value>::const_iterator cst = netcdf_constants.find(name);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
68
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
69 if (cst != netcdf_constants.end ())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
70 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
71 return cst->second;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
72 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
73 else
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
74 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
75 error("unknown netcdf constant: %s",name.c_str());
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
76 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
77 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
78
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
79
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
80 void start_count_stride(int ncid, int varid, octave_value_list args,int len,size_t* start,size_t* count,ptrdiff_t* stride)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
81 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
82 int ndims, dimids[NC_MAX_VAR_DIMS];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
83
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
84 check_err(nc_inq_varndims (ncid, varid, &ndims));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
85 check_err(nc_inq_vardimid (ncid, varid, dimids));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
86
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
87 // default values for start, count and stride
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
88 // i.e. all variable is loaded
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
89
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
90 for (int i=0; i<ndims; i++) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
91 check_err(nc_inq_dimlen(ncid,dimids[i],&(count[i])));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
92 start[i] = 0;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
93 //cout << "count def " << count[i] << " " << i << endl;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
94 stride[i] = 1;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
95 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
96
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
97 // start argument
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
98
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
99 if (len > 2)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
100 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
101 uint64NDArray tmp = args(2).uint64_array_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
102
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
103 if (tmp.dims().numel() != ndims)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
104 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
105 error("number of elements of argument %s should match the number "
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
106 "of dimension of the netCDF variable",
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
107 "start");
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
108 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
109
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
110 for (int i=0; i<ndims; i++)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
111 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
112 start[i] = (size_t)tmp(ndims-i-1);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
113
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
114 // if start is specified, the default for count is 1 (how odd!)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
115 count[i] = 1;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
116 //cout << "start " << start[i] << " " << i << endl;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
117 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
118 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
119
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
120 // count argument
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
121
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
122 if (len > 3)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
123 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
124 uint64NDArray tmp = args(3).uint64_array_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
125
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
126 if (tmp.dims().numel() != ndims)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
127 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
128 error("number of elements of argument %s should match the number "
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
129 "of dimension of the netCDF variable",
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
130 "count");
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
131 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
132
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
133 for (int i=0; i<ndims; i++)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
134 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
135 count[i] = (size_t)tmp(ndims-i-1);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
136 //count[i] = (size_t)tmp(i);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
137 //cout << "count " << count[i] << " " << i << endl;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
138 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
139 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
140
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
141 // stride argument
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
142
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
143 if (len > 4)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
144 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
145 int64NDArray tmp = args(4).int64_array_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
146
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
147 if (tmp.dims().numel() != ndims)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
148 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
149 error("number of elements of argument %s should match the number "
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
150 "of dimension of the netCDF variable",
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
151 "stride");
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
152 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
153
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
154 for (int i=0; i<ndims; i++)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
155 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
156 stride[i] = (ptrdiff_t)tmp(ndims-i-1);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
157 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
158 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
159
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
160 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
161
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
162
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
163 DEFUN_DLD(netcdf_getConstant, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
164 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
165 @deftypefn {Loadable Function} {@var{value} =} netcdf_getConstant(@var{name}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
166 Returns the value of a NetCDF constant called @var{name}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
167 @seealso{netcdf_getConstantNames}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
168 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
169 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
170 if (args.length() != 1) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
171 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
172 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
173 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
174
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
175 return netcdf_get_constant(args(0));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
176 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
177
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
178
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
179 DEFUN_DLD(netcdf_getConstantNames, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
180 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
181 @deftypefn {Loadable Function} {@var{value} =} netcdf_getConstantNames() \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
182 Returns a list of all constant names.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
183 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
184 @seealso{netcdf_getConstant}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
185 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
186
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
187 if (args.length() != 0) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
188 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
189 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
190 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
191
11989
fef2bde1d412 restructure test (4)
abarth93
parents: 11984
diff changeset
192 if (netcdf_constants.empty())
fef2bde1d412 restructure test (4)
abarth93
parents: 11984
diff changeset
193 {
fef2bde1d412 restructure test (4)
abarth93
parents: 11984
diff changeset
194 init();
fef2bde1d412 restructure test (4)
abarth93
parents: 11984
diff changeset
195 }
fef2bde1d412 restructure test (4)
abarth93
parents: 11984
diff changeset
196
11984
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
197 Cell c = Cell (dim_vector(1,netcdf_constants.size()));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
198
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
199 int i = 0;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
200 for (std::map<std::string, octave_value>::const_iterator p = netcdf_constants.begin ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
201 p != netcdf_constants.end (); p++) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
202 c(i++) = octave_value(p->first);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
203 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
204
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
205 return octave_value(c);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
206
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
207 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
208
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
209
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
210 DEFUN_DLD(netcdf_inqLibVers, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
211 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
212 @deftypefn {Loadable Function} {@var{vers} =} netcdf_inqLibVers() \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
213 Returns the version of the NetCDF library.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
214 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
215 @seealso{netcdf_open}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
216 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
217 if (args.length() != 0) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
218 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
219 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
220 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
221
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
222 return octave_value(std::string(nc_inq_libvers()));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
223 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
224
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
225 DEFUN_DLD(netcdf_setDefaultFormat, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
226 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
227 @deftypefn {Loadable Function} {@var{old_format} =} netcdf_setDefaultFormat(@var{format}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
228 Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). @var{format} can be \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
229 \"format_classic\", \"format_64bit\", \"format_netcdf4\" or \"format_netcdf4_classic\". \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
230 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
231 @seealso{netcdf_open}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
232 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
233 if (args.length() != 1)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
234 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
235 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
236 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
237 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
238
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
239 int format = netcdf_get_constant(args(0)).int_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
240 int old_format;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
241
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
242 check_err(nc_set_default_format(format, &old_format));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
243
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
244 return octave_value(old_format);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
245 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
246
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
247
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
248 // int nc_set_chunk_cache(size_t size, size_t nelems, float preemption);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
249
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
250 DEFUN_DLD(netcdf_setChunkCache, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
251 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
252 @deftypefn {Loadable Function} {} netcdf_setChunkCache(@var{size}, @var{nelems}, @var{preemption}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
253 Sets the default chunk cache settins in the HDF5 library. The settings applies to all files which are subsequently opened or created.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
254 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
255 @seealso{netcdf_getChunkCache}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
256 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
257 if (args.length() != 3)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
258 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
259 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
260 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
261 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
262
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
263 size_t size = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
264 size_t nelems = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
265 float preemption = args(2).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
266
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
267 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
268 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
269 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
270 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
271 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
272
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
273 check_err(nc_set_chunk_cache(size, nelems, preemption));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
274
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
275 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
276 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
277
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
278
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
279 // int nc_get_chunk_cache(size_t *sizep, size_t *nelemsp, float *preemptionp);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
280
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
281 DEFUN_DLD(netcdf_getChunkCache, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
282 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
283 @deftypefn {Loadable Function} {[@var{size}, @var{nelems}, @var{preemption}] =} netcdf_getChunkCache() \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
284 Gets the default chunk cache settins in the HDF5 library. \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
285 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
286 @seealso{netcdf_setChunkCache}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
287 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
288 if (args.length() != 0)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
289 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
290 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
291 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
292 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
293
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
294 size_t size;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
295 size_t nelems;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
296 float preemption;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
297
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
298 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
299 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
300 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
301 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
302 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
303
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
304 check_err(nc_get_chunk_cache(&size, &nelems, &preemption));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
305 octave_value_list retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
306 retval(0) = octave_value(size);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
307 retval(1) = octave_value(nelems);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
308 retval(2) = octave_value(preemption);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
309
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
310 return retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
311 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
312
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
313
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
314
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
315 DEFUN_DLD(netcdf_create, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
316 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
317 @deftypefn {Loadable Function} {@var{ncid} =} netcdf_create(@var{filename},@var{mode}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
318 Creates the file named @var{filename} in the mode @var{mode} which can have the \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
319 following values: \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
320 \"clobber\" (overwrite existing files), \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
321 \"noclobber\" (prevent to overwrite existing files) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
322 \"64bit_offset\" (use the 64bit-offset format), \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
323 \"netcdf4\" (use the NetCDF4, i.e. HDF5 format) or \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
324 \"share\" (concurrent reading of the dataset). \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
325 @var{mode} can also be the numeric value return by netcdf_getConstant. In the later-case it can be combined with a bitwise-or. \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
326 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
327 Example: \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
328 @example \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
329 mode = bitor(netcdf.getConstant(\"classic_model\"), ...\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
330 netcdf.getConstant(\"netcdf4\")); \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
331 ncid = netcdf.create(\"test.nc\",mode); \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
332 @end example \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
333 @seealso{netcdf_close}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
334 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
335
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
336 if (args.length() != 2)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
337 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
338 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
339 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
340 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
341
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
342 std::string filename = args(0).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
343 int mode = netcdf_get_constant(args(1)).int_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
344 int ncid;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
345
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
346 check_err(nc_create(filename.c_str(), mode, &ncid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
347
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
348 return octave_value(ncid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
349 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
350
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
351 DEFUN_DLD(netcdf_open, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
352 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
353 @deftypefn {Loadable Function} {@var{ncid} =} netcdf_open(@var{filename},@var{mode}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
354 Opens the file named @var{filename} in the mode @var{mode}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
355 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
356 @seealso{netcdf_close}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
357 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
358
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
359 if (args.length() != 2) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
360 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
361 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
362 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
363
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
364 std::string filename = args(0).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
365 int mode = netcdf_get_constant(args(1)).int_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
366 int ncid;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
367
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
368 check_err(nc_open(filename.c_str(), mode, &ncid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
369
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
370 return octave_value(ncid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
371 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
372
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
373
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
374
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
375 DEFUN_DLD(netcdf_abort, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
376 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
377 @deftypefn {Loadable Function} {} netcdf_abort(@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
378 Aborts all changes since the last time the dataset entered in define mode.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
379 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
380 @seealso{netcdf_reDef}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
381 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
382
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
383 if (args.length() != 1)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
384 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
385 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
386 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
387 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
388
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
389 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
390
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
391 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
392 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
393 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
394 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
395 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
396
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
397 check_err(nc_abort(ncid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
398
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
399 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
400 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
401
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
402
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
403 DEFUN_DLD(netcdf_sync, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
404 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
405 @deftypefn {Loadable Function} {} netcdf_sync(@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
406 Writes all changes to the disk and leaves the file open.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
407 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
408 @seealso{netcdf_close}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
409 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
410
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
411 if (args.length() != 1)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
412 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
413 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
414 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
415 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
416
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
417 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
418
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
419 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
420 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
421 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
422 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
423 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
424
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
425 check_err(nc_sync(ncid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
426
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
427 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
428 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
429
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
430 DEFUN_DLD(netcdf_setFill, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
431 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
432 @deftypefn {Loadable Function} {@var{old_mode} =} netcdf_setFill(@var{ncid},@var{fillmode}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
433 Change the fill mode (@var{fillmode}) of the data set @var{ncid}. The previous value of the fill mode is returned. @var{fillmode} can be either \"fill\" or \"nofill\".\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
434 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
435 @seealso{netcdf_open}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
436 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
437
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
438 if (args.length() != 2)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
439 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
440 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
441 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
442 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
443
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
444 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
445 int fillmode = netcdf_get_constant(args(1)).int_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
446 int old_mode;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
447
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
448 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
449 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
450 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
451 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
452 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
453
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
454 check_err (nc_set_fill (ncid, fillmode, &old_mode));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
455
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
456 return octave_value(old_mode);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
457 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
458
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
459
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
460 //int nc_inq (int ncid, int *ndimsp, int *nvarsp, int *ngattsp,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
461 // int *unlimdimidp);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
462 DEFUN_DLD(netcdf_inq, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
463 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
464 @deftypefn {Loadable Function} {[@var{ndims},@var{nvars},@var{ngatts},@var{unlimdimid}] =} netcdf_inq(@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
465 Return the number of dimension (@var{ndims}), the number of variables (@var{nvars}), the number of global attributes (@var{ngatts}) and the id of the unlimited dimension (@var{unlimdimid}). \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
466 If no unlimited dimension is declared -1 is returned. For NetCDF4 files, one should use \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
467 the function netcdf_inqUnlimDims as multiple unlimite dimension exists. \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
468 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
469 @seealso{netcdf_inqUnlimDims}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
470 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
471 if (args.length() != 1) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
472 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
473 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
474 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
475
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
476 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
477 int ndims, nvars, ngatts, unlimdimid;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
478 octave_value_list retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
479
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
480 check_err(nc_inq(ncid,&ndims,&nvars,&ngatts,&unlimdimid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
481
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
482 retval(0) = octave_value(ndims);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
483 retval(1) = octave_value(nvars);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
484 retval(2) = octave_value(ngatts);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
485 retval(3) = octave_value(unlimdimid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
486 return retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
487 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
488
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
489 // int nc_inq_unlimdims(int ncid, int *nunlimdimsp, int *unlimdimidsp);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
490 DEFUN_DLD(netcdf_inqUnlimDims, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
491 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
492 @deftypefn {Loadable Function} {@var{unlimdimids} =} netcdf_inqUnlimDims(@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
493 Return the id of all unlimited dimensions of the NetCDF file @var{ncid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
494 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
495 @seealso{netcdf_inq}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
496 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
497 if (args.length() != 1) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
498 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
499 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
500 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
501
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
502 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
503 int nunlimdims;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
504
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
505 check_err(nc_inq_unlimdims(ncid, &nunlimdims, NULL));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
506 Array<int> unlimdimids = Array<int>(dim_vector(1,nunlimdims));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
507 check_err(nc_inq_unlimdims(ncid, &nunlimdims, unlimdimids.fortran_vec()));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
508
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
509 return octave_value(unlimdimids);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
510 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
511
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
512
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
513 // int nc_inq_format (int ncid, int *formatp);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
514 DEFUN_DLD(netcdf_inqFormat, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
515 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
516 @deftypefn {Loadable Function} {@var{format} =} netcdf_inqFormat(@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
517 Return the NetCDF format of the dataset @var{ncid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
518 Format might be one of the following \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
519 \"FORMAT_CLASSIC\", \"FORMAT_64BIT\", \"FORMAT_NETCDF4\" or \"FORMAT_NETCDF4_CLASSIC\" \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
520 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
521 @seealso{netcdf_inq}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
522 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
523
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
524 if (args.length() != 1) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
525 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
526 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
527 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
528
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
529 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
530 int format;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
531 check_err(nc_inq_format(ncid, &format));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
532
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
533 if (format == NC_FORMAT_CLASSIC) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
534 return octave_value("FORMAT_CLASSIC");
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
535 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
536 if (format == NC_FORMAT_64BIT) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
537 return octave_value("FORMAT_64BIT");
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
538 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
539 if (format == NC_FORMAT_NETCDF4) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
540 return octave_value("FORMAT_NETCDF4");
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
541 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
542
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
543 return octave_value("FORMAT_NETCDF4_CLASSIC");
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
544 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
545
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
546 // int nc_def_dim (int ncid, const char *name, size_t len, int *dimidp);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
547
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
548 DEFUN_DLD(netcdf_defDim, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
549 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
550 @deftypefn {Loadable Function} {@var{dimid} =} netcdf_defDim(@var{ncid},@var{name},@var{len}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
551 Define the dimension with the name @var{name} and the length @var{len} in the dataset @var{ncid}. The id of the dimension is returned.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
552 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
553 @seealso{netcdf_defVar}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
554 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
555
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
556 if (args.length() != 3) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
557 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
558 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
559 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
560
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
561 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
562 std::string name = args(1).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
563 size_t len = args(2).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
564 int dimid;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
565
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
566 check_err(nc_def_dim (ncid, name.c_str(), len, &dimid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
567
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
568 return octave_value(dimid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
569 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
570
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
571
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
572 // int nc_rename_dim(int ncid, int dimid, const char* name);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
573
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
574
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
575 DEFUN_DLD(netcdf_renameDim, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
576 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
577 @deftypefn {Loadable Function} {} netcdf_renameDim(@var{ncid},@var{dimid},@var{name}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
578 Renames the dimension with the id @var{dimid} in the data set @var{ncid}. @var{name} is the new name of the dimension.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
579 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
580 @seealso{netcdf_defDim}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
581 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
582
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
583 if (args.length() != 3)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
584 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
585 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
586 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
587 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
588
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
589 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
590 int dimid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
591 std::string name = args(2).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
592
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
593 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
594 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
595 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
596 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
597 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
598
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
599 check_err(nc_rename_dim (ncid, dimid, name.c_str()));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
600
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
601 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
602 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
603
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
604 // int nc_def_var (int ncid, const char *name, nc_type xtype,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
605 // int ndims, const int dimids[], int *varidp);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
606
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
607 DEFUN_DLD(netcdf_defVar, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
608 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
609 @deftypefn {Loadable Function} {@var{varid} = } netcdf_defVar(@var{ncid},@var{name},@var{xtype},@var{dimids}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
610 Defines a variable with the name @var{name} in the dataset @var{ncid}. @var{xtype} can be \"byte\", \"ubyte\", \"short\", \"ushort\", \"int\", \"uint\", \"int64\", \"uint64\", \"float\", \"double\", \"char\" or the corresponding number as returned by netcdf_getConstant. The parameter @var{dimids} define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned. \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
611 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
612 @seealso{netcdf_open,netcdf_defDim}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
613 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
614
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
615 if (args.length() != 4) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
616 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
617 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
618 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
619
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
620 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
621 std::string name = args(1).string_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
622 int xtype = netcdf_get_constant(args(2)).int_value();;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
623 Array<double> tmp;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
624
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
625 if (!args(3).is_empty()) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
626 tmp = args(3).vector_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
627 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
628
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
629 OCTAVE_LOCAL_BUFFER (int, dimids, tmp.numel());
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
630
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
631 for (int i = 0; i < tmp.numel(); i++)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
632 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
633 dimids[i] = tmp(tmp.numel()-i-1);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
634 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
635
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
636 int varid;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
637
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
638 check_err(nc_def_var (ncid, name.c_str(), xtype, tmp.numel(), dimids, &varid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
639
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
640 return octave_value(varid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
641 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
642
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
643
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
644 // int nc_rename_var(int ncid, int varid, const char* name);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
645
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
646
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
647 DEFUN_DLD(netcdf_renameVar, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
648 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
649 @deftypefn {Loadable Function} {} netcdf_renameVar(@var{ncid},@var{varid},@var{name}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
650 Renames the variable with the id @var{varid} in the data set @var{ncid}. @var{name} is the new name of the variable.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
651 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
652 @seealso{netcdf_defVar}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
653 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
654
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
655 if (args.length() != 3)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
656 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
657 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
658 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
659 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
660
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
661 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
662 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
663 std::string name = args(2).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
664
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
665 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
666 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
667 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
668 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
669 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
670
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
671 check_err(nc_rename_var (ncid, varid, name.c_str()));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
672
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
673 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
674 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
675
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
676
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
677 // int nc_def_var_fill(int ncid, int varid, int no_fill, void *fill_value);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
678 DEFUN_DLD(netcdf_defVarFill, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
679 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
680 @deftypefn {Loadable Function} {} netcdf_defVarFill(@var{ncid},@var{varid},@var{no_fill},@var{fillvalue}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
681 Define the fill-value settings of the NetCDF variable @var{varid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
682 If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
683 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
684 @seealso{netcdf_inqVarFill}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
685 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
686
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
687 if (args.length() != 4) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
688 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
689 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
690 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
691
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
692 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
693 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
694 int no_fill = args(2).scalar_value(); // boolean
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
695 octave_value fill_value = args(3);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
696 nc_type xtype;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
697 check_err(nc_inq_vartype (ncid, varid, &xtype));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
698
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
699 switch (xtype)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
700 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
701 #define OV_NETCDF_DEF_VAR_FILL(netcdf_type,c_type,method) \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
702 case netcdf_type: \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
703 { \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
704 check_err(nc_def_var_fill(ncid, varid, no_fill, fill_value.method().fortran_vec())); \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
705 break; \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
706 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
707
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
708 OV_NETCDF_DEF_VAR_FILL(NC_BYTE, signed char, int8_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
709 OV_NETCDF_DEF_VAR_FILL(NC_UBYTE, unsigned char, uint8_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
710 OV_NETCDF_DEF_VAR_FILL(NC_SHORT, short, int16_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
711 OV_NETCDF_DEF_VAR_FILL(NC_USHORT, unsigned short, uint16_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
712 OV_NETCDF_DEF_VAR_FILL(NC_INT, int, int32_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
713 OV_NETCDF_DEF_VAR_FILL(NC_UINT, unsigned int, uint32_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
714 OV_NETCDF_DEF_VAR_FILL(NC_INT64, long long, int64_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
715 OV_NETCDF_DEF_VAR_FILL(NC_UINT64, unsigned long long, uint64_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
716
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
717 OV_NETCDF_DEF_VAR_FILL(NC_FLOAT, float, float_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
718 OV_NETCDF_DEF_VAR_FILL(NC_DOUBLE,double,array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
719
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
720 OV_NETCDF_DEF_VAR_FILL(NC_CHAR, char, char_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
721 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
722
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
723 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
724 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
725
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
726
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
727
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
728 // int nc_def_var_fill(int ncid, int varid, int no_fill, void *fill_value);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
729 DEFUN_DLD(netcdf_inqVarFill, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
730 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
731 @deftypefn {Loadable Function} {[@var{no_fill},@var{fillvalue}] = } netcdf_inqVarFill(@var{ncid},@var{varid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
732 Determines the fill-value settings of the NetCDF variable @var{varid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
733 If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
734 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
735 @seealso{netcdf_defVarFill}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
736 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
737
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
738 if (args.length() != 2) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
739 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
740 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
741 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
742
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
743 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
744 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
745 int no_fill;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
746 nc_type xtype;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
747 octave_value_list retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
748 octave_value data;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
749 check_err(nc_inq_vartype (ncid, varid, &xtype));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
750
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
751 switch (xtype)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
752 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
753 #define OV_NETCDF_INQ_VAR_FILL(netcdf_type,c_type) \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
754 case netcdf_type: \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
755 { \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
756 Array< c_type > fill_value = Array< c_type >(dim_vector(1,1)); \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
757 check_err(nc_inq_var_fill(ncid, varid, &no_fill, \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
758 fill_value.fortran_vec())); \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
759 data = octave_value(fill_value); \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
760 break; \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
761 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
762
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
763 OV_NETCDF_INQ_VAR_FILL(NC_BYTE,octave_int8)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
764 OV_NETCDF_INQ_VAR_FILL(NC_UBYTE,octave_uint8)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
765 OV_NETCDF_INQ_VAR_FILL(NC_SHORT,octave_int16)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
766 OV_NETCDF_INQ_VAR_FILL(NC_USHORT,octave_uint16)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
767 OV_NETCDF_INQ_VAR_FILL(NC_INT,octave_int32)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
768 OV_NETCDF_INQ_VAR_FILL(NC_UINT,octave_uint32)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
769 OV_NETCDF_INQ_VAR_FILL(NC_INT64,octave_int64)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
770 OV_NETCDF_INQ_VAR_FILL(NC_UINT64,octave_uint64)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
771
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
772 OV_NETCDF_INQ_VAR_FILL(NC_FLOAT,float)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
773 OV_NETCDF_INQ_VAR_FILL(NC_DOUBLE,double)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
774
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
775 OV_NETCDF_INQ_VAR_FILL(NC_CHAR,char)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
776 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
777
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
778 //cout << "xtype3 " << xtype << " " << NC_DOUBLE << std::endl;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
779 retval(0) = octave_value(no_fill);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
780 retval(1) = data;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
781 return retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
782 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
783
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
784
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
785
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
786
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
787 //nc_def_var_deflate(int ncid, int varid, int shuffle, int deflate,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
788 // int deflate_level);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
789 DEFUN_DLD(netcdf_defVarDeflate, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
790 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
791 @deftypefn {Loadable Function} {} netcdf_defVarDeflate (@var{ncid},@var{varid},@var{shuffle},@var{deflate},@var{deflate_level}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
792 Define the compression settings NetCDF variable @var{varid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
793 If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression).\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
794 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
795 @seealso{netcdf_inqVarDeflate}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
796 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
797
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
798 if (args.length() != 5) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
799 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
800 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
801 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
802
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
803 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
804 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
805 int shuffle = args(2).scalar_value(); // boolean
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
806 int deflate = args(3).scalar_value(); // boolean
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
807 int deflate_level = args(4).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
808
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
809 check_err(nc_def_var_deflate (ncid, varid, shuffle, deflate, deflate_level));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
810 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
811 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
812
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
813
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
814 //nc_inq_var_deflate(int ncid, int varid, int *shufflep,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
815 // int *deflatep, int *deflate_levelp);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
816 DEFUN_DLD(netcdf_inqVarDeflate, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
817 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
818 @deftypefn {Loadable Function} {[@var{shuffle},@var{deflate},@var{deflate_level}] = } netcdf_inqVarDeflate (@var{ncid},@var{varid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
819 Determines the compression settings NetCDF variable @var{varid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
820 If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression).\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
821 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
822 @seealso{netcdf_defVarDeflate}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
823 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
824
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
825 if (args.length() != 2) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
826 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
827 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
828 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
829
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
830 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
831 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
832 int shuffle, deflate, deflate_level;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
833 octave_value_list retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
834
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
835 if (! error_state) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
836 int format;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
837 check_err(nc_inq_format(ncid, &format));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
838
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
839 // nc_inq_var_deflate returns garbage for classic or 64bit files
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
840 if (format == NC_FORMAT_CLASSIC || format == NC_FORMAT_64BIT) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
841 shuffle = 0;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
842 deflate = 0;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
843 deflate_level = 0;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
844 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
845 else {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
846 check_err(nc_inq_var_deflate(ncid, varid,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
847 &shuffle,&deflate,&deflate_level));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
848 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
849
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
850 retval(0) = octave_value(shuffle);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
851 retval(1) = octave_value(deflate);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
852 retval(2) = octave_value(deflate_level);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
853 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
854
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
855 return retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
856 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
857
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
858 //int nc_def_var_chunking(int ncid, int varid, int storage, size_t *chunksizesp);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
859 //chunksizes can be ommited if storage is \"CONTIGUOUS\"
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
860 DEFUN_DLD(netcdf_defVarChunking, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
861 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
862 @deftypefn {Loadable Function} {} netcdf_defVarChunking (@var{ncid},@var{varid},@var{storage},@var{chunkSizes}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
863 Define the chunking settings of NetCDF variable @var{varid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
864 If @var{storage} is the string \"chunked\", the variable is stored by chunk of the size @var{chunkSizes}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
865 If @var{storage} is the string \"contiguous\", the variable is stored in a contiguous way.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
866 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
867 @seealso{netcdf_inqVarChunking}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
868 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
869
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
870 if (args.length() != 3 && args.length() != 4) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
871 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
872 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
873 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
874
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
875 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
876 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
877 std::string storagestr = args(2).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
878 int storage;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
879
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
880 if (! error_state) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
881 std::transform(storagestr.begin(), storagestr.end(),storagestr.begin(), ::toupper);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
882
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
883 if (storagestr == "CHUNKED") {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
884 storage = NC_CHUNKED;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
885 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
886 else if (storagestr == "CONTIGUOUS") {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
887 storage = NC_CONTIGUOUS;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
888 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
889 else {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
890 error("unknown storage %s",storagestr.c_str());
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
891 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
892 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
893
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
894 if (args.length() == 4) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
895 Array<double> tmp = args(3).vector_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
896
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
897 OCTAVE_LOCAL_BUFFER (size_t, chunksizes, tmp.numel());
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
898 for (int i = 0; i < tmp.numel(); i++)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
899 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
900 chunksizes[i] = tmp(tmp.numel()-i-1);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
901 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
902
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
903 check_err(nc_def_var_chunking(ncid, varid, storage, chunksizes));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
904 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
905 else {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
906 check_err(nc_def_var_chunking(ncid, varid, storage, NULL));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
907 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
908 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
909
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
910 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
911 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
912
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
913 //int nc_inq_var_chunking(int ncid, int varid, int *storagep, size_t *chunksizesp);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
914 DEFUN_DLD(netcdf_inqVarChunking, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
915 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
916 @deftypefn {Loadable Function} {[@var{storage},@var{chunkSizes}] = } netcdf_inqVarChunking (@var{ncid},@var{varid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
917 Determines the chunking settings of NetCDF variable @var{varid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
918 If @var{storage} is the string \"chunked\", the variable is stored by chunk of the size @var{chunkSizes}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
919 If @var{storage} is the string \"contiguous\", the variable is stored in a contiguous way.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
920 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
921 @seealso{netcdf_defVarChunking}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
922 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
923
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
924 if (args.length() != 2) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
925 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
926 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
927 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
928
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
929 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
930 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
931 int storage;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
932 int ndims;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
933 octave_value_list retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
934
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
935 check_err(nc_inq_varndims (ncid, varid, &ndims));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
936 OCTAVE_LOCAL_BUFFER (size_t, chunksizes, ndims);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
937
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
938 if (! error_state) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
939 check_err(nc_inq_var_chunking(ncid, varid, &storage, chunksizes));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
940
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
941 if (storage == NC_CHUNKED) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
942 retval(0) = octave_value("chunked");
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
943 Array<int> chunkSizes = Array<int>(dim_vector(1,ndims));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
944
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
945 for (int i = 0; i < ndims; i++)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
946 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
947 chunkSizes(ndims-i-1) = chunksizes[i];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
948 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
949 retval(1) = octave_value(chunkSizes);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
950 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
951 else {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
952 retval(0) = octave_value("contiguous");
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
953 retval(1) = octave_value(Array<double>());
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
954 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
955
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
956 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
957
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
958 return retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
959 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
960
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
961 // nc_def_var_fletcher32(int ncid, int varid, int checksum);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
962 DEFUN_DLD(netcdf_defVarFletcher32, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
963 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
964 @deftypefn {Loadable Function} {} netcdf_defVarFletcher32(@var{ncid},@var{varid},@var{checksum}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
965 Defines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If @var{checksum} is the string \"fletcher32\", then fletcher32 checksums will be turned on for this variable. If @var{checksum} is \"nochecksum\", then checksums will be disabled. \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
966 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
967 @seealso{netcdf_defVar,netcdf_inqVarFletcher32}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
968 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
969
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
970 if (args.length() != 3)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
971 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
972 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
973 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
974 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
975
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
976 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
977 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
978 int checksum = netcdf_get_constant(args(2)).int_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
979
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
980 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
981 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
982 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
983 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
984 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
985
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
986 check_err(nc_def_var_fletcher32(ncid, varid, checksum));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
987
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
988 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
989 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
990
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
991
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
992
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
993 DEFUN_DLD(netcdf_inqVarFletcher32, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
994 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
995 @deftypefn {Loadable Function} {@var{checksum} =} netcdf_inqVarFletcher32(@var{ncid},@var{varid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
996 Determines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If fletcher32 checksums is turned on for this variable, then @var{checksum} is the string \"fletcher32\". Otherwise it is the string \"nochecksum\". \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
997 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
998 @seealso{netcdf_defVar,netcdf_inqVarFletcher32}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
999 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1000
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1001 if (args.length() != 2)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1002 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1003 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1004 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1005 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1006
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1007 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1008 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1009 int checksum;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1010
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1011 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1012 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1013 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1014 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1015 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1016
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1017 check_err(nc_inq_var_fletcher32(ncid, varid, &checksum));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1018
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1019 if (checksum == NC_FLETCHER32)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1020 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1021 return octave_value("fletcher32");
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1022 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1023 else
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1024 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1025 return octave_value("nochecksum");
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1026 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1027 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1028
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1029
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1030
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1031 DEFUN_DLD(netcdf_endDef, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1032 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1033 @deftypefn {Loadable Function} {} netcdf_endDef (@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1034 Leaves define-mode of NetCDF file @var{ncid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1035 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1036 @seealso{netcdf_reDef}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1037 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1038 if (args.length() != 1)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1039 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1040 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1041 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1042 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1043
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1044 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1045 check_err(nc_enddef (ncid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1046
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1047 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1048 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1049
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1050 DEFUN_DLD(netcdf_reDef, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1051 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1052 @deftypefn {Loadable Function} {} netcdf_reDef (@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1053 Enter define-mode of NetCDF file @var{ncid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1054 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1055 @seealso{netcdf_endDef}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1056 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1057 if (args.length() != 1)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1058 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1059 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1060 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1061 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1062
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1063 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1064 check_err(nc_redef (ncid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1065
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1066 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1067 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1068
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1069 // http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-c/nc_005fput_005fvar_005f-type.html#nc_005fput_005fvar_005f-type
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1070
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1071 DEFUN_DLD(netcdf_putVar, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1072 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1073 @deftypefn {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{data}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1074 @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{data}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1075 @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{data}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1076 @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride},@var{data}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1077 Put data in a NetCDF variable.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1078 The data @var{data} is stored in the variable @var{varid} of the NetCDF file @var{ncid}. \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1079 @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1080 @var{count} is the number of elements of to be written along each dimension (default all elements)\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1081 and @var{stride} is the sampling interval.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1082 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1083 @seealso{netcdf_endDef}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1084 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1085 if (args.length() < 3 || args.length() > 6)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1086 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1087 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1088 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1089 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1090
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1091 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1092 int varid = args(1).scalar_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1093 octave_value data = args(args.length()-1);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1094 size_t start[NC_MAX_VAR_DIMS];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1095 size_t count[NC_MAX_VAR_DIMS];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1096 ptrdiff_t stride[NC_MAX_VAR_DIMS];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1097 nc_type xtype;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1098
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1099 check_err(nc_inq_vartype (ncid, varid, &xtype));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1100 //int sliced_numel = tmp.numel();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1101
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1102 start_count_stride(ncid, varid, args, args.length()-1, start, count, stride);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1103
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1104 // check if count matched size(data)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1105
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1106 switch (xtype)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1107 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1108 #define OV_NETCDF_PUT_VAR(netcdf_type,c_type,method) \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1109 case netcdf_type: \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1110 { \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1111 check_err(nc_put_vars (ncid, varid, start, count, stride, (c_type*)data.method().fortran_vec())); \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1112 break; \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1113 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1114
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1115 OV_NETCDF_PUT_VAR(NC_BYTE, signed char, int8_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1116 OV_NETCDF_PUT_VAR(NC_UBYTE, unsigned char, uint8_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1117 OV_NETCDF_PUT_VAR(NC_SHORT, short, int16_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1118 OV_NETCDF_PUT_VAR(NC_USHORT, unsigned short, uint16_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1119 OV_NETCDF_PUT_VAR(NC_INT, int, int32_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1120 OV_NETCDF_PUT_VAR(NC_UINT, unsigned int, uint32_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1121 OV_NETCDF_PUT_VAR(NC_INT64, long long, int64_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1122 OV_NETCDF_PUT_VAR(NC_UINT64, unsigned long long, uint64_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1123
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1124 OV_NETCDF_PUT_VAR(NC_FLOAT, float, float_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1125 OV_NETCDF_PUT_VAR(NC_DOUBLE,double,array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1126
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1127 OV_NETCDF_PUT_VAR(NC_CHAR, char, char_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1128 default:
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1129 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1130 error("unknown type %d" ,xtype);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1131 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1132 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1133 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1134 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1135
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1136
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1137
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1138 DEFUN_DLD(netcdf_getVar, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1139 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1140 @deftypefn {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1141 @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1142 @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start},@var{count}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1143 @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1144 Get the data from a NetCDF variable.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1145 The data @var{data} is loaded from the variable @var{varid} of the NetCDF file @var{ncid}. \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1146 @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1147 @var{count} is the number of elements of to be written along each dimension (default all elements)\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1148 and @var{stride} is the sampling interval.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1149 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1150 @seealso{netcdf_putVar}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1151 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1152 if (args.length() < 2 || args.length() > 5)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1153 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1154 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1155 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1156 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1157
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1158 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1159 int varid = args(1).scalar_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1160 std::list<Range> ranges;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1161 int ndims;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1162 size_t start[NC_MAX_VAR_DIMS];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1163 size_t count[NC_MAX_VAR_DIMS];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1164 ptrdiff_t stride[NC_MAX_VAR_DIMS];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1165
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1166 octave_value data;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1167 nc_type xtype;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1168
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1169 check_err(nc_inq_vartype (ncid, varid, &xtype));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1170 check_err(nc_inq_varndims (ncid, varid, &ndims));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1171 int sz = 1;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1172
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1173 dim_vector sliced_dim_vector;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1174
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1175 if (ndims < 2)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1176 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1177 sliced_dim_vector.resize(2);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1178 sliced_dim_vector(0) = 1;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1179 sliced_dim_vector(1) = 1;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1180 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1181 else
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1182 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1183 sliced_dim_vector.resize(ndims);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1184 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1185
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1186 start_count_stride(ncid, varid, args, args.length(), start, count, stride);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1187
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1188 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1189 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1190 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1191 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1192 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1193
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1194
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1195 // total size sz
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1196 for (int i=0; i<ndims; i++) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1197 sz = sz * count[i];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1198 sliced_dim_vector(i) = count[ndims-i-1];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1199 //sliced_dim_vector(i) = count[i];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1200 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1201
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1202
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1203 //cout << "start " << start[0] << endl;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1204 // need to take count and stride
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1205
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1206
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1207
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1208 //cout << "sz " << sz << endl;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1209 //cout << "sliced_dim_vector " << sliced_dim_vector(0) << " x " << sliced_dim_vector(1) << endl;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1210
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1211 switch (xtype)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1212 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1213 #define OV_NETCDF_GET_VAR_CASE(netcdf_type,c_type) \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1214 case netcdf_type: \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1215 { \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1216 Array < c_type > arr = Array < c_type >(sliced_dim_vector); \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1217 check_err(nc_get_vars(ncid, varid, start, count, stride, arr.fortran_vec())); \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1218 data = octave_value(arr); \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1219 break; \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1220 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1221
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1222 OV_NETCDF_GET_VAR_CASE(NC_BYTE,octave_int8)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1223 OV_NETCDF_GET_VAR_CASE(NC_UBYTE,octave_uint8)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1224 OV_NETCDF_GET_VAR_CASE(NC_SHORT,octave_int16)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1225 OV_NETCDF_GET_VAR_CASE(NC_USHORT,octave_uint16)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1226 OV_NETCDF_GET_VAR_CASE(NC_INT,octave_int32)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1227 OV_NETCDF_GET_VAR_CASE(NC_UINT,octave_uint32)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1228 OV_NETCDF_GET_VAR_CASE(NC_INT64,octave_int64)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1229 OV_NETCDF_GET_VAR_CASE(NC_UINT64,octave_uint64)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1230
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1231 OV_NETCDF_GET_VAR_CASE(NC_FLOAT,float)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1232 OV_NETCDF_GET_VAR_CASE(NC_DOUBLE,double)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1233
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1234 OV_NETCDF_GET_VAR_CASE(NC_CHAR, char)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1235
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1236 default:
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1237 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1238 error("unknown type %d" ,xtype);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1239 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1240
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1241 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1242
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1243 return data;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1244 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1245
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1246 DEFUN_DLD(netcdf_close, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1247 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1248 @deftypefn {Loadable Function} {} netcdf_close(@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1249 Close the NetCDF file with the id @var{ncid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1250 @end deftypefn\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1251 @seealso{netcdf_open}\n")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1252 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1253
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1254 if (args.length() != 1) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1255 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1256 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1257 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1258
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1259 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1260 check_err(nc_close(ncid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1261 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1262 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1263
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1264
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1265
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1266 // int nc_inq_attname(int ncid, int varid, int attnum, char *name);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1267
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1268 DEFUN_DLD(netcdf_inqAttName, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1269 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1270 @deftypefn {Loadable Function} {@var{name} =} netcdf_inqAttName (@var{ncid},@var{varid},@var{attnum}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1271 Get the name of a NetCDF attribute.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1272 This function returns the name of the attribute with the id @var{attnum} of the variable \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1273 @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1274 netcdf_getConstant(\"global\").\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1275 @seealso{netcdf_inqAttName}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1276 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1277 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1278 if (args.length() != 3) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1279 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1280 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1281 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1282
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1283 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1284 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1285 int attnum = args(2).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1286 char name[NC_MAX_NAME+1];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1287
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1288 check_err(nc_inq_attname(ncid, varid, attnum, name));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1289
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1290 return octave_value(std::string(name));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1291 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1292
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1293
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1294 DEFUN_DLD(netcdf_inqAttID, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1295 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1296 @deftypefn {Loadable Function} {@var{attnum} =} netcdf_inqAttID(@var{ncid},@var{varid},@var{attname}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1297 Return the attribute id @var{attnum} of the attribute named @var{attname} of the variable @var{varid} in the dataset @var{ncid}. \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1298 For global attributes @var{varid} can be \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1299 netcdf_getConstant(\"global\").\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1300 @seealso{netcdf_inqAttName}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1301 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1302 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1303 if (args.length() != 3)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1304 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1305 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1306 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1307 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1308 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1309 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1310 std::string attname = args(2).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1311 int attnum;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1312
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1313 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1314 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1315 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1316 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1317 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1318
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1319 check_err (nc_inq_attid (ncid, varid, attname.c_str(), &attnum));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1320
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1321 return octave_value(attnum);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1322 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1323
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1324
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1325 //int nc_inq_att (int ncid, int varid, const char *name,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1326 // nc_type *xtypep, size_t *lenp);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1327
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1328 DEFUN_DLD(netcdf_inqAtt, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1329 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1330 @deftypefn {Loadable Function} {[@var{xtype},@var{len}] = } netcdf_inqAtt(@var{ncid},@var{varid},@var{name}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1331 Get attribute type and length.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1332 @seealso{netcdf_inqAttName}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1333 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1334 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1335 if (args.length() != 3) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1336 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1337 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1338 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1339
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1340 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1341 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1342 std::string name = args(2).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1343 int xtype;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1344 size_t len;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1345 octave_value_list retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1346
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1347 if (error_state) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1348 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1349 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1350
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1351 check_err(nc_inq_att(ncid, varid, name.c_str(), &xtype, &len));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1352
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1353 retval(0) = octave_value(xtype);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1354 retval(1) = octave_value(len);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1355 return retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1356 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1357
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1358
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1359 DEFUN_DLD(netcdf_getAtt, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1360 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1361 @deftypefn {Loadable Function} {@var{data} =} netcdf_getAtt (@var{ncid},@var{varid},@var{name}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1362 Get the value of a NetCDF attribute.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1363 This function returns the value of the attribute called @var{name} of the variable \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1364 @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1365 netcdf_getConstant(\"global\").\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1366 @seealso{netcdf_putAtt}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1367 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1368 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1369 if (args.length() != 3) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1370 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1371 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1372 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1373
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1374 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1375 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1376 std::string attname = args(2).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1377 nc_type xtype;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1378 size_t len;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1379 octave_value data;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1380
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1381 check_err(nc_inq_att(ncid, varid, attname.c_str(), &xtype, &len));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1382
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1383 #define OV_NETCDF_GET_ATT_CASE(netcdf_type,c_type) \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1384 if (xtype == netcdf_type) \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1385 { \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1386 Array< c_type > arr = Array< c_type >(dim_vector(1,len)); \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1387 check_err(nc_get_att(ncid, varid, attname.c_str(), arr.fortran_vec())); \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1388 data = octave_value(arr); \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1389 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1390 OV_NETCDF_GET_ATT_CASE(NC_BYTE,octave_int8)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1391 OV_NETCDF_GET_ATT_CASE(NC_UBYTE,octave_uint8)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1392 OV_NETCDF_GET_ATT_CASE(NC_SHORT,octave_int16)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1393 OV_NETCDF_GET_ATT_CASE(NC_USHORT,octave_uint16)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1394 OV_NETCDF_GET_ATT_CASE(NC_INT,octave_int32)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1395 OV_NETCDF_GET_ATT_CASE(NC_UINT,octave_uint32)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1396 OV_NETCDF_GET_ATT_CASE(NC_INT64,octave_int64)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1397 OV_NETCDF_GET_ATT_CASE(NC_UINT64,octave_uint64)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1398
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1399 OV_NETCDF_GET_ATT_CASE(NC_FLOAT,float)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1400 OV_NETCDF_GET_ATT_CASE(NC_DOUBLE,double)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1401
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1402 OV_NETCDF_GET_ATT_CASE(NC_CHAR, char)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1403
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1404
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1405 return data;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1406 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1407
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1408
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1409 DEFUN_DLD(netcdf_putAtt, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1410 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1411 @deftypefn {Loadable Function} {} netcdf_putAtt (@var{ncid},@var{varid},@var{name},@var{data}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1412 Defines a NetCDF attribute.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1413 This function defines the attribute called @var{name} of the variable \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1414 @var{varid} in the NetCDF file @var{ncid}. The value of the attribute will be @var{data}. \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1415 For global attributes @var{varid} can be \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1416 netcdf_getConstant(\"global\").\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1417 @seealso{netcdf_getAtt}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1418 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1419 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1420 if (args.length() != 4) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1421 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1422 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1423 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1424
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1425 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1426 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1427 std::string attname = args(2).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1428 octave_value data = args(3);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1429
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1430 nc_type xtype;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1431 xtype = NC_BYTE;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1432
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1433 // get matching netcdf type
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1434
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1435 if (data.is_string())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1436 xtype = NC_CHAR;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1437 else if (data.is_int8_type())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1438 xtype = NC_BYTE;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1439 else if (data.is_uint8_type())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1440 xtype = NC_UBYTE;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1441 else if (data.is_int16_type())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1442 xtype = NC_SHORT;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1443 else if (data.is_uint16_type())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1444 xtype = NC_USHORT;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1445 else if (data.is_int32_type())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1446 xtype = NC_INT;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1447 else if (data.is_uint32_type())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1448 xtype = NC_UINT;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1449 else if (data.is_int64_type())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1450 xtype = NC_INT64;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1451 else if (data.is_uint64_type())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1452 xtype = NC_UINT64;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1453 else if (data.is_single_type())
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1454 xtype = NC_FLOAT;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1455 else
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1456 xtype = NC_DOUBLE;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1457
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1458 //cout << "xtype " << xtype << endl;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1459 size_t len = data.numel();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1460
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1461 switch (xtype)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1462 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1463 #define OV_NETCDF_PUT_ATT(netcdf_type,c_type,method) \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1464 case netcdf_type: \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1465 { \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1466 check_err(nc_put_att (ncid, varid, attname.c_str(), xtype, len, data.method().fortran_vec())); \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1467 break; \
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1468 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1469
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1470 OV_NETCDF_PUT_ATT(NC_BYTE, signed char, int8_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1471 OV_NETCDF_PUT_ATT(NC_UBYTE, unsigned char, uint8_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1472 OV_NETCDF_PUT_ATT(NC_SHORT, short, int16_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1473 OV_NETCDF_PUT_ATT(NC_USHORT, unsigned short, uint16_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1474 OV_NETCDF_PUT_ATT(NC_INT, int, int32_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1475 OV_NETCDF_PUT_ATT(NC_UINT, unsigned int, uint32_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1476 OV_NETCDF_PUT_ATT(NC_INT64, long long, int64_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1477 OV_NETCDF_PUT_ATT(NC_UINT64, unsigned long long, uint64_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1478
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1479 OV_NETCDF_PUT_ATT(NC_FLOAT, float, float_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1480 OV_NETCDF_PUT_ATT(NC_DOUBLE,double,array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1481
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1482 OV_NETCDF_PUT_ATT(NC_CHAR, char, char_array_value)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1483 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1484
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1485 /* check_err(nc_put_att (int ncid, int varid, const char *name, nc_type xtype,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1486 size_t len, const void *op));*/
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1487
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1488 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1489
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1490 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1491
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1492
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1493 DEFUN_DLD(netcdf_copyAtt, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1494 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1495 @deftypefn {Loadable Function} {} netcdf_copyAtt (@var{ncid},@var{varid},@var{name},@var{ncid_out},@var{varid_out}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1496 Copies the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid} \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1497 to the variable @var{varid_out} in the data set @var{ncid_out}. \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1498 To copy a global attribute use netcdf_getConstant(\"global\") for @var{varid} or @var{varid_out}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1499 @seealso{netcdf_getAtt,netcdf_getConstant}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1500 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1501 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1502
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1503 if (args.length() != 5)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1504 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1505 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1506 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1507 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1508
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1509 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1510 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1511 std::string name = args(2).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1512 int ncid_out = args(3).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1513 int varid_out = args(4).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1514
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1515 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1516 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1517 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1518 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1519 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1520
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1521 check_err (nc_copy_att (ncid, varid, name.c_str(),
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1522 ncid_out, varid_out));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1523
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1524 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1525 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1526
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1527
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1528 DEFUN_DLD(netcdf_renameAtt, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1529 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1530 @deftypefn {Loadable Function} {} netcdf_renameAtt(@var{ncid},@var{varid},@var{old_name},@var{new_name}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1531 Renames the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid}. @var{new_name} is the new name of the attribute.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1532 To rename a global attribute use netcdf_getConstant(\"global\") for @var{varid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1533 @seealso{netcdf_copyAtt,netcdf_getConstant}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1534 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1535 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1536
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1537 if (args.length() != 4)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1538 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1539 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1540 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1541 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1542
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1543 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1544 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1545 std::string old_name = args(2).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1546 std::string new_name = args(3).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1547
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1548 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1549 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1550 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1551 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1552 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1553
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1554 check_err(nc_rename_att (ncid, varid, old_name.c_str(), new_name.c_str()));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1555
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1556 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1557 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1558
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1559
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1560 DEFUN_DLD(netcdf_delAtt, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1561 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1562 @deftypefn {Loadable Function} {} netcdf_delAtt(@var{ncid},@var{varid},@var{name}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1563 Deletes the attribute named @var{name} of the variable @var{varid} in the data set @var{ncid}. \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1564 To delete a global attribute use netcdf_getConstant(\"global\") for @var{varid}.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1565 @seealso{netcdf_defAtt,netcdf_getConstant}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1566 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1567 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1568
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1569 if (args.length() != 3)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1570 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1571 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1572 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1573 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1574
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1575 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1576 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1577 std::string name = args(2).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1578
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1579 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1580 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1581 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1582 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1583 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1584
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1585 check_err(nc_del_att (ncid, varid, name.c_str()));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1586
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1587 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1588 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1589
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1590
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1591 DEFUN_DLD(netcdf_inqVarID, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1592 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1593 @deftypefn {Loadable Function} {@var{varid} = } netcdf_inqVarID (@var{ncid},@var{name}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1594 Return the id of a variable based on its name.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1595 @seealso{netcdf_defVar,netcdf_inqVarIDs}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1596 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1597 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1598
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1599 if (args.length() != 2) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1600 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1601 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1602 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1603
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1604 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1605 std::string varname = args(1).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1606 int varid;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1607
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1608 check_err(nc_inq_varid(ncid,varname.c_str(), &varid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1609
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1610 return octave_value(varid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1611 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1612
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1613 DEFUN_DLD(netcdf_inqVarIDs, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1614 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1615 @deftypefn {Loadable Function} {@var{varids} = } netcdf_inqVarID (@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1616 Return all variable ids.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1617 This functions returns all variable ids in a NetCDF file or NetCDF group.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1618 @seealso{netcdf_inqVarID}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1619 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1620 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1621
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1622 if (args.length() != 1) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1623 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1624 return octave_value ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1625 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1626
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1627 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1628 int nvars;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1629
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1630 check_err(nc_inq_varids(ncid, &nvars, NULL));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1631 Array<int> varids = Array<int>(dim_vector(1,nvars));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1632 check_err(nc_inq_varids(ncid, &nvars, varids.fortran_vec()));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1633
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1634 return octave_value(varids);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1635 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1636
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1637 DEFUN_DLD(netcdf_inqVar, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1638 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1639 @deftypefn {Loadable Function} {[@var{name},@var{nctype},@var{dimids},@var{nattr}] = } netcdf_inqVarID (@var{ncid},@var{varid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1640 Inquires information about a NetCDF variable.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1641 This functions returns the @var{name}, the NetCDF type @var{nctype}, an array of dimension ids \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1642 @var{dimids} and the number of attributes @var{nattr} of the NetCDF variable. @var{nctype} in an \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1643 integer corresponding NetCDF constants.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1644 @seealso{netcdf_inqVarID,netcdf_getConstant}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1645 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1646 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1647
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1648 if (args.length() != 2)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1649 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1650 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1651 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1652 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1653
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1654 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1655 int varid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1656 char name[NC_MAX_NAME+1];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1657 int ndims, dimids[NC_MAX_VAR_DIMS], natts;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1658 nc_type xtype;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1659 octave_value_list retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1660
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1661 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1662 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1663 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1664 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1665 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1666
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1667 check_err(nc_inq_varndims(ncid, varid, &ndims));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1668
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1669 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1670 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1671 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1672 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1673
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1674 check_err(nc_inq_var(ncid, varid, name, &xtype,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1675 &ndims, dimids, &natts));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1676
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1677 retval(0) = octave_value(std::string(name));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1678 retval(1) = octave_value(xtype);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1679
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1680 // copy output arguments
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1681 Array<double> dimids_ = Array<double>(dim_vector(1,ndims));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1682 for (int i = 0; i < ndims; i++)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1683 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1684 dimids_(i) = dimids[ndims-i-1];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1685 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1686
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1687 retval(2) = octave_value(dimids_);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1688 retval(3) = octave_value(natts);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1689
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1690 return retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1691 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1692
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1693
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1694
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1695 DEFUN_DLD(netcdf_inqDim, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1696 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1697 @deftypefn {Loadable Function} {[@var{name},@var{length}] =} netcdf_inqDim(@var{ncid},@var{dimid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1698 Returns the name and length of a NetCDF dimension.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1699 @seealso{netcdf_inqDimID}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1700 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1701 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1702
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1703 if (args.length() != 2) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1704 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1705 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1706 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1707
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1708 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1709 int dimid = args(1).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1710 octave_value_list retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1711
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1712 if (! error_state) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1713 char name[NC_MAX_NAME+1];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1714 size_t length;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1715 check_err(nc_inq_dim(ncid, dimid, name, &length));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1716
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1717 retval(0) = octave_value(std::string(name));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1718 retval(1) = octave_value(length);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1719 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1720
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1721 return retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1722 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1723
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1724
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1725 DEFUN_DLD(netcdf_inqDimID, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1726 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1727 @deftypefn {Loadable Function} {@var{dimid} =} netcdf_inqDimID(@var{ncid},@var{dimname}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1728 Return the id of a NetCDF dimension.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1729 @seealso{netcdf_inqDim}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1730 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1731 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1732
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1733 if (args.length() != 2) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1734 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1735 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1736 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1737
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1738 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1739 std::string dimname = args(1).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1740 int id;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1741 octave_value_list retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1742
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1743 if (! error_state) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1744 check_err(nc_inq_dimid(ncid, dimname.c_str(), &id));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1745
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1746 retval(0) = octave_value(id);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1747 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1748
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1749 return retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1750 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1751
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1752 // int nc_inq_dimids(int ncid, int *ndims, int *dimids, int include_parents);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1753 DEFUN_DLD(netcdf_inqDimIDs, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1754 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1755 @deftypefn {Loadable Function} {@var{dimids} =} netcdf_inqDimID(@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1756 @deftypefnx {Loadable Function} {@var{dimids} =} netcdf_inqDimID(@var{ncid},@var{include_parents}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1757 Return the dimension ids defined in a NetCDF file.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1758 If @var{include_parents} is 1, the dimension ids of the parent group are also returned.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1759 Per default this is not the case (@var{include_parents} is 0).\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1760 @seealso{netcdf_inqDim}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1761 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1762 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1763 if (args.length() != 1 && args.length() != 2) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1764 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1765 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1766 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1767
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1768 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1769 int include_parents = 0;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1770 if (args.length() == 2) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1771 include_parents = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1772 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1773
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1774 int ndims;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1775 check_err(nc_inq_ndims(ncid, &ndims));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1776 Array<int> dimids = Array<int>(dim_vector(1,ndims));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1777 check_err(nc_inq_dimids(ncid, &ndims, dimids.fortran_vec(),include_parents));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1778
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1779 return octave_value(dimids);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1780 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1781
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1782
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1783
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1784 // groups
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1785
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1786 //int nc_def_grp(int parent_ncid, const char *name, int *new_ncid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1787
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1788 DEFUN_DLD(netcdf_defGrp, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1789 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1790 @deftypefn {Loadable Function} {@var{new_ncid} =} netcdf_defGrp(@var{ncid},@var{name}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1791 Define a group in a NetCDF file.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1792 @seealso{netcdf_inqGrps}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1793 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1794 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1795
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1796 if (args.length() != 2) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1797 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1798 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1799 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1800
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1801 int parent_ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1802 std::string name = args(1).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1803 int new_ncid;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1804
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1805 check_err(nc_def_grp(parent_ncid, name.c_str(), &new_ncid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1806 return octave_value(new_ncid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1807 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1808
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1809
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1810 // int nc_inq_grps(int ncid, int *numgrps, int *ncids);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1811 DEFUN_DLD(netcdf_inqGrps, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1812 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1813 @deftypefn {Loadable Function} {@var{ncids} =} netcdf_inqGrps(@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1814 Return all groups ids in a NetCDF file.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1815 @seealso{netcdf_inqGrps}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1816 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1817 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1818 if (args.length() != 1) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1819 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1820 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1821 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1822
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1823 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1824 int numgrps;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1825
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1826 check_err(nc_inq_grps(ncid, &numgrps, NULL));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1827 Array<int> ncids = Array<int>(dim_vector(1,numgrps));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1828 check_err(nc_inq_grps(ncid, NULL, ncids.fortran_vec()));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1829
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1830 return octave_value(ncids);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1831 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1832
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1833 //int nc_inq_grpname(int ncid, char *name);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1834 DEFUN_DLD(netcdf_inqGrpName, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1835 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1836 @deftypefn {Loadable Function} {@var{name} =} netcdf_inqGrpName(@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1837 Return group name in a NetCDF file.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1838 @seealso{netcdf_inqGrps}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1839 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1840 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1841 if (args.length() != 1) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1842 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1843 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1844 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1845
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1846 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1847 char name[NC_MAX_NAME+1];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1848
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1849 check_err(nc_inq_grpname(ncid, name));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1850 return octave_value(std::string(name));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1851 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1852
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1853 //int nc_inq_grpname_full(int ncid, size_t *lenp, char *full_name);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1854 DEFUN_DLD(netcdf_inqGrpNameFull, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1855 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1856 @deftypefn {Loadable Function} {@var{name} =} netcdf_inqGrpNameFull(@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1857 Return full name of group in NetCDF file.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1858 @seealso{netcdf_inqGrpName}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1859 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1860 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1861 if (args.length() != 1) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1862 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1863 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1864 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1865
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1866 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1867 size_t len;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1868 check_err(nc_inq_grpname_len(ncid,&len));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1869 char* name = new char[len+1];
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1870 octave_value retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1871
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1872 check_err(nc_inq_grpname_full(ncid, &len, name));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1873 retval = octave_value(std::string(name));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1874 delete name;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1875 return retval;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1876 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1877
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1878 // int nc_inq_grp_parent(int ncid, int *parent_ncid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1879 DEFUN_DLD(netcdf_inqGrpParent, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1880 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1881 @deftypefn {Loadable Function} {@var{parent_ncid} =} netcdf_inqGrpParent(@var{ncid}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1882 Return id of the parent group\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1883 @seealso{netcdf_inqGrpName}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1884 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1885 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1886 if (args.length() != 1) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1887 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1888 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1889 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1890
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1891 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1892 int parent_ncid;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1893
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1894 check_err(nc_inq_grp_parent(ncid, &parent_ncid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1895 return octave_value(parent_ncid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1896 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1897
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1898 // int nc_inq_grp_full_ncid(int ncid, char *full_name, int *grp_ncid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1899 DEFUN_DLD(netcdf_inqGrpFullNcid, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1900 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1901 @deftypefn {Loadable Function} {@var{grp_ncid} =} netcdf_inqGrpFullNcid(@var{ncid},@var{name}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1902 Return the group id based on the full group name.\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1903 @seealso{netcdf_inqGrpName}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1904 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1905 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1906 if (args.length() != 2) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1907 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1908 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1909 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1910
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1911 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1912 std::string name = args(1).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1913 int grp_ncid;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1914
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1915 int format;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1916 check_err(nc_inq_format(ncid, &format));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1917
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1918 if (error_state)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1919 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1920 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1921 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1922
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1923 if (format == NC_FORMAT_CLASSIC || format == NC_FORMAT_64BIT)
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1924 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1925 if (name == "/")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1926 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1927 return octave_value(ncid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1928 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1929 else
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1930 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1931 error("groups are not supported in this format");
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1932 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1933 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1934 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1935
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1936 // nc_inq_grp_full_ncid makes a segmentation fault if
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1937 // file is in non-HDF5 format
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1938 check_err(nc_inq_grp_full_ncid(ncid, name.c_str(),&grp_ncid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1939 return octave_value(grp_ncid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1940 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1941
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1942
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1943
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1944 // int nc_inq_ncid(int ncid, const char *name, int *grp_ncid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1945 DEFUN_DLD(netcdf_inqNcid, args,,
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1946 "-*- texinfo -*-\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1947 @deftypefn {Loadable Function} {@var{grp_ncid} =} netcdf_inqNcid(@var{ncid},@var{name}) \n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1948 Return group id based on its name\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1949 @seealso{netcdf_inqGrpFullNcid}\n\
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1950 @end deftypefn")
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1951 {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1952 if (args.length() != 2) {
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1953 print_usage ();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1954 return octave_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1955 }
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1956
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1957 int ncid = args(0).scalar_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1958 std::string name = args(1).string_value();
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1959 int grp_ncid;
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1960
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1961 check_err(nc_inq_ncid(ncid, name.c_str(), &grp_ncid));
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1962 return octave_value(grp_ncid);
2dcf60b06fb2 fix texinfo documentation (3)
abarth93
parents:
diff changeset
1963 }