diff liboctave/system/child-list.h @ 24734:5d8c4cbc56d7

don't use singleton pattern for child_list * child-list.h, child-list.cc: Don't use singleton pattern. * interpreter.h, interpreter.cc (interpreter::m_child_list): New data member. (interpreter::get_child_list): New method. * interpreter-private.h, interpreter-private.cc (__get_child_list__): New function. * pager.cc, sighandlers.cc, toplev.cc: Access child_list through interpreter.
author John W. Eaton <jwe@octave.org>
date Sun, 11 Feb 2018 11:17:34 -0500
parents 194eb4bd202b
children cd25b9c5f808
line wrap: on
line diff
--- a/liboctave/system/child-list.h	Sun Feb 11 09:20:36 2018 -0500
+++ b/liboctave/system/child-list.h	Sun Feb 11 11:17:34 2018 -0500
@@ -33,9 +33,7 @@
 
 namespace octave
 {
-  class
-  OCTAVE_API
-  child
+  class OCTAVE_API child
   {
   public:
 
@@ -48,23 +46,12 @@
     typedef bool (*child_event_handler) (pid_t, int);
 
     child (pid_t id = -1, child_event_handler f = nullptr)
-      : pid (id), handler (f), have_status (0), status (0) { }
-
-    child (const child& oc)
-      : pid (oc.pid), handler (oc.handler),
-        have_status (oc.have_status), status (oc.status) { }
+      : pid (id), handler (f), have_status (0), status (0)
+    { }
 
-    child& operator = (const child& oc)
-    {
-      if (&oc != this)
-        {
-          pid = oc.pid;
-          handler = oc.handler;
-          have_status = oc.have_status;
-          status = oc.status;
-        }
-      return *this;
-    }
+    child (const child& oc) = default;
+
+    child& operator = (const child& oc) = default;
 
     ~child (void) = default;
 
@@ -86,51 +73,25 @@
   OCTAVE_API
   child_list
   {
-  protected:
+  public:
+
+    typedef base_list<child>::iterator iterator;
+    typedef base_list<child>::const_iterator const_iterator;
 
     child_list (void) { }
 
-    class child_list_rep : public base_list<child>
-    {
-    public:
+    void insert (pid_t pid, child::child_event_handler f);
 
-      void insert (pid_t pid, child::child_event_handler f);
-
-      void reap (void);
-
-      bool wait (void);
-    };
+    void remove (pid_t pid);
 
-  public:
-
-    ~child_list (void) = default;
-
-    static void insert (pid_t pid, child::child_event_handler f);
+    void reap (void);
 
-    static void reap (void);
-
-    static bool wait (void);
-
-    static void remove (pid_t pid);
+    bool wait (void);
 
   private:
 
-    static bool instance_ok (void);
-
-    static child_list_rep *instance;
-
-    static void cleanup_instance (void) { delete instance; instance = nullptr; }
+    base_list<child> m_list;
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.2, "use 'octave::child' instead")
-typedef octave::child octave_child;
-
-OCTAVE_DEPRECATED (4.2, "use 'octave::child_list' instead")
-typedef octave::child_list octave_child_list;
-
 #endif
-
-#endif