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);