annotate libinterp/corefcn/dynamic-ld.cc @ 23652:ccf3c11aab06

eliminate include statements for singleton-cleanup.h where no longer used * dynamic-ld.cc, octave-link.cc, symtab.cc, ov-classdef.cc: Don't include singleton-cleanup.h.
author John W. Eaton <jwe@octave.org>
date Mon, 19 Jun 2017 14:57:34 -0400
parents 0a6e87804cab
children 336f89b6208b
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
23219
3ac9f9ecfae5 maint: Update copyright dates.
John W. Eaton <jwe@octave.org>
parents: 23083
diff changeset
3 Copyright (C) 1993-2017 John W. Eaton
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
4
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
6
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
7 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
8 under the terms of the GNU General Public License as published by
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
9 the Free Software Foundation; either version 3 of the License, or
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
10 (at your option) any later version.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
11
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
12 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
13 WITHOUT ANY WARRANTY; without even the implied warranty of
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
15 GNU General Public License for more details.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
16
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
17 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
18 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6323
diff changeset
19 <http://www.gnu.org/licenses/>.
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 */
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
22
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
23 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21200
diff changeset
24 # include "config.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
25 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
26
8950
d865363208d6 include <iosfwd> instead of <iostream> in header files
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
27 #include <iostream>
4219
23d06c9e1edd [project @ 2002-12-06 21:29:17 by jwe]
jwe
parents: 4009
diff changeset
28 #include <list>
23d06c9e1edd [project @ 2002-12-06 21:29:17 by jwe]
jwe
parents: 4009
diff changeset
29
13983
7dd7cccf0757 clean up memory allocated for singletons before exit
John W. Eaton <jwe@octave.org>
parents: 11586
diff changeset
30 #include "file-stat.h"
6323
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6221
diff changeset
31 #include "oct-env.h"
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
32 #include "oct-time.h"
707
d7c4962ec7a0 [project @ 1994-09-16 13:50:20 by jwe]
jwe
parents: 527
diff changeset
33
23466
5da300c55e89 use "" instead of <> for including defaults.h and version.h
John W. Eaton <jwe@octave.org>
parents: 23457
diff changeset
34 #include "defaults.h"
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
35 #include "defun.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1315
diff changeset
36 #include "dynamic-ld.h"
23599
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23554
diff changeset
37 #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
38 #include "interpreter.h"
7336
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
39 #include "ov-fcn.h"
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
40 #include "ov-dld-fcn.h"
745a8299c2b5 [project @ 2007-12-28 20:56:55 by jwe]
jwe
parents: 7017
diff changeset
41 #include "ov-mex-fcn.h"
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
42 #include "parse.h"
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
43 #include "unwind-prot.h"
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1315
diff changeset
44 #include "utils.h"
707
d7c4962ec7a0 [project @ 1994-09-16 13:50:20 by jwe]
jwe
parents: 527
diff changeset
45 #include "variables.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
46
5864
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
47 #define STRINGIFY(s) STRINGIFY1(s)
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
48 #define STRINGIFY1(s) #s
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
49
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
50 namespace octave
1664
913a157f1e02 [project @ 1995-12-24 07:00:22 by jwe]
jwe
parents: 1488
diff changeset
51 {
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
52 void
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
53 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
54 {
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
55 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
56 }
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
57
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
58 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
59 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
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> 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
62
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
63 for (iterator 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
64 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
65 if (*p == shl)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
66 {
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
67 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
68
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
69 removed_fcns = shl.close ();
2894
f1c5f8151397 [project @ 1997-04-28 05:39:26 by jwe]
jwe
parents: 2893
diff changeset
70
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
71 break;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
72 }
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
73 }
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
74
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
75 return removed_fcns;
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
76 }
2894
f1c5f8151397 [project @ 1997-04-28 05:39:26 by jwe]
jwe
parents: 2893
diff changeset
77
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
78 dynamic_library
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
79 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
80 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
81 dynamic_library retval;
3321
6923abb04e16 [project @ 1999-10-26 18:15:30 by jwe]
jwe
parents: 3222
diff changeset
82
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
83 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
84 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
85 if (lib.file_name () == file_name)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
86 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
87 retval = lib;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
88 break;
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 }
1664
913a157f1e02 [project @ 1995-12-24 07:00:22 by jwe]
jwe
parents: 1488
diff changeset
91
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
92 return retval;
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 void
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
96 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
97 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
98 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
99 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
100 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
101 }
1664
913a157f1e02 [project @ 1995-12-24 07:00:22 by jwe]
jwe
parents: 1488
diff changeset
102
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
103 void
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
104 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
105 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
106 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
107
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
108 // 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
109 // 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
110 // 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
111
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
112 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
113
5cb3a2bb5e1e don't use singleton for symbol_table
John W. Eaton <jwe@octave.org>
parents: 23554
diff changeset
114 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
115 }
13983
7dd7cccf0757 clean up memory allocated for singletons before exit
John W. Eaton <jwe@octave.org>
parents: 11586
diff changeset
116
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
117 void
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
118 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
119 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
120 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
121 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
122 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
123 "reloading %s clears the following functions:",
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
124 oct_file.file_name ().c_str ());
2926
66ef74ee5d9f [project @ 1997-05-05 03:20:52 by jwe]
jwe
parents: 2895
diff changeset
125
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
126 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
127
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
128 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
129 clear_function (fcn_name);
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
130 }
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
131 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
132 {
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
133 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
134
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
135 // 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
136 // 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
137 // 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
138
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
139 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
140
23554
b075b1629c26 don't use hook function in dynamic_library::dynlib_rep::close function
John W. Eaton <jwe@octave.org>
parents: 23466
diff changeset
141 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
142 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
143 }
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
144 }
2894
f1c5f8151397 [project @ 1997-04-28 05:39:26 by jwe]
jwe
parents: 2893
diff changeset
145
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
146 octave_function *
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
147 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
148 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
149 bool relative)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
150 {
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23220
diff changeset
151 octave_function *retval = nullptr;
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
152
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
153 unwind_protect frame;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
154
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
155 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
156
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
157 m_doing_load = true;
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
158
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
159 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
160
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
161 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
162 clear (oct_file);
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)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
165 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
166 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
167
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
168 if (oct_file)
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
169 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
170 }
707
d7c4962ec7a0 [project @ 1994-09-16 13:50:20 by jwe]
jwe
parents: 527
diff changeset
171
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
172 if (! oct_file)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
173 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
174
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
175 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
176
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
177 if (! function)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
178 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
179 // 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
180 // automatically at run time or configure time?
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
181
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
182 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
183 }
6323
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6221
diff changeset
184
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
185 if (function)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
186 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
187 octave_dld_fcn_getter f
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
188 = 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
189
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
190 retval = f (oct_file, relative);
6323
ea65de49e18e [project @ 2007-02-17 02:51:02 by jwe]
jwe
parents: 6221
diff changeset
191
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
192 if (! retval)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
193 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
194 fcn_name.c_str ());
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
195 }
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
196
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
197 return retval;
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 octave_function *
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
201 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
202 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
203 bool /*relative*/)
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
204 {
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23220
diff changeset
205 octave_function *retval = nullptr;
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
206
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
207 unwind_protect frame;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
208
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
209 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
210
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
211 m_doing_load = true;
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
212
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
213 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
214
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
215 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
216 clear (mex_file);
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
217
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
218 if (! mex_file)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
219 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
220 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
221
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
222 if (mex_file)
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
223 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
224 }
3325
2efa28a91e7a [project @ 1999-10-29 21:39:20 by jwe]
jwe
parents: 3321
diff changeset
225
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
226 if (! mex_file)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
227 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
228
23457
21baad6b35c4 maint: Use C++11 nullptr rather than 0 or NULL when possible.
Rik <rik@octave.org>
parents: 23220
diff changeset
229 void *function = nullptr;
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
230
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
231 bool have_fmex = false;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
232
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
233 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
234
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
235 if (! function)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
236 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
237 // 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
238 // automatically at run time or configure time?
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
239
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
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
251 if (function)
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
252 retval = new octave_mex_function (function, have_fmex, mex_file, fcn_name);
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
253 else
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
254 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
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 {
23627
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
283 bool retval = false;
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
284
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
285 // We don't need to do anything if this is called because we are in
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
286 // the process of reloading a .oct file that has changed.
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
287
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
288 if (! m_doing_load)
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
289 {
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
290 retval = shl.remove (fcn_name);
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
291
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
292 if (shl.number_of_functions_loaded () == 0)
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
293 m_loaded_shlibs.remove (shl);
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
294 }
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
295
0a6e87804cab don't use singleton pattern for dynamic_loader class
John W. Eaton <jwe@octave.org>
parents: 23599
diff changeset
296 return retval;
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
297 }
20962
3aa293be0e8d maint: Invert simple conditionals in if/else/error paradigm.
Rik <rik@octave.org>
parents: 20831
diff changeset
298
23000
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::name_mangler (const std::string& name)
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 "G" + name;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
303 }
20555
f90c8372b7ba eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents: 20428
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::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
307 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
308 return "_G" + name;
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
309 }
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
310
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_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 "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
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
317 std::string
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
318 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
319 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
320 return "_mexFunction";
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
321 }
6221
8e0f1eda266b [project @ 2007-01-03 17:23:33 by jwe]
jwe
parents: 6063
diff changeset
322
23000
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
323 std::string
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
324 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
325 {
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
326 return STRINGIFY (F77_FUNC (mexfunction, MEXFUNCTION));
f981282a3bd0 move octave_dynamic_loader into octave namespace
John W. Eaton <jwe@octave.org>
parents: 22999
diff changeset
327 }
5864
e884ab4f29ee [project @ 2006-06-22 00:57:27 by jwe]
jwe
parents: 5854
diff changeset
328 }