Mercurial > hg > octave-nkf
diff src/load-path.h @ 14376:7dd6ac033e69
Warn when the default path is overwritten
* load-path.h (dir_info): New member, is_init, true if this directory
was set during init. (dir_info::dir_info): Initialise is_init param.
(load_path::do_clear): Pass the new elements to add after clearing.
(load_path::clear): Pass dummy empty elements. (load_path::do_set,
load_path::do_append, load_path::do_add): Pass new bool if adding or
setting an init directory.
* load-path.cc (load_path::do_initalize, load_path::do_append,
load_path::do_add): Pass around extra is_init argument. (do_set):
Pass an std::set of new directories to do_append. (do_clear): Check
if the init directories are getting removed and warn if so.
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Thu, 16 Feb 2012 20:19:12 -0500 |
parents | 72c96de7a403 |
children | f7afecdd87ef |
line wrap: on
line diff
--- a/src/load-path.h +++ b/src/load-path.h @@ -56,7 +56,10 @@ static void clear (void) { if (instance_ok ()) - instance->do_clear (); + { + std::set<std::string> no_new_elts; + instance->do_clear (no_new_elts); + } } static void set (const std::string& p, bool warn = false) @@ -294,14 +297,14 @@ // constructor for any other purpose. dir_info (void) : dir_name (), abs_dir_name (), is_relative (false), - dir_mtime (), dir_time_last_checked (), all_files (), - fcn_files (), private_file_map (), method_file_map () + is_init(false), dir_mtime (), dir_time_last_checked (), + all_files (), fcn_files (), private_file_map (), method_file_map () { } dir_info (const std::string& d) : dir_name (d), abs_dir_name (), is_relative (false), - dir_mtime (), dir_time_last_checked (), all_files (), - fcn_files (), private_file_map (), method_file_map () + is_init(false), dir_mtime (), dir_time_last_checked (), + all_files (), fcn_files (), private_file_map (), method_file_map () { initialize (); } @@ -309,6 +312,7 @@ dir_info (const dir_info& di) : dir_name (di.dir_name), abs_dir_name (di.abs_dir_name), is_relative (di.is_relative), + is_init (di.is_init), dir_mtime (di.dir_mtime), dir_time_last_checked (di.dir_time_last_checked), all_files (di.all_files), fcn_files (di.fcn_files), @@ -324,6 +328,7 @@ dir_name = di.dir_name; abs_dir_name = di.abs_dir_name; is_relative = di.is_relative; + is_init = di.is_init; dir_mtime = di.dir_mtime; dir_time_last_checked = di.dir_time_last_checked; all_files = di.all_files; @@ -340,6 +345,7 @@ std::string dir_name; std::string abs_dir_name; bool is_relative; + bool is_init; //Was this directory set by init? Warn when clearing it. octave_time dir_mtime; octave_time dir_time_last_checked; string_vector all_files; @@ -471,15 +477,16 @@ void do_initialize (bool set_initial_path); - void do_clear (void); + void do_clear (std::set<std::string>& new_elts); - void do_set (const std::string& p, bool warn); + void do_set (const std::string& p, bool warn, bool is_init=false); - void do_append (const std::string& dir, bool warn); + void do_append (const std::string& dir, bool warn, bool is_init=false); void do_prepend (const std::string& dir, bool warn); - void do_add (const std::string& dir, bool at_end, bool warn); + void do_add (const std::string& dir, bool at_end, bool warn, + bool is_init=false); void remove_fcn_map (const std::string& dir, const string_vector& fcn_files);