diff libinterp/corefcn/pr-output.cc @ 23738:8acd390d16c9

don't use singleton for stream_list object * oct-stream.h, oct-stream.cc (stream_list): Don't use singleton pattern. Change all uses. (stream_list::stream_list): Initialize stdin, stdout, and stderr streams here. (stream_list::~stream_list): Close files here. (stream_list::m_stdin_file, stream_list::m_stdout_file, stream_list::m_stderr_file): New data members. (stream_list::stdin_file, stream_list::stdout_file, stream_list::stderr_file): New functions. * interpreter.h, interpreter.cc (interpreter::m_stream_list): New data member. (interpreter::interpreter): Initialize it. Don't call initialize_file_io. (interpreter::~interpreter): Don't call close_files. (interpreter::get_stream_list): New function. * file-io.h, file-io.cc (stdin_file, stdout_file, stderr_file, stdin_stream, stdout_stream, stderr_stream): Delete static variables. (initialize_file_io, close_files): Delete. These actions are now handled by the stream_list constructor and destructor.
author John W. Eaton <jwe@octave.org>
date Thu, 06 Jul 2017 13:34:31 -0400
parents f71c0195b19d
children 980f39c3ab90
line wrap: on
line diff
--- a/libinterp/corefcn/pr-output.cc	Thu Jul 06 12:21:42 2017 -0400
+++ b/libinterp/corefcn/pr-output.cc	Thu Jul 06 13:34:31 2017 -0400
@@ -3502,8 +3502,8 @@
   return retval;
 }
 
-DEFUN (fdisp, args, ,
-       classes: cell char double function_handle int8 int16 int32 int64 logical single struct uint8 uint16 uint32 uint64
+DEFMETHOD (fdisp, interp, args, ,
+           classes: cell char double function_handle int8 int16 int32 int64 logical single struct uint8 uint16 uint32 uint64
        doc: /* -*- texinfo -*-
 @deftypefn {} {} fdisp (@var{fid}, @var{x})
 Display the value of @var{x} on the stream @var{fid}.
@@ -3527,9 +3527,11 @@
   if (args.length () != 2)
     print_usage ();
 
-  int fid = octave::stream_list::get_file_number (args(0));
-
-  octave::stream os = octave::stream_list::lookup (fid, "fdisp");
+  octave::stream_list& streams = interp.get_stream_list ();
+
+  int fid = streams.get_file_number (args(0));
+
+  octave::stream os = streams.lookup (fid, "fdisp");
 
   std::ostream *osp = os.output_stream ();