GNU Octave  3.8.0
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-2013 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 <string>
27 
28 #include "oct-shlib.h"
29 
30 class octave_function;
31 
32 class
34 {
35 protected:
36 
38 
39 public:
40 
41  virtual ~octave_dynamic_loader (void) { }
42 
43  static octave_function *
44  load_oct (const std::string& fcn_name,
45  const std::string& file_name = std::string (),
46  bool relative = false);
47 
48  static octave_function *
49  load_mex (const std::string& fcn_name,
50  const std::string& file_name = std::string (),
51  bool relative = false);
52 
53  static bool remove_oct (const std::string& fcn_name, octave_shlib& shl);
54 
55  static bool remove_mex (const std::string& fcn_name, octave_shlib& shl);
56 
57 private:
58 
59  // No copying!
60 
62 
64 
66 
67  static void cleanup_instance (void) { delete instance; instance = 0; }
68 
69  static bool instance_ok (void);
70 
72  do_load_oct (const std::string& fcn_name,
73  const std::string& file_name = std::string (),
74  bool relative = false);
75 
77  do_load_mex (const std::string& fcn_name,
78  const std::string& file_name = std::string (),
79  bool relative = false);
80 
81  bool do_remove_oct (const std::string& fcn_name, octave_shlib& shl);
82 
83  bool do_remove_mex (const std::string& fcn_name, octave_shlib& shl);
84 
85  static bool doing_load;
86 
87 protected:
88 
89  static std::string name_mangler (const std::string& name);
90 
91  static std::string name_uscore_mangler (const std::string& name);
92 
93  static std::string mex_mangler (const std::string& name);
94 
95  static std::string mex_uscore_mangler (const std::string& name);
96 
97  static std::string mex_f77_mangler (const std::string& name);
98 };
99 
100 #endif