diff libinterp/corefcn/dynamic-ld.h @ 23627:0a6e87804cab

don't use singleton pattern for dynamic_loader class * dynamic-ld.h, dynamic-ld.cc (dynamic_loader): Don't use singleton. Use Octave coding standard for member names. Change all uses. * interpreter.h, interpreter.cc (interpreter::m_dynamic_loader): New data member. (interpreter::get_dynamic_loader): New access function. * interpreter-private.h interpreter-private.cc (__get_dynamic_loader__): New function.
author John W. Eaton <jwe@octave.org>
date Fri, 16 Jun 2017 14:42:35 -0400
parents b075b1629c26
children 08036a7f3660
line wrap: on
line diff
--- a/libinterp/corefcn/dynamic-ld.h	Fri Jun 16 16:25:56 2017 -0400
+++ b/libinterp/corefcn/dynamic-ld.h	Fri Jun 16 14:42:35 2017 -0400
@@ -34,6 +34,8 @@
 
 namespace octave
 {
+  class interpreter;
+
   class
   dynamic_loader
   {
@@ -47,7 +49,13 @@
       typedef std::list<octave::dynamic_library>::iterator iterator;
       typedef std::list<octave::dynamic_library>::const_iterator const_iterator;
 
-      shlibs_list (void) : lib_list () { }
+      shlibs_list (void) : m_lib_list () { }
+
+      // No copying!
+
+      shlibs_list (const shlibs_list&) = delete;
+
+      shlibs_list& operator = (const shlibs_list&) = delete;
 
       ~shlibs_list (void) = default;
 
@@ -61,22 +69,17 @@
 
     private:
 
-      // No copying!
-
-      shlibs_list (const shlibs_list&) = delete;
-
-      shlibs_list& operator = (const shlibs_list&) = delete;
-
       // List of libraries we have loaded.
-      std::list<octave::dynamic_library> lib_list;
+      std::list<octave::dynamic_library> m_lib_list;
     };
 
-  protected:
-
-    dynamic_loader (void) : loaded_shlibs () { }
 
   public:
 
+    dynamic_loader (interpreter& interp)
+      : m_interpreter (interp), m_loaded_shlibs (), m_doing_load (false)
+    { }
+
     // No copying!
 
     dynamic_loader (const dynamic_loader&) = delete;
@@ -85,53 +88,33 @@
 
     virtual ~dynamic_loader (void) = default;
 
-    static octave_function *
+    octave_function *
     load_oct (const std::string& fcn_name,
               const std::string& file_name = "",
               bool relative = false);
 
-    static octave_function *
+    octave_function *
     load_mex (const std::string& fcn_name,
               const std::string& file_name = "",
               bool relative = false);
 
-    static bool remove_oct (const std::string& fcn_name,
+    bool remove_oct (const std::string& fcn_name,
                             octave::dynamic_library& shl);
 
-    static bool remove_mex (const std::string& fcn_name,
+    bool remove_mex (const std::string& fcn_name,
                             octave::dynamic_library& shl);
 
   private:
 
-    static dynamic_loader *instance;
-
-    static void cleanup_instance (void) { delete instance; instance = 0; }
-
-    static bool instance_ok (void);
+    void clear_function (const std::string& fcn_name);
 
-    static void do_clear_function (const std::string& fcn_name);
-
-    void do_clear (octave::dynamic_library& oct_file);
-
-    octave_function *
-    do_load_oct (const std::string& fcn_name,
-                 const std::string& file_name = "",
-                 bool relative = false);
+    void clear (octave::dynamic_library& oct_file);
 
-    octave_function *
-    do_load_mex (const std::string& fcn_name,
-                 const std::string& file_name = "",
-                 bool relative = false);
-
-    bool do_remove_oct (const std::string& fcn_name, octave::dynamic_library& shl);
+    interpreter& m_interpreter;
 
-    bool do_remove_mex (const std::string& fcn_name, octave::dynamic_library& shl);
-
-    static bool doing_load;
+    shlibs_list m_loaded_shlibs;
 
-  protected:
-
-    shlibs_list loaded_shlibs;
+    bool m_doing_load;
 
     static std::string name_mangler (const std::string& name);