24 #if ! defined (octave_load_path_h)
25 #define octave_load_path_h 1
27 #include "octave-config.h"
45 : loader_map (), default_loader (), dir_info_list (), init_dirs () { }
56 instance->do_initialize (set_initial_path);
62 instance->do_clear ();
68 instance->do_set (p, warn);
74 instance->do_append (dir, warn);
80 instance->do_prepend (dir, warn);
85 return instance_ok () ? instance->do_remove (dir) :
false;
91 instance->do_update ();
96 return instance_ok () ? instance->do_contains_canonical (dir_name) :
false;
104 return instance_ok ()
105 ? instance->get_loader (pack_name).find_method (class_name, meth,
115 return find_method (class_name, meth, dir_name, pack_name);
121 return instance_ok ()
122 ? instance->get_loader(pack_name).methods (class_name)
123 : std::list<std::string> ();
128 return instance_ok ()
129 ? instance->do_overloads (meth) : std::list<std::string> ();
134 return instance_ok ()
135 ? instance->do_find_package (package_name) :
false;
138 static std::list<std::string>
141 return instance_ok ()
142 ? instance->do_get_all_package_names (only_top_level)
143 : std::list<std::string> ();
149 return instance_ok ()
150 ? instance->get_loader (pack_name).find_fcn (fcn, dir_name)
158 return find_fcn (fcn, dir_name, pack_name);
165 return instance_ok ()
166 ? instance->get_loader (pack_name).find_private_fcn (dir, fcn)
175 return instance_ok ()
176 ? instance->get_loader (pack_name).find_fcn (fcn, dir_name, M_FILE)
185 return instance_ok ()
186 ? instance->get_loader (pack_name).find_fcn (fcn, dir_name, M_FILE)
195 return instance_ok ()
196 ? instance->get_loader (pack_name).find_fcn (fcn, dir_name, M_FILE)
202 return instance_ok ()
203 ? instance->do_find_file (file) :
"";
208 return instance_ok ()
209 ? instance->do_find_dir (dir) :
"";
214 return instance_ok ()
220 return instance_ok () ?
221 instance->do_find_first_of (files) :
"";
226 return instance_ok () ?
232 return instance_ok () ? instance->do_dirs () :
string_vector ();
237 return instance_ok ()
238 ? instance->do_dir_list () : std::list<std::string> ();
243 return instance_ok ()
249 return instance_ok () ? instance->do_fcn_names () :
string_vector ();
254 return instance_ok () ? instance->do_path () :
"";
260 instance->do_display (os);
269 static void execute_pkg_add (
const std::string& dir);
270 static void execute_pkg_del (
const std::string& dir);
274 if (command_line_path.empty ())
275 command_line_path = p;
282 return instance_ok () ? instance->do_get_command_line_path ()
288 return instance_ok () ? instance->do_system_path () :
"";
293 static const int M_FILE = 1;
294 static const int OCT_FILE = 2;
295 static const int MEX_FILE = 4;
309 class_info (
void) : method_file_map (), private_file_map () { }
312 : method_file_map (ci.method_file_map),
313 private_file_map (ci.private_file_map) { }
347 : dir_name (), abs_dir_name (), is_relative (
false),
348 dir_mtime (), dir_time_last_checked (),
349 all_files (), fcn_files (), private_file_map (), method_file_map (),
354 : dir_name (d), abs_dir_name (), is_relative (
false),
355 dir_mtime (), dir_time_last_checked (),
356 all_files (), fcn_files (), private_file_map (), method_file_map (),
363 : dir_name (di.dir_name), abs_dir_name (di.abs_dir_name),
364 is_relative (di.is_relative),
365 dir_mtime (di.dir_mtime),
366 dir_time_last_checked (di.dir_time_last_checked),
367 all_files (di.all_files), fcn_files (di.fcn_files),
368 private_file_map (di.private_file_map),
369 method_file_map (di.method_file_map),
370 package_dir_map (di.package_dir_map) { }
432 : dir_name (fi.dir_name), types (fi.types) { }
486 typedef std::map<std::string, dir_info::fcn_file_map_type>
502 : prefix (pfx), dir_list (), fcn_map (), private_fcn_map (),
506 : prefix (l.prefix), dir_list (l.dir_list),
507 private_fcn_map (l.private_fcn_map), method_map (l.method_map) { }
532 add_to_fcn_map (di, at_end, updating);
534 add_to_private_fcn_map (di);
536 add_to_method_map (di, at_end);
539 void move (
const dir_info& di,
bool at_end);
549 private_fcn_map.clear ();
554 void display (std::ostream& out)
const;
558 int type = M_FILE | OCT_FILE | MEX_FILE)
const;
562 int type = M_FILE | OCT_FILE | MEX_FILE)
const;
567 int type = M_FILE | OCT_FILE | MEX_FILE)
const;
569 std::list<std::string> methods (
const std::string& class_name)
const;
571 void overloads (
const std::string& meth, std::list<std::string>& l)
const;
576 void add_to_fcn_map (
const dir_info& di,
bool at_end,
bool updating);
578 void add_to_private_fcn_map (
const dir_info& di);
580 void add_to_method_map (
const dir_info& di,
bool at_end);
585 void move_method_map (
const std::string& dir,
bool at_end);
590 void remove_private_fcn_map (
const std::string& dir);
634 static bool instance_ok (
void);
636 const_dir_info_list_iterator find_dir_info (
const std::string& dir)
const;
637 dir_info_list_iterator find_dir_info (
const std::string& dir);
641 bool do_contains_canonical (
const std::string& dir)
const;
643 void do_move (dir_info_list_iterator
i,
bool at_end);
645 void move (
const dir_info& di,
bool at_end,
651 void do_initialize (
bool set_initial_path);
653 void do_clear (
void);
655 void do_set (
const std::string&
p,
bool warn,
bool is_init =
false);
657 void do_append (
const std::string& dir,
bool warn);
659 void do_prepend (
const std::string& dir,
bool warn);
661 void do_add (
const std::string& dir,
bool at_end,
bool warn);
665 void do_update (
void)
const;
675 if (! name.empty () && is_package (name))
677 loader_map_iterator l = loader_map.find (name);
679 if (l == loader_map.end ())
680 l = loader_map.insert (loader_map.end (),
681 loader_map_type::value_type (name,
loader (name)));
686 return default_loader;
689 std::list<std::string> do_overloads (
const std::string& meth)
const;
693 return (loader_map.find (package_name) != loader_map.end ());
696 std::list<std::string> do_get_all_package_names (
bool only_top_level)
const;
710 std::list<std::string> do_dir_list (
void)
const;
718 friend void print_types (std::ostream& os,
int types);
723 print_fcn_list (std::ostream& os,
const dir_info::fcn_file_map_type& lst);
725 void do_display (std::ostream& os)
const;
730 {
return command_line_path; }
732 void add (
const dir_info& di,
bool at_end,
734 bool updating =
false)
const;
fcn_map_type::iterator fcn_map_iterator
std::string do_get_command_line_path(void) const
static std::string system_path(void)
std::set< std::string > init_dirs
method_file_map_type method_file_map
For example cd octave end example noindent changes the current working directory to file
static string_vector find_matching_dirs(const std::string &dir)
fcn_file_map_type private_file_map
file_info(const std::string &d, int t)
method_map_type::iterator method_map_iterator
static void display(std::ostream &os)
static hook_fcn_ptr get_add_hook(void)
static std::string find_fcn(const std::string &fcn, const std::string &pack_name="")
std::map< std::string, fcn_map_type > method_map_type
static void prepend(const std::string &dir, bool warn=false)
std::map< std::string, int > fcn_file_map_type
static std::string command_line_path
dir_info_list_type::iterator dir_info_list_iterator
static std::list< std::string > methods(const std::string &class_name, const std::string &pack_name="")
static void append(const std::string &dir, bool warn=false)
std::map< std::string, loader > loader_map_type
F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_REAL const F77_REAL F77_REAL &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_DBLE F77_DBLE &F77_RET_T const F77_REAL F77_REAL &F77_RET_T F77_REAL F77_REAL &F77_RET_T F77_DBLE F77_DBLE &F77_RET_T const F77_DBLE const F77_DBLE * f
std::map< std::string, dir_info > package_dir_map_type
octave::sys::time dir_time_last_checked
static hook_fcn_ptr get_remove_hook(void)
loader & get_loader(const std::string &name) const
std::string genpath(const std::string &dir, const string_vector &skip="private")
static std::string find_file(const std::string &file)
static std::string find_first_of(const string_vector &files)
file_info_list_type::const_iterator const_file_info_list_iterator
fcn_file_map_type private_file_map
octave::sys::time dir_mtime
void add(const dir_info &di, bool at_end, bool updating)
dir_info_list_type dir_info_list
std::string do_system_path(void) const
private_fcn_map_type::const_iterator const_private_fcn_map_iterator
static abs_dir_cache_type abs_dir_cache
private_fcn_map_type::iterator private_fcn_map_iterator
package_dir_map_type::iterator package_dir_map_iterator
static void set_command_line_path(const std::string &p)
OCTAVE_EXPORT octave_value_list return the number of command line arguments passed to Octave If called with the optional argument the function t
static std::string find_method(const std::string &class_name, const std::string &meth, std::string &dir_name, const std::string &pack_name="")
method_map_type::const_iterator const_method_map_iterator
static string_vector files(const std::string &dir, bool omit_exts=false)
void print_fcn_list(std::ostream &os, const load_path::dir_info::fcn_file_map_type &lst)
static std::string find_private_fcn(const std::string &dir, const std::string &fcn, const std::string &pack_name="")
F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_REAL const F77_REAL F77_REAL &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_DBLE F77_DBLE &F77_RET_T const F77_REAL F77_REAL &F77_RET_T F77_REAL F77_REAL &F77_RET_T F77_DBLE F77_DBLE &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE * d
static std::string find_fcn(const std::string &fcn, std::string &dir_name, const std::string &pack_name="")
method_file_map_type::iterator method_file_map_iterator
static hook_fcn_ptr remove_hook
std::list< file_info > file_info_list_type
static std::string find_mex_file(const std::string &fcn, const std::string &pack_name="")
static void cleanup_instance(void)
static string_vector fcn_names(void)
method_map_type method_map
std::map< std::string, file_info_list_type > fcn_map_type
std::list< std::string > dir_list
static hook_fcn_ptr add_hook
string_vector get_file_list(const load_path::dir_info::fcn_file_map_type &lst)
private_fcn_map_type private_fcn_map
fcn_file_map_type::const_iterator const_fcn_file_map_iterator
static std::string sys_path
std::map< std::string, dir_info > abs_dir_cache_type
static std::string find_oct_file(const std::string &fcn, const std::string &pack_name="")
static void initialize(bool set_initial_path=false)
class_info(const class_info &ci)
dir_info_list_type::const_iterator const_dir_info_list_iterator
std::list< dir_info > dir_info_list_type
static bool contains_canonical(const std::string &dir_name)
file_info_list_type::iterator file_info_list_iterator
loader_map_type::iterator loader_map_iterator
abs_dir_cache_type::iterator abs_dir_cache_iterator
package_dir_map_type::const_iterator const_package_dir_map_iterator
static load_path * instance
load_path::dir_info::fcn_file_map_type get_fcn_files(const std::string &d)
method_file_map_type::const_iterator const_method_file_map_iterator
void print_types(std::ostream &os, int types)
static std::string path_sep_str(void)
static std::string find_fcn_file(const std::string &fcn, const std::string &pack_name="")
static std::list< std::string > overloads(const std::string &meth)
loader(const std::string &pfx="")
otherwise an error message is printed The permission mask is a UNIX concept used when creating new objects on a file system such as files
file_info(const file_info &fi)
dir_info(const std::string &d)
=val(i)}if ode{val(i)}occurs in table i
abs_dir_cache_type::const_iterator const_abs_dir_cache_iterator
fcn_map_type::const_iterator const_fcn_map_iterator
fcn_file_map_type method_file_map
static string_vector dirs(void)
fcn_file_map_type::iterator fcn_file_map_iterator
static std::list< std::string > dir_list(void)
bool do_find_package(const std::string &package_name) const
static void set_remove_hook(hook_fcn_ptr f)
static std::string find_dir(const std::string &dir)
package_dir_map_type package_dir_map
loader_map_type::const_iterator const_loader_map_iterator
static void set(const std::string &p, bool warn=false)
static std::string get_command_line_path(void)
static std::string find_method(const std::string &class_name, const std::string &meth, const std::string &pack_name="")
loader_map_type loader_map
static void initialize(void)
std::map< std::string, dir_info::fcn_file_map_type > private_fcn_map_type
static std::string path(void)
std::map< std::string, class_info > method_file_map_type
If this string is the system will ring the terminal sometimes it is useful to be able to print the original representation of the string
static string_vector find_all_first_of(const string_vector &files)
static bool find_package(const std::string &package_name)
static std::list< std::string > get_all_package_names(bool only_top_level=true)
static void set_add_hook(hook_fcn_ptr f)
dir_info(const dir_info &di)