annotate libinterp/corefcn/dynamic-ld.cc @ 27919:1891570abac8

update Octave Project Developers copyright for the new year In files that have the "Octave Project Developers" copyright notice, update for 2020.
author John W. Eaton <jwe@octave.org>
date Mon, 06 Jan 2020 22:29:51 -0500
parents b442ec6dda5c
children bd51beb6205e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2
27919
1891570abac8 update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 27918
diff changeset
3 Copyright (C) 1993-2020 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 26427
diff changeset
4
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 26427
diff changeset
5 See the file COPYRIGHT.md in the top-level directory of this distribution
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 26427
diff changeset
6 or <https://octave.org/COPYRIGHT.html/>.
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 26427
diff changeset
7
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
8
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
9 This file is part of Octave.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
10
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23807
diff changeset
11 Octave is free software: you can redistribute it and/or modify it
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
12 under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23807
diff changeset
13 the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
14 (at your option) any later version.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
15
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
16 Octave is distributed in the hope that it will be useful, but
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
17 WITHOUT ANY WARRANTY; without even the implied warranty of
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
19 GNU General Public License for more details.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
20
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
21 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6323
diff changeset
22 along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23807
diff changeset
23 <https://www.gnu.org/licenses/>.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
24
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
25 */
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
26
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
27 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21200
diff changeset
28 # include "config.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
29 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
30
8950
d865363208d6 include <iosfwd> instead of <iostream> in header files
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
31 #include <iostream>
4219
23d06c9e1edd [project @ 2002-12-06 21:29:17 by jwe]
jwe
parents: 4009
diff changeset
32 #include <list>
23d06c9e1edd [project @ 2002-12-06 21:29:17 by jwe]
jwe
parents: 4009
diff changeset
33
13983
7dd7cccf0757 clean up memory allocated for singletons before exit
John W. Eaton <jwe@octave.org>
parents: 11586
diff changeset
34 #include "file-stat.h"
6323
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6221
diff changeset
35 #include "oct-env.h"
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
36 #include "oct-time.h"
707
d7c4962ec7a0 [project @ 1994-09-16 13:50:20 by jwe]
jwe
parents: 527
diff changeset
37
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
38 #include "defun.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1315
diff changeset
39 #include "dynamic-ld.h"
23599
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23554
diff changeset
40 #include "interpreter-private.h"
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
41 #include "interpreter.h"
7336
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
42 #include "ov-fcn.h"
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
43 #include "ov-dld-fcn.h"
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
44 #include "ov-mex-fcn.h"
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
45 #include "parse.h"
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
46 #include "unwind-prot.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1315
diff changeset
47 #include "utils.h"
707
d7c4962ec7a0 [project @ 1994-09-16 13:50:20 by jwe]
jwe
parents: 527
diff changeset
48 #include "variables.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
49
5864
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
50 #define STRINGIFY(s) STRINGIFY1(s)
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
51 #define STRINGIFY1(s) #s
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
52
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
53 namespace octave
1664
913a157f1e02 [project @ 1995-12-24 07:00:22 by jwe]
jwe
parents: 1488
diff changeset
54 {
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
55 void
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
56 dynamic_loader::shlibs_list::append (const dynamic_library& shl)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
57 {
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
58 m_lib_list.push_back (shl);
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
59 }
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
60
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
61 std::list<std::string>
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
62 dynamic_loader::shlibs_list::remove (dynamic_library& shl)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
63 {
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
64 std::list<std::string> removed_fcns;
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
65
25337
3ff9192b676e use auto keyword to declare iterator variables where possible
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
66 for (auto p = m_lib_list.begin (); p != m_lib_list.end (); p++)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
67 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
68 if (*p == shl)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
69 {
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
70 m_lib_list.erase (p);
13983
7dd7cccf0757 clean up memory allocated for singletons before exit
John W. Eaton <jwe@octave.org>
parents: 11586
diff changeset
71
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
72 removed_fcns = shl.close ();
2894
f1c5f8151397 [project @ 1997-04-28 05:39:26 by jwe]
jwe
parents: 2893
diff changeset
73
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
74 break;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
75 }
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
76 }
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
77
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
78 return removed_fcns;
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
79 }
2894
f1c5f8151397 [project @ 1997-04-28 05:39:26 by jwe]
jwe
parents: 2893
diff changeset
80
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
81 dynamic_library
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
82 dynamic_loader::shlibs_list::find_file (const std::string& file_name) const
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
83 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
84 dynamic_library retval;
3321
6923abb04e16 [project @ 1999-10-26 18:15:30 by jwe]
jwe
parents: 3222
diff changeset
85
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
86 for (const auto& lib : m_lib_list)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
87 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
88 if (lib.file_name () == file_name)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
89 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
90 retval = lib;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
91 break;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
92 }
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
93 }
1664
913a157f1e02 [project @ 1995-12-24 07:00:22 by jwe]
jwe
parents: 1488
diff changeset
94
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
95 return retval;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
96 }
1664
913a157f1e02 [project @ 1995-12-24 07:00:22 by jwe]
jwe
parents: 1488
diff changeset
97
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
98 void
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
99 dynamic_loader::shlibs_list::display (void) const
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
100 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
101 std::cerr << "current shared libraries:" << std::endl;
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
102 for (const auto& lib : m_lib_list)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
103 std::cerr << " " << lib.file_name () << std::endl;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
104 }
1664
913a157f1e02 [project @ 1995-12-24 07:00:22 by jwe]
jwe
parents: 1488
diff changeset
105
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
106 void
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
107 dynamic_loader::clear_function (const std::string& fcn_name)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
108 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
109 warning_with_id ("Octave:reload-forces-clear", " %s", fcn_name.c_str ());
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2895
diff changeset
110
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
111 // FIXME: is there a way to avoid this? Can we manage the list of
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
112 // functions that are loaded in the symbol table completely outside
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
113 // of the dynamic_loader class?
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
114
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
115 symbol_table& symtab = m_interpreter.get_symbol_table ();
23599
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23554
diff changeset
116
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23554
diff changeset
117 symtab.clear_dld_function (fcn_name);
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
118 }
13983
7dd7cccf0757 clean up memory allocated for singletons before exit
John W. Eaton <jwe@octave.org>
parents: 11586
diff changeset
119
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
120 void
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
121 dynamic_loader::clear (dynamic_library& oct_file)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
122 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
123 if (oct_file.number_of_functions_loaded () > 1)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
124 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
125 warning_with_id ("Octave:reload-forces-clear",
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
126 "reloading %s clears the following functions:",
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
127 oct_file.file_name ().c_str ());
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2895
diff changeset
128
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
129 std::list<std::string> removed_fcns = m_loaded_shlibs.remove (oct_file);
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
130
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
131 for (const auto& fcn_name : removed_fcns)
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
132 clear_function (fcn_name);
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
133 }
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
134 else
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
135 {
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
136 std::list<std::string> removed_fcns = m_loaded_shlibs.remove (oct_file);
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
137
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
138 // FIXME: is there a way to avoid this? Can we manage the list
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
139 // of functions that are loaded in the symbol table completely
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
140 // outside of the dynamic_loader class?
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
141
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
142 symbol_table& symtab = m_interpreter.get_symbol_table ();
23599
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23554
diff changeset
143
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
144 for (const auto& fcn_name : removed_fcns)
23599
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23554
diff changeset
145 symtab.clear_dld_function (fcn_name);
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
146 }
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
147 }
2894
f1c5f8151397 [project @ 1997-04-28 05:39:26 by jwe]
jwe
parents: 2893
diff changeset
148
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
149 octave_function *
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
150 dynamic_loader::load_oct (const std::string& fcn_name,
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
151 const std::string& file_name,
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
152 bool relative)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
153 {
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23220
diff changeset
154 octave_function *retval = nullptr;
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
155
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
156 unwind_protect frame;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
157
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
158 frame.protect_var (m_doing_load);
7745
0ff0fc033f28 better handling of functions found by relative lookup
John W. Eaton <jwe@octave.org>
parents: 7336
diff changeset
159
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
160 m_doing_load = true;
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
161
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
162 dynamic_library oct_file = m_loaded_shlibs.find_file (file_name);
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
163
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
164 if (oct_file && oct_file.is_out_of_date ())
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
165 clear (oct_file);
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
166
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
167 if (! oct_file)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
168 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
169 oct_file.open (file_name);
13983
7dd7cccf0757 clean up memory allocated for singletons before exit
John W. Eaton <jwe@octave.org>
parents: 11586
diff changeset
170
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
171 if (oct_file)
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
172 m_loaded_shlibs.append (oct_file);
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
173 }
707
d7c4962ec7a0 [project @ 1994-09-16 13:50:20 by jwe]
jwe
parents: 527
diff changeset
174
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
175 if (! oct_file)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
176 error ("%s is not a valid shared library", file_name.c_str ());
2893
9fd1df4b464a [project @ 1997-04-28 02:07:38 by jwe]
jwe
parents: 2862
diff changeset
177
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
178 void *function = oct_file.search (fcn_name, name_mangler);
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
179
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
180 if (! function)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
181 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
182 // FIXME: can we determine this C mangling scheme
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
183 // automatically at run time or configure time?
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
184
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
185 function = oct_file.search (fcn_name, name_uscore_mangler);
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
186 }
6323
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6221
diff changeset
187
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
188 if (function)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
189 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
190 octave_dld_fcn_getter f
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
191 = reinterpret_cast<octave_dld_fcn_getter> (function);
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
192
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
193 retval = f (oct_file, relative);
6323
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6221
diff changeset
194
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
195 if (! retval)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
196 error ("failed to install .oct file function '%s'",
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
197 fcn_name.c_str ());
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
198 }
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
199
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
200 return retval;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
201 }
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
202
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
203 octave_function *
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
204 dynamic_loader::load_mex (const std::string& fcn_name,
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
205 const std::string& file_name,
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
206 bool /*relative*/)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
207 {
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23220
diff changeset
208 octave_function *retval = nullptr;
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
209
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
210 unwind_protect frame;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
211
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
212 frame.protect_var (m_doing_load);
7749
14e05160b99f reference counting for functions loaded from shared libraries
John W. Eaton <jwe@octave.org>
parents: 7748
diff changeset
213
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
214 m_doing_load = true;
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
215
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
216 dynamic_library mex_file = m_loaded_shlibs.find_file (file_name);
7749
14e05160b99f reference counting for functions loaded from shared libraries
John W. Eaton <jwe@octave.org>
parents: 7748
diff changeset
217
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
218 if (mex_file && mex_file.is_out_of_date ())
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
219 clear (mex_file);
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
220
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
221 if (! mex_file)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
222 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
223 mex_file.open (file_name);
7749
14e05160b99f reference counting for functions loaded from shared libraries
John W. Eaton <jwe@octave.org>
parents: 7748
diff changeset
224
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
225 if (mex_file)
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
226 m_loaded_shlibs.append (mex_file);
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
227 }
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
228
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
229 if (! mex_file)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
230 error ("%s is not a valid shared library", file_name.c_str ());
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20831
diff changeset
231
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
232 bool have_fmex = false;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
233
26427
93c7fc75b103 dynamic-ld.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
234 void *function = mex_file.search (fcn_name, mex_mangler);
7996
6a7db240b3a3 configure.in: eliminate CXX_ABI and OCTAVE_CXX_PREPEND_UNDERSCORE
John W. Eaton <jwe@octave.org>
parents: 7872
diff changeset
235
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
236 if (! function)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
237 {
26427
93c7fc75b103 dynamic-ld.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
238 // FIXME: Can we determine this C mangling scheme
93c7fc75b103 dynamic-ld.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
239 // automatically at run time or configure time?
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
240 function = mex_file.search (fcn_name, mex_uscore_mangler);
7749
14e05160b99f reference counting for functions loaded from shared libraries
John W. Eaton <jwe@octave.org>
parents: 7748
diff changeset
241
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
242 if (! function)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
243 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
244 function = mex_file.search (fcn_name, mex_f77_mangler);
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
245
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
246 if (function)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
247 have_fmex = true;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
248 }
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
249 }
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
250
26427
93c7fc75b103 dynamic-ld.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
251 if (! function)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
252 error ("failed to install .mex file function '%s'", fcn_name.c_str ());
7748
3dc91baee089 dynamic-ld.cc: cleanups
John W. Eaton <jwe@octave.org>
parents: 7745
diff changeset
253
26427
93c7fc75b103 dynamic-ld.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
254 retval = new octave_mex_function (function, have_fmex, mex_file, fcn_name);
93c7fc75b103 dynamic-ld.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
255
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
256 return retval;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
257 }
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20831
diff changeset
258
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
259 bool
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
260 dynamic_loader::remove_oct (const std::string& fcn_name,
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
261 dynamic_library& shl)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
262 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
263 bool retval = false;
5864
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
264
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
265 // We don't need to do anything if this is called because we are in
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
266 // the process of reloading a .oct file that has changed.
5864
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
267
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
268 if (! m_doing_load)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
269 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
270 retval = shl.remove (fcn_name);
5864
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
271
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
272 if (shl.number_of_functions_loaded () == 0)
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
273 m_loaded_shlibs.remove (shl);
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
274 }
5864
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
275
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
276 return retval;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
277 }
8832
9dddbad47122 automatically reload out of date mex files
John W. Eaton <jwe@octave.org>
parents: 7996
diff changeset
278
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
279 bool
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
280 dynamic_loader::remove_mex (const std::string& fcn_name,
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
281 dynamic_library& shl)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
282 {
26427
93c7fc75b103 dynamic-ld.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
283 // Use the same procedure as for oct files.
93c7fc75b103 dynamic-ld.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26376
diff changeset
284 return remove_oct (fcn_name, shl);
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
285 }
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20831
diff changeset
286
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
287 std::string
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
288 dynamic_loader::name_mangler (const std::string& name)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
289 {
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23652
diff changeset
290 return 'G' + name;
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
291 }
20555
f90c8372b7ba eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20428
diff changeset
292
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
293 std::string
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
294 dynamic_loader::name_uscore_mangler (const std::string& name)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
295 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
296 return "_G" + name;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
297 }
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
298
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
299 std::string
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
300 dynamic_loader::mex_mangler (const std::string&)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
301 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
302 return "mexFunction";
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
303 }
5864
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
304
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
305 std::string
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
306 dynamic_loader::mex_uscore_mangler (const std::string&)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
307 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
308 return "_mexFunction";
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
309 }
6221
8e0f1eda266b [project @ 2007-01-03 17:23:33 by jwe]
jwe
parents: 6063
diff changeset
310
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
311 std::string
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
312 dynamic_loader::mex_f77_mangler (const std::string&)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
313 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
314 return STRINGIFY (F77_FUNC (mexfunction, MEXFUNCTION));
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
315 }
5864
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
316 }