diff libinterp/interpfcn/load-path.cc @ 16690:1c45e22fc444 classdef

Implement meta.package.getAllPackages() method. * libinterp/interpfcn/load-path.h (load_path::get_all_package_names): New static method. (load_path::do_get_all_package_names): New method. * libinterp/interpfcn/load-path.cc (load_path::do_get_all_package_names): New method. * libinterp/octave-value/ov-classdef/cc (package_getAllPackages): New static function. (install_classdef): Install it as "meta.package,getAllPackages" method.
author Michael Goffioul <michael.goffioul@gmail.com>
date Mon, 20 May 2013 14:37:25 -0400
parents edbb123cbe3a
children
line wrap: on
line diff
--- a/libinterp/interpfcn/load-path.cc	Mon May 20 12:44:03 2013 -0400
+++ b/libinterp/interpfcn/load-path.cc	Mon May 20 14:37:25 2013 -0400
@@ -2103,6 +2103,21 @@
   return retval;
 }
 
+std::list<std::string>
+load_path::do_get_all_package_names (bool only_top_level) const
+{
+  std::list<std::string> retval;
+
+  for (const_loader_map_iterator l = loader_map.begin ();
+       l != loader_map.end (); ++l)
+    {
+      if (! only_top_level || l->first.find ('.') == std::string::npos)
+        retval.push_back (l->first);
+    }
+
+  return retval;
+}
+
 static void
 execute_pkg_add_or_del (const std::string& dir,
                         const std::string& script_file)