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
dynamic-ld.h
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 1993-2017 John W. Eaton
4 
5 This file is part of Octave.
6 
7 Octave is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 3 of the License, or (at your
10 option) any later version.
11 
12 Octave is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with Octave; see the file COPYING. If not, see
19 <http://www.gnu.org/licenses/>.
20 
21 */
22 
23 #if ! defined (octave_dynamic_ld_h)
24 #define octave_dynamic_ld_h 1
25 
26 #include "octave-config.h"
27 
28 #include <string>
29 
30 #include "oct-shlib.h"
31 
32 class octave_function;
33 
34 class
36 {
37 protected:
38 
40 
41 public:
42 
43  virtual ~octave_dynamic_loader (void) { }
44 
45  static octave_function *
46  load_oct (const std::string& fcn_name,
47  const std::string& file_name = "",
48  bool relative = false);
49 
50  static octave_function *
51  load_mex (const std::string& fcn_name,
52  const std::string& file_name = "",
53  bool relative = false);
54 
55  static bool remove_oct (const std::string& fcn_name,
57 
58  static bool remove_mex (const std::string& fcn_name,
60 
61 private:
62 
63  // No copying!
64 
66 
68 
70 
71  static void cleanup_instance (void) { delete instance; instance = 0; }
72 
73  static bool instance_ok (void);
74 
76  do_load_oct (const std::string& fcn_name,
77  const std::string& file_name = "",
78  bool relative = false);
79 
81  do_load_mex (const std::string& fcn_name,
82  const std::string& file_name = "",
83  bool relative = false);
84 
85  bool do_remove_oct (const std::string& fcn_name, octave::dynamic_library& shl);
86 
87  bool do_remove_mex (const std::string& fcn_name, octave::dynamic_library& shl);
88 
89  static bool doing_load;
90 
91 protected:
92 
93  static std::string name_mangler (const std::string& name);
94 
95  static std::string name_uscore_mangler (const std::string& name);
96 
97  static std::string mex_mangler (const std::string& name);
98 
99  static std::string mex_uscore_mangler (const std::string& name);
100 
101  static std::string mex_f77_mangler (const std::string& name);
102 };
103 
104 #endif
octave_function & operator=(const octave_function &f)
bool relative
Definition: ov-fcn.h:192
virtual ~octave_dynamic_loader(void)
Definition: dynamic-ld.h:43
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
static octave_dynamic_loader * instance
Definition: dynamic-ld.h:69
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 void cleanup_instance(void)
Definition: dynamic-ld.h:71
static bool doing_load
Definition: dynamic-ld.h:89