Mercurial > forge
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)