Mercurial > octave
diff libinterp/corefcn/dynamic-ld.h @ 22999:f4781639f847
convert octave_shlib_list from singleton to ordinary object
* dynamic-ld.h, dynamic-ld.cc
(octave_dynamic_loader::loaded_shlibs_list): Rename from
octave_shlib_list. Convert from singleton to ordinary object. Change
all uses.
(octave_dynamic_loader::loaded_shlibs): New data member. The
octave_dynamic_loader object now owns the list of loaded shared
libraries.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 04 Jan 2017 23:09:46 -0500 |
parents | f75d289645ec |
children | f981282a3bd0 |
line wrap: on
line diff
--- a/libinterp/corefcn/dynamic-ld.h Thu Jan 05 11:06:27 2017 +0100 +++ b/libinterp/corefcn/dynamic-ld.h Wed Jan 04 23:09:46 2017 -0500 @@ -25,6 +25,7 @@ #include "octave-config.h" +#include <list> #include <string> #include "oct-shlib.h" @@ -34,9 +35,44 @@ class octave_dynamic_loader { +private: + + class + loaded_shlibs_list + { + public: + + typedef std::list<octave::dynamic_library>::iterator iterator; + typedef std::list<octave::dynamic_library>::const_iterator const_iterator; + + loaded_shlibs_list (void) : lib_list () { } + + ~loaded_shlibs_list (void) = default; + + void append (const octave::dynamic_library& shl); + + void remove (octave::dynamic_library& shl, + octave::dynamic_library::close_hook cl_hook = 0); + + octave::dynamic_library find_file (const std::string& file_name) const; + + void display (void) const; + + private: + + // No copying! + + loaded_shlibs_list (const loaded_shlibs_list&) = delete; + + loaded_shlibs_list& operator = (const loaded_shlibs_list&) = delete; + + // List of libraries we have loaded. + std::list<octave::dynamic_library> lib_list; + }; + protected: - octave_dynamic_loader (void) { } + octave_dynamic_loader (void) : loaded_shlibs () { } public: @@ -72,6 +108,8 @@ static bool instance_ok (void); + void do_clear (octave::dynamic_library& oct_file); + octave_function * do_load_oct (const std::string& fcn_name, const std::string& file_name = "", @@ -90,6 +128,8 @@ protected: + loaded_shlibs_list loaded_shlibs; + static std::string name_mangler (const std::string& name); static std::string name_uscore_mangler (const std::string& name);