changeset 11829:10d47c577e4c octave-forge

add netcdf_inqAtt
author abarth93
date Tue, 18 Jun 2013 08:16:59 +0000
parents 2555b363673c
children 1a5fe04065eb
files main/netcdf/src/netcdf_package.cc main/netcdf/src/test_netcdf_package.m
diffstat 2 files changed, 37 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/main/netcdf/src/netcdf_package.cc	Mon Jun 17 22:27:25 2013 +0000
+++ b/main/netcdf/src/netcdf_package.cc	Tue Jun 18 08:16:59 2013 +0000
@@ -874,6 +874,39 @@
   return octave_value(std::string(name));  
 }
 
+//int nc_inq_att    (int ncid, int varid, const char *name,
+//                        nc_type *xtypep, size_t *lenp);
+
+DEFUN_DLD(netcdf_inqAtt, args,, 
+"-*- texinfo -*-\n\
+@deftypefn {Loadable Function} {[@var{xtype},@var{len}] = } netcdf_inqAtt(@var{ncid},@var{varid},@var{name}) \n\
+Get attribute type and length.\n\
+@end deftypefn\n\
+@seealso{netcdf_inqAttName}\n")
+{
+  if (args.length() != 3) {
+    print_usage ();
+    return octave_value();
+  }
+
+  int ncid = args(0).scalar_value();
+  int varid = args(1).scalar_value();
+  std::string name = args(2).string_value();
+  int xtype;
+  size_t len;
+  octave_value_list retval;
+  
+  if (error_state) {
+    return octave_value();    
+  }
+
+  check_err(nc_inq_att(ncid, varid, name.c_str(), &xtype, &len));
+  
+  retval(0) = octave_value(xtype);
+  retval(1) = octave_value(len);
+  return retval;
+}
+
 
 DEFUN_DLD(netcdf_getAtt, args,, 
 "")
--- a/main/netcdf/src/test_netcdf_package.m	Mon Jun 17 22:27:25 2013 +0000
+++ b/main/netcdf/src/test_netcdf_package.m	Tue Jun 18 08:16:59 2013 +0000
@@ -63,6 +63,10 @@
 netcdf.putAtt(ncid,varidd,'_FillValue',double(123123.123));
 netcdf.putAtt(ncid,varidd,'name','this is a name');
 
+[xtype,len] = netcdf.inqAtt(ncid,varidd,'name');
+assert(xtype == netcdf.getConstant('NC_CHAR'))
+assert(len == length('this is a name'))
+
 assert(isequal(netcdf.getAtt(ncid,varidd,'add_offset'),single(123123.123)));
 
 netcdf.endDef(ncid)