Mercurial > forge
changeset 11814:b6f0fc57a9c8 octave-forge
low-level group support (3)
author | abarth93 |
---|---|
date | Mon, 17 Jun 2013 14:13:30 +0000 |
parents | 2747c3cad27d |
children | 0de57e002c05 |
files | main/netcdf/src/netcdf_package.cc main/netcdf/src/test_netcdf_package.m |
diffstat | 2 files changed, 42 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/main/netcdf/src/netcdf_package.cc Mon Jun 17 14:00:33 2013 +0000 +++ b/main/netcdf/src/netcdf_package.cc Mon Jun 17 14:13:30 2013 +0000 @@ -1211,6 +1211,41 @@ } //int nc_inq_grpname_full(int ncid, size_t *lenp, char *full_name); +DEFUN_DLD(netcdf_inqGrpNameFull, args,, +"") +{ + if (args.length() != 1) { + print_usage (); + return octave_value(); + } + + int ncid = args(0).scalar_value(); + size_t len; + check_err(nc_inq_grpname_len(ncid,&len)); + char* name = new char[len+1]; + octave_value retval; + + check_err(nc_inq_grpname_full(ncid, &len, name)); + retval = octave_value(std::string(name)); + delete name; + return retval; +} + +// int nc_inq_grp_parent(int ncid, int *parent_ncid); +DEFUN_DLD(netcdf_inqGrpParent, args,, +"") +{ + if (args.length() != 1) { + print_usage (); + return octave_value(); + } + + int ncid = args(0).scalar_value(); + int parent_ncid; + + check_err(nc_inq_grp_parent(ncid, &parent_ncid)); + return octave_value(parent_ncid); +} // int nc_inq_ncid(int ncid, const char *name, int *grp_ncid); @@ -1225,7 +1260,7 @@ int ncid = args(0).scalar_value(); std::string name = args(1).string_value(); int grp_ncid; - + check_err(nc_inq_ncid(ncid, name.c_str(), &grp_ncid)); return octave_value(grp_ncid); }
--- a/main/netcdf/src/test_netcdf_package.m Mon Jun 17 14:00:33 2013 +0000 +++ b/main/netcdf/src/test_netcdf_package.m Mon Jun 17 14:13:30 2013 +0000 @@ -286,6 +286,12 @@ name = netcdf.inqGrpName(id3); assert(strcmp(name,'subgroup')) +name = netcdf.inqGrpNameFull(id3); +assert(strcmp(name,'/group1/subgroup')) + +parentid = netcdf.inqGrpParent(id3); +assert(id1 == parentid); + netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname);