GNU Octave  4.2.1
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
load-path.h
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 2006-2017 John W. Eaton
4 Copyright (C) 2010 VZLU Prague
5 
6 This file is part of Octave.
7 
8 Octave is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published by the
10 Free Software Foundation; either version 3 of the License, or (at your
11 option) any later version.
12 
13 Octave is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 for more details.
17 
18 You should have received a copy of the GNU General Public License
19 along with Octave; see the file COPYING. If not, see
20 <http://www.gnu.org/licenses/>.
21 
22 */
23 
24 #if ! defined (octave_load_path_h)
25 #define octave_load_path_h 1
26 
27 #include "octave-config.h"
28 
29 #include <iosfwd>
30 #include <list>
31 #include <map>
32 #include <set>
33 #include <string>
34 
35 #include "pathsearch.h"
36 #include "str-vec.h"
37 
38 class
41 {
42 protected:
43 
44  load_path (void)
45  : loader_map (), default_loader (), dir_info_list (), init_dirs () { }
46 
47 public:
48 
49  typedef void (*hook_fcn_ptr) (const std::string& dir);
50 
51  ~load_path (void) { }
52 
53  static void initialize (bool set_initial_path = false)
54  {
55  if (instance_ok ())
56  instance->do_initialize (set_initial_path);
57  }
58 
59  static void clear (void)
60  {
61  if (instance_ok ())
62  instance->do_clear ();
63  }
64 
65  static void set (const std::string& p, bool warn = false)
66  {
67  if (instance_ok ())
68  instance->do_set (p, warn);
69  }
70 
71  static void append (const std::string& dir, bool warn = false)
72  {
73  if (instance_ok ())
74  instance->do_append (dir, warn);
75  }
76 
77  static void prepend (const std::string& dir, bool warn = false)
78  {
79  if (instance_ok ())
80  instance->do_prepend (dir, warn);
81  }
82 
83  static bool remove (const std::string& dir)
84  {
85  return instance_ok () ? instance->do_remove (dir) : false;
86  }
87 
88  static void update (void)
89  {
90  if (instance_ok ())
91  instance->do_update ();
92  }
93 
94  static bool contains_canonical (const std::string& dir_name)
95  {
96  return instance_ok () ? instance->do_contains_canonical (dir_name) : false;
97  }
98 
99  static std::string find_method (const std::string& class_name,
100  const std::string& meth,
101  std::string& dir_name,
102  const std::string& pack_name = "")
103  {
104  return instance_ok ()
105  ? instance->get_loader (pack_name).find_method (class_name, meth,
106  dir_name)
107  : "";
108  }
109 
110  static std::string find_method (const std::string& class_name,
111  const std::string& meth,
112  const std::string& pack_name = "")
113  {
114  std::string dir_name;
115  return find_method (class_name, meth, dir_name, pack_name);
116  }
117 
118  static std::list<std::string> methods (const std::string& class_name,
119  const std::string& pack_name = "")
120  {
121  return instance_ok ()
122  ? instance->get_loader(pack_name).methods (class_name)
123  : std::list<std::string> ();
124  }
125 
126  static std::list<std::string> overloads (const std::string& meth)
127  {
128  return instance_ok ()
129  ? instance->do_overloads (meth) : std::list<std::string> ();
130  }
131 
132  static bool find_package (const std::string& package_name)
133  {
134  return instance_ok ()
135  ? instance->do_find_package (package_name) : false;
136  }
137 
138  static std::list<std::string>
139  get_all_package_names (bool only_top_level = true)
140  {
141  return instance_ok ()
142  ? instance->do_get_all_package_names (only_top_level)
143  : std::list<std::string> ();
144  }
145 
146  static std::string find_fcn (const std::string& fcn, std::string& dir_name,
147  const std::string& pack_name = "")
148  {
149  return instance_ok ()
150  ? instance->get_loader (pack_name).find_fcn (fcn, dir_name)
151  : "";
152  }
153 
155  const std::string& pack_name = "")
156  {
157  std::string dir_name;
158  return find_fcn (fcn, dir_name, pack_name);
159  }
160 
162  const std::string& fcn,
163  const std::string& pack_name = "")
164  {
165  return instance_ok ()
166  ? instance->get_loader (pack_name).find_private_fcn (dir, fcn)
167  : "";
168  }
169 
171  const std::string& pack_name = "")
172  {
173  std::string dir_name;
174 
175  return instance_ok ()
176  ? instance->get_loader (pack_name).find_fcn (fcn, dir_name, M_FILE)
177  : "";
178  }
179 
181  const std::string& pack_name = "")
182  {
183  std::string dir_name;
184 
185  return instance_ok ()
186  ? instance->get_loader (pack_name).find_fcn (fcn, dir_name, M_FILE)
187  : "";
188  }
189 
191  const std::string& pack_name = "")
192  {
193  std::string dir_name;
194 
195  return instance_ok ()
196  ? instance->get_loader (pack_name).find_fcn (fcn, dir_name, M_FILE)
197  : "";
198  }
199 
201  {
202  return instance_ok ()
203  ? instance->do_find_file (file) : "";
204  }
205 
206  static std::string find_dir (const std::string& dir)
207  {
208  return instance_ok ()
209  ? instance->do_find_dir (dir) : "";
210  }
211 
213  {
214  return instance_ok ()
215  ? instance->do_find_matching_dirs (dir) : string_vector ();
216  }
217 
219  {
220  return instance_ok () ?
221  instance->do_find_first_of (files) : "";
222  }
223 
225  {
226  return instance_ok () ?
227  instance->do_find_all_first_of (files) : string_vector ();
228  }
229 
230  static string_vector dirs (void)
231  {
232  return instance_ok () ? instance->do_dirs () : string_vector ();
233  }
234 
235  static std::list<std::string> dir_list (void)
236  {
237  return instance_ok ()
238  ? instance->do_dir_list () : std::list<std::string> ();
239  }
240 
241  static string_vector files (const std::string& dir, bool omit_exts = false)
242  {
243  return instance_ok ()
244  ? instance->do_files (dir, omit_exts) : string_vector ();
245  }
246 
247  static string_vector fcn_names (void)
248  {
249  return instance_ok () ? instance->do_fcn_names () : string_vector ();
250  }
251 
252  static std::string path (void)
253  {
254  return instance_ok () ? instance->do_path () : "";
255  }
256 
257  static void display (std::ostream& os)
258  {
259  if (instance_ok ())
260  instance->do_display (os);
261  }
262 
263  static hook_fcn_ptr get_add_hook (void) { return add_hook; }
264  static hook_fcn_ptr get_remove_hook (void) { return remove_hook; }
265 
266  static void set_add_hook (hook_fcn_ptr f) { add_hook = f; }
267  static void set_remove_hook (hook_fcn_ptr f) { remove_hook = f; }
268 
269  static void execute_pkg_add (const std::string& dir);
270  static void execute_pkg_del (const std::string& dir);
271 
272  static void set_command_line_path (const std::string& p)
273  {
274  if (command_line_path.empty ())
275  command_line_path = p;
276  else
277  command_line_path += octave::directory_path::path_sep_str () + p;
278  }
279 
281  {
282  return instance_ok () ? instance->do_get_command_line_path ()
283  : "";
284  }
285 
286  static std::string system_path (void)
287  {
288  return instance_ok () ? instance->do_system_path () : "";
289  }
290 
291 private:
292 
293  static const int M_FILE = 1;
294  static const int OCT_FILE = 2;
295  static const int MEX_FILE = 4;
296 
297  class dir_info
298  {
299  public:
300 
301  // <FCN_NAME, TYPE>
302  typedef std::map<std::string, int> fcn_file_map_type;
303 
304  typedef fcn_file_map_type::const_iterator const_fcn_file_map_iterator;
305  typedef fcn_file_map_type::iterator fcn_file_map_iterator;
306 
307  struct class_info
308  {
309  class_info (void) : method_file_map (), private_file_map () { }
310 
311  class_info (const class_info& ci)
312  : method_file_map (ci.method_file_map),
313  private_file_map (ci.private_file_map) { }
314 
315  class_info& operator = (const class_info& ci)
316  {
317  if (this != &ci)
318  {
319  method_file_map = ci.method_file_map;
320  private_file_map = ci.private_file_map;
321  }
322  return *this;
323  }
324 
325  ~class_info (void) { }
326 
327  fcn_file_map_type method_file_map;
328  fcn_file_map_type private_file_map;
329  };
330 
331  // <CLASS_NAME, CLASS_INFO>
332  typedef std::map<std::string, class_info> method_file_map_type;
333 
334  typedef method_file_map_type::const_iterator const_method_file_map_iterator;
335  typedef method_file_map_type::iterator method_file_map_iterator;
336 
337  // <PACKAGE_NAME, DIR_INFO>
338  typedef std::map<std::string, dir_info> package_dir_map_type;
339 
340  typedef package_dir_map_type::const_iterator const_package_dir_map_iterator;
341  typedef package_dir_map_type::iterator package_dir_map_iterator;
342 
343  // This default constructor is only provided so we can create a
344  // std::map of dir_info objects. You should not use this
345  // constructor for any other purpose.
346  dir_info (void)
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 (),
350  package_dir_map ()
351  { }
352 
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 (),
357  package_dir_map ()
358  {
359  initialize ();
360  }
361 
362  dir_info (const dir_info& di)
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) { }
371 
372  ~dir_info (void) { }
373 
374  dir_info& operator = (const dir_info& di)
375  {
376  if (&di != this)
377  {
378  dir_name = di.dir_name;
379  abs_dir_name = di.abs_dir_name;
380  is_relative = di.is_relative;
381  dir_mtime = di.dir_mtime;
382  dir_time_last_checked = di.dir_time_last_checked;
383  all_files = di.all_files;
384  fcn_files = di.fcn_files;
385  private_file_map = di.private_file_map;
386  method_file_map = di.method_file_map;
387  package_dir_map = di.package_dir_map;
388  }
389 
390  return *this;
391  }
392 
393  void update (void);
394 
402  fcn_file_map_type private_file_map;
403  method_file_map_type method_file_map;
404  package_dir_map_type package_dir_map;
405 
406  bool is_package (const std::string& name) const;
407 
408  private:
409 
410  void initialize (void);
411 
412  void get_file_list (const std::string& d);
413 
414  void get_private_file_map (const std::string& d);
415 
416  void get_method_file_map (const std::string& d,
417  const std::string& class_name);
418 
419  void get_package_dir (const std::string& d,
420  const std::string& package_name);
421 
422  friend fcn_file_map_type get_fcn_files (const std::string& d);
423  };
424 
425  class file_info
426  {
427  public:
428 
429  file_info (const std::string& d, int t) : dir_name (d), types (t) { }
430 
432  : dir_name (fi.dir_name), types (fi.types) { }
433 
434  ~file_info (void) { }
435 
436  file_info& operator = (const file_info& fi)
437  {
438  if (&fi != this)
439  {
440  dir_name = fi.dir_name;
441  types = fi.types;
442  }
443 
444  return *this;
445  }
446 
448  int types;
449  };
450 
451  // We maintain two ways of looking at the same information.
452  //
453  // First, a list of directories and the set of "public" files and
454  // private files (those found in the special "private" subdirectory)
455  // in each directory.
456  //
457  // Second, a map from filenames (the union of all "public" files for all
458  // directories, but without filename extensions) to a list of
459  // corresponding information (directory name and file types). This
460  // way, we can quickly find shadowed filenames and look up all
461  // overloaded functions (in the "@" directories used to implement
462  // classes).
463 
464  typedef std::list<dir_info> dir_info_list_type;
465 
466  typedef dir_info_list_type::const_iterator const_dir_info_list_iterator;
467  typedef dir_info_list_type::iterator dir_info_list_iterator;
468 
469  typedef std::map<std::string, dir_info> abs_dir_cache_type;
470 
471  typedef abs_dir_cache_type::const_iterator const_abs_dir_cache_iterator;
472  typedef abs_dir_cache_type::iterator abs_dir_cache_iterator;
473 
474  typedef std::list<file_info> file_info_list_type;
475 
476  typedef file_info_list_type::const_iterator const_file_info_list_iterator;
477  typedef file_info_list_type::iterator file_info_list_iterator;
478 
479  // <FCN_NAME, FILE_INFO_LIST>
480  typedef std::map<std::string, file_info_list_type> fcn_map_type;
481 
482  typedef fcn_map_type::const_iterator const_fcn_map_iterator;
483  typedef fcn_map_type::iterator fcn_map_iterator;
484 
485  // <DIR_NAME, <FCN_NAME, TYPE>>
486  typedef std::map<std::string, dir_info::fcn_file_map_type>
488 
489  typedef private_fcn_map_type::const_iterator const_private_fcn_map_iterator;
490  typedef private_fcn_map_type::iterator private_fcn_map_iterator;
491 
492  // <CLASS_NAME, <FCN_NAME, FILE_INFO_LIST>>
493  typedef std::map<std::string, fcn_map_type> method_map_type;
494 
495  typedef method_map_type::const_iterator const_method_map_iterator;
496  typedef method_map_type::iterator method_map_iterator;
497 
498  class loader
499  {
500  public:
501  loader (const std::string& pfx = "")
502  : prefix (pfx), dir_list (), fcn_map (), private_fcn_map (),
503  method_map () { }
504 
505  loader (const loader& l)
506  : prefix (l.prefix), dir_list (l.dir_list),
507  private_fcn_map (l.private_fcn_map), method_map (l.method_map) { }
508 
509  ~loader (void) { }
510 
511  loader& operator = (const loader& l)
512  {
513  if (&l != this)
514  {
515  prefix = l.prefix;
516  dir_list = l.dir_list;
517  fcn_map = l.fcn_map;
518  private_fcn_map = l.private_fcn_map;
519  method_map = l.method_map;
520  }
521 
522  return *this;
523  }
524 
525  void add (const dir_info& di, bool at_end, bool updating)
526  {
527  if (at_end)
528  dir_list.push_back (di.dir_name);
529  else
530  dir_list.push_front (di.dir_name);
531 
532  add_to_fcn_map (di, at_end, updating);
533 
534  add_to_private_fcn_map (di);
535 
536  add_to_method_map (di, at_end);
537  }
538 
539  void move (const dir_info& di, bool at_end);
540 
541  void remove (const dir_info& di);
542 
543  void clear (void)
544  {
545  dir_list.clear ();
546 
547  fcn_map.clear ();
548 
549  private_fcn_map.clear ();
550 
551  method_map.clear ();
552  }
553 
554  void display (std::ostream& out) const;
555 
556  std::string find_fcn (const std::string& fcn,
557  std::string& dir_name,
558  int type = M_FILE | OCT_FILE | MEX_FILE) const;
559 
560  std::string find_private_fcn (const std::string& dir,
561  const std::string& fcn,
562  int type = M_FILE | OCT_FILE | MEX_FILE) const;
563 
564  std::string find_method (const std::string& class_name,
565  const std::string& meth,
566  std::string& dir_name,
567  int type = M_FILE | OCT_FILE | MEX_FILE) const;
568 
569  std::list<std::string> methods (const std::string& class_name) const;
570 
571  void overloads (const std::string& meth, std::list<std::string>& l) const;
572 
573  string_vector fcn_names (void) const;
574 
575  private:
576  void add_to_fcn_map (const dir_info& di, bool at_end, bool updating);
577 
578  void add_to_private_fcn_map (const dir_info& di);
579 
580  void add_to_method_map (const dir_info& di, bool at_end);
581 
582  void move_fcn_map (const std::string& dir,
583  const string_vector& fcn_files, bool at_end);
584 
585  void move_method_map (const std::string& dir, bool at_end);
586 
587  void remove_fcn_map (const std::string& dir,
588  const string_vector& fcn_files);
589 
590  void remove_private_fcn_map (const std::string& dir);
591 
592  void remove_method_map (const std::string& dir);
593 
594  private:
596 
597  std::list<std::string> dir_list;
598 
599  fcn_map_type fcn_map;
600 
602 
603  method_map_type method_map;
604  };
605 
606  // <PACKAGE_NAME, LOADER>
607  typedef std::map<std::string, loader> loader_map_type;
608 
609  typedef loader_map_type::const_iterator const_loader_map_iterator;
610  typedef loader_map_type::iterator loader_map_iterator;
611 
612  mutable loader_map_type loader_map;
613 
615 
616  mutable dir_info_list_type dir_info_list;
617 
618  mutable std::set<std::string> init_dirs;
619 
621 
622  static void cleanup_instance (void) { delete instance; instance = 0; }
623 
624  static hook_fcn_ptr add_hook;
625 
626  static hook_fcn_ptr remove_hook;
627 
629 
631 
632  static abs_dir_cache_type abs_dir_cache;
633 
634  static bool instance_ok (void);
635 
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);
638 
639  bool contains (const std::string& dir) const;
640 
641  bool do_contains_canonical (const std::string& dir) const;
642 
643  void do_move (dir_info_list_iterator i, bool at_end);
644 
645  void move (const dir_info& di, bool at_end,
646  const std::string& pname = "");
647 
648  void remove (const dir_info& di,
649  const std::string& pname = "");
650 
651  void do_initialize (bool set_initial_path);
652 
653  void do_clear (void);
654 
655  void do_set (const std::string& p, bool warn, bool is_init = false);
656 
657  void do_append (const std::string& dir, bool warn);
658 
659  void do_prepend (const std::string& dir, bool warn);
660 
661  void do_add (const std::string& dir, bool at_end, bool warn);
662 
663  bool do_remove (const std::string& dir);
664 
665  void do_update (void) const;
666 
667  static bool
668  check_file_type (std::string& fname, int type, int possible_types,
669  const std::string& fcn, const char *who);
670 
671  bool is_package (const std::string& name) const;
672 
674  {
675  if (! name.empty () && is_package (name))
676  {
677  loader_map_iterator l = loader_map.find (name);
678 
679  if (l == loader_map.end ())
680  l = loader_map.insert (loader_map.end (),
681  loader_map_type::value_type (name, loader (name)));
682 
683  return l->second;
684  }
685 
686  return default_loader;
687  }
688 
689  std::list<std::string> do_overloads (const std::string& meth) const;
690 
691  bool do_find_package (const std::string& package_name) const
692  {
693  return (loader_map.find (package_name) != loader_map.end ());
694  }
695 
696  std::list<std::string> do_get_all_package_names (bool only_top_level) const;
697 
698  std::string do_find_file (const std::string& file) const;
699 
700  std::string do_find_dir (const std::string& dir) const;
701 
702  string_vector do_find_matching_dirs (const std::string& dir) const;
703 
704  std::string do_find_first_of (const string_vector& files) const;
705 
706  string_vector do_find_all_first_of (const string_vector& files) const;
707 
708  string_vector do_dirs (void) const;
709 
710  std::list<std::string> do_dir_list (void) const;
711 
712  string_vector do_files (const std::string& dir, bool omit_exts) const;
713 
714  string_vector do_fcn_names (void) const;
715 
716  std::string do_path (void) const;
717 
718  friend void print_types (std::ostream& os, int types);
719 
720  friend string_vector get_file_list (const dir_info::fcn_file_map_type& lst);
721 
722  friend void
723  print_fcn_list (std::ostream& os, const dir_info::fcn_file_map_type& lst);
724 
725  void do_display (std::ostream& os) const;
726 
727  std::string do_system_path (void) const { return sys_path; }
728 
730  { return command_line_path; }
731 
732  void add (const dir_info& di, bool at_end,
733  const std::string& pname = "",
734  bool updating = false) const;
735 
736  friend dir_info::fcn_file_map_type get_fcn_files (const std::string& d);
737 };
738 
739 extern std::string
740 genpath (const std::string& dir, const string_vector& skip = "private");
741 
742 #endif
fcn_map_type::iterator fcn_map_iterator
Definition: load-path.h:483
std::string do_get_command_line_path(void) const
Definition: load-path.h:729
static std::string system_path(void)
Definition: load-path.h:286
std::set< std::string > init_dirs
Definition: load-path.h:618
method_file_map_type method_file_map
Definition: load-path.h:403
For example cd octave end example noindent changes the current working directory to file
Definition: dirfns.cc:120
static string_vector find_matching_dirs(const std::string &dir)
Definition: load-path.h:212
fcn_file_map_type private_file_map
Definition: load-path.h:402
file_info(const std::string &d, int t)
Definition: load-path.h:429
method_map_type::iterator method_map_iterator
Definition: load-path.h:496
static void display(std::ostream &os)
Definition: load-path.h:257
static hook_fcn_ptr get_add_hook(void)
Definition: load-path.h:263
fname
Definition: load-save.cc:754
static std::string find_fcn(const std::string &fcn, const std::string &pack_name="")
Definition: load-path.h:154
std::map< std::string, fcn_map_type > method_map_type
Definition: load-path.h:493
static void prepend(const std::string &dir, bool warn=false)
Definition: load-path.h:77
std::map< std::string, int > fcn_file_map_type
Definition: load-path.h:302
static std::string command_line_path
Definition: load-path.h:628
dir_info_list_type::iterator dir_info_list_iterator
Definition: load-path.h:467
static std::list< std::string > methods(const std::string &class_name, const std::string &pack_name="")
Definition: load-path.h:118
static void append(const std::string &dir, bool warn=false)
Definition: load-path.h:71
std::map< std::string, loader > loader_map_type
Definition: load-path.h:607
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
Definition: load-path.h:338
octave::sys::time dir_time_last_checked
Definition: load-path.h:399
static hook_fcn_ptr get_remove_hook(void)
Definition: load-path.h:264
loader & get_loader(const std::string &name) const
Definition: load-path.h:673
std::string genpath(const std::string &dir, const string_vector &skip="private")
Definition: load-path.cc:2154
static std::string find_file(const std::string &file)
Definition: load-path.h:200
static std::string find_first_of(const string_vector &files)
Definition: load-path.h:218
file_info_list_type::const_iterator const_file_info_list_iterator
Definition: load-path.h:476
fcn_file_map_type private_file_map
Definition: load-path.h:328
octave::sys::time dir_mtime
Definition: load-path.h:398
void add(const dir_info &di, bool at_end, bool updating)
Definition: load-path.h:525
dir_info_list_type dir_info_list
Definition: load-path.h:616
std::string do_system_path(void) const
Definition: load-path.h:727
private_fcn_map_type::const_iterator const_private_fcn_map_iterator
Definition: load-path.h:489
static abs_dir_cache_type abs_dir_cache
Definition: load-path.h:632
static double fi[256]
Definition: randmtzig.cc:440
private_fcn_map_type::iterator private_fcn_map_iterator
Definition: load-path.h:490
package_dir_map_type::iterator package_dir_map_iterator
Definition: load-path.h:341
static void set_command_line_path(const std::string &p)
Definition: load-path.h:272
OCTAVE_EXPORT octave_value_list return the number of command line arguments passed to Octave If called with the optional argument the function t
Definition: ov-usr-fcn.cc:935
static std::string find_method(const std::string &class_name, const std::string &meth, std::string &dir_name, const std::string &pack_name="")
Definition: load-path.h:99
std::string dir_name
Definition: load-path.h:395
method_map_type::const_iterator const_method_map_iterator
Definition: load-path.h:495
static string_vector files(const std::string &dir, bool omit_exts=false)
Definition: load-path.h:241
void print_fcn_list(std::ostream &os, const load_path::dir_info::fcn_file_map_type &lst)
Definition: load-path.cc:1765
~load_path(void)
Definition: load-path.h:51
static std::string find_private_fcn(const std::string &dir, const std::string &fcn, const std::string &pack_name="")
Definition: load-path.h:161
load_path(void)
Definition: load-path.h:44
octave_function * fcn
Definition: ov-class.cc:1743
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="")
Definition: load-path.h:146
method_file_map_type::iterator method_file_map_iterator
Definition: load-path.h:335
string_vector fcn_files
Definition: load-path.h:401
static hook_fcn_ptr remove_hook
Definition: load-path.h:626
std::list< file_info > file_info_list_type
Definition: load-path.h:474
static std::string find_mex_file(const std::string &fcn, const std::string &pack_name="")
Definition: load-path.h:190
static void cleanup_instance(void)
Definition: load-path.h:622
static string_vector fcn_names(void)
Definition: load-path.h:247
OCTAVE_EXPORT octave_value_list any number nd example oindent prints the prompt xample Pick a any number!nd example oindent and waits for the user to enter a value The string entered by the user is evaluated as an so it may be a literal a variable name
Definition: input.cc:871
method_map_type method_map
Definition: load-path.h:603
std::map< std::string, file_info_list_type > fcn_map_type
Definition: load-path.h:480
std::list< std::string > dir_list
Definition: load-path.h:597
#define OCTINTERP_API
Definition: mexproto.h:69
static hook_fcn_ptr add_hook
Definition: load-path.h:624
string_vector get_file_list(const load_path::dir_info::fcn_file_map_type &lst)
Definition: load-path.cc:1781
private_fcn_map_type private_fcn_map
Definition: load-path.h:601
fcn_file_map_type::const_iterator const_fcn_file_map_iterator
Definition: load-path.h:304
static std::string sys_path
Definition: load-path.h:630
std::string dir_name
Definition: load-path.h:447
std::map< std::string, dir_info > abs_dir_cache_type
Definition: load-path.h:469
static std::string find_oct_file(const std::string &fcn, const std::string &pack_name="")
Definition: load-path.h:180
static void initialize(bool set_initial_path=false)
Definition: load-path.h:53
class_info(const class_info &ci)
Definition: load-path.h:311
is false
Definition: cellfun.cc:398
fcn_map_type fcn_map
Definition: load-path.h:599
loader default_loader
Definition: load-path.h:614
dir_info_list_type::const_iterator const_dir_info_list_iterator
Definition: load-path.h:466
std::list< dir_info > dir_info_list_type
Definition: load-path.h:464
idx type
Definition: ov.cc:3129
static bool contains_canonical(const std::string &dir_name)
Definition: load-path.h:94
file_info_list_type::iterator file_info_list_iterator
Definition: load-path.h:477
loader_map_type::iterator loader_map_iterator
Definition: load-path.h:610
std::string pname
Definition: graphics.cc:11207
abs_dir_cache_type::iterator abs_dir_cache_iterator
Definition: load-path.h:472
package_dir_map_type::const_iterator const_package_dir_map_iterator
Definition: load-path.h:340
static load_path * instance
Definition: load-path.h:620
load_path::dir_info::fcn_file_map_type get_fcn_files(const std::string &d)
Definition: load-path.cc:254
method_file_map_type::const_iterator const_method_file_map_iterator
Definition: load-path.h:334
void print_types(std::ostream &os, int types)
Definition: load-path.cc:1737
static std::string path_sep_str(void)
Definition: pathsearch.h:109
static std::string find_fcn_file(const std::string &fcn, const std::string &pack_name="")
Definition: load-path.h:170
static std::list< std::string > overloads(const std::string &meth)
Definition: load-path.h:126
static void update(void)
Definition: load-path.h:88
loader(const std::string &pfx="")
Definition: load-path.h:501
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
Definition: file-io.cc:2981
file_info(const file_info &fi)
Definition: load-path.h:431
dir_info(const std::string &d)
Definition: load-path.h:353
=val(i)}if ode{val(i)}occurs in table i
Definition: lookup.cc:239
abs_dir_cache_type::const_iterator const_abs_dir_cache_iterator
Definition: load-path.h:471
fcn_map_type::const_iterator const_fcn_map_iterator
Definition: load-path.h:482
p
Definition: lu.cc:138
std::string abs_dir_name
Definition: load-path.h:396
fcn_file_map_type method_file_map
Definition: load-path.h:327
static string_vector dirs(void)
Definition: load-path.h:230
fcn_file_map_type::iterator fcn_file_map_iterator
Definition: load-path.h:305
static std::list< std::string > dir_list(void)
Definition: load-path.h:235
bool do_find_package(const std::string &package_name) const
Definition: load-path.h:691
static void set_remove_hook(hook_fcn_ptr f)
Definition: load-path.h:267
static std::string find_dir(const std::string &dir)
Definition: load-path.h:206
string_vector all_files
Definition: load-path.h:400
package_dir_map_type package_dir_map
Definition: load-path.h:404
loader_map_type::const_iterator const_loader_map_iterator
Definition: load-path.h:609
static void set(const std::string &p, bool warn=false)
Definition: load-path.h:65
static std::string get_command_line_path(void)
Definition: load-path.h:280
static std::string find_method(const std::string &class_name, const std::string &meth, const std::string &pack_name="")
Definition: load-path.h:110
loader_map_type loader_map
Definition: load-path.h:612
static void initialize(void)
Definition: mkoctfile.cc:123
void clear(void)
Definition: load-path.h:543
loader(const loader &l)
Definition: load-path.h:505
std::map< std::string, dir_info::fcn_file_map_type > private_fcn_map_type
Definition: load-path.h:487
static void clear(void)
Definition: load-path.h:59
static std::string path(void)
Definition: load-path.h:252
std::map< std::string, class_info > method_file_map_type
Definition: load-path.h:332
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
Definition: utils.cc:854
static string_vector find_all_first_of(const string_vector &files)
Definition: load-path.h:224
static bool find_package(const std::string &package_name)
Definition: load-path.h:132
static std::list< std::string > get_all_package_names(bool only_top_level=true)
Definition: load-path.h:139
static void set_add_hook(hook_fcn_ptr f)
Definition: load-path.h:266
dir_info(const dir_info &di)
Definition: load-path.h:362
std::string prefix
Definition: load-path.h:595