Mercurial > octave
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