changeset 27162:eab1c573c4fc

store reference to lexer in reader instead of pointer * input.h, input.cc (base_reader::m_lexer): Use reference instead of pointer since we can always guarantee it to be valid. Update all uses. (base_reader::base_reader, terminal_reader::terminal_reader, file_reader::file_reader, input_reader::input_reader): Pass reference to lexer object, not pointer. Update all uses.
author John W. Eaton <jwe@octave.org>
date Fri, 07 Jun 2019 16:53:09 -0400
parents 7883e6e71b0a
children 47c0b11da31a
files libinterp/corefcn/input.cc libinterp/corefcn/input.h libinterp/parse-tree/lex.h
diffstat 3 files changed, 17 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/input.cc	Tue Jun 04 13:15:25 2019 +0000
+++ b/libinterp/corefcn/input.cc	Fri Jun 07 16:53:09 2019 -0400
@@ -782,17 +782,17 @@
 
   bool base_reader::reading_fcn_file (void) const
   {
-    return m_lexer ? m_lexer->m_reading_fcn_file : false;
+    return m_lexer.m_reading_fcn_file;
   }
 
   bool base_reader::reading_classdef_file (void) const
   {
-    return m_lexer ? m_lexer->m_reading_classdef_file : false;
+    return m_lexer.m_reading_classdef_file;
   }
 
   bool base_reader::reading_script_file (void) const
   {
-    return m_lexer ? m_lexer->m_reading_script_file : false;
+    return m_lexer.m_reading_script_file;
   }
 
   class
@@ -800,7 +800,7 @@
   {
   public:
 
-    terminal_reader (base_lexer *lxr = nullptr)
+    terminal_reader (base_lexer& lxr)
       : base_reader (lxr)
     { }
 
@@ -820,7 +820,7 @@
   {
   public:
 
-    file_reader (FILE *f_arg, base_lexer *lxr = nullptr)
+    file_reader (FILE *f_arg, base_lexer& lxr)
       : base_reader (lxr), m_file (f_arg) { }
 
     std::string get_input (bool& eof);
@@ -841,7 +841,7 @@
   {
   public:
 
-    eval_string_reader (const std::string& str, base_lexer *lxr = nullptr)
+    eval_string_reader (const std::string& str, base_lexer& lxr)
       : base_reader (lxr), m_eval_string (str)
     { }
 
@@ -858,15 +858,15 @@
     static const std::string s_in_src;
   };
 
-  input_reader::input_reader (base_lexer *lxr)
+  input_reader::input_reader (base_lexer& lxr)
     : m_rep (new terminal_reader (lxr))
   { }
 
-  input_reader::input_reader (FILE *file, base_lexer *lxr)
+  input_reader::input_reader (FILE *file, base_lexer& lxr)
     : m_rep (new file_reader (file, lxr))
   { }
 
-  input_reader::input_reader (const std::string& str, base_lexer *lxr)
+  input_reader::input_reader (const std::string& str, base_lexer& lxr)
     : m_rep (new eval_string_reader (str, lxr))
   { }
 
--- a/libinterp/corefcn/input.h	Tue Jun 04 13:15:25 2019 +0000
+++ b/libinterp/corefcn/input.h	Fri Jun 07 16:53:09 2019 -0400
@@ -198,7 +198,7 @@
 
     friend class input_reader;
 
-    base_reader (base_lexer *lxr)
+    base_reader (base_lexer& lxr)
       : m_count (1), m_pflag (0), m_lexer (lxr)
     { }
 
@@ -247,7 +247,7 @@
 
     int m_pflag;
 
-    base_lexer *m_lexer;
+    base_lexer& m_lexer;
 
     static const std::string s_in_src;
   };
@@ -256,11 +256,11 @@
   {
   public:
 
-    input_reader (base_lexer *lxr = nullptr);
+    input_reader (base_lexer& lxr);
 
-    input_reader (FILE *file, base_lexer *lxr = nullptr);
+    input_reader (FILE *file, base_lexer& lxr);
 
-    input_reader (const std::string& str, base_lexer *lxr = nullptr);
+    input_reader (const std::string& str, base_lexer& lxr);
 
     input_reader (const input_reader& ir)
     {
--- a/libinterp/parse-tree/lex.h	Tue Jun 04 13:15:25 2019 +0000
+++ b/libinterp/parse-tree/lex.h	Fri Jun 07 16:53:09 2019 -0400
@@ -773,15 +773,15 @@
   public:
 
     lexer (interpreter& interp)
-      : base_lexer (interp), m_reader (this)
+      : base_lexer (interp), m_reader (*this)
     { }
 
     lexer (FILE *file, interpreter& interp)
-      : base_lexer (interp), m_reader (file, this)
+      : base_lexer (interp), m_reader (file, *this)
     { }
 
     lexer (const std::string& eval_string, interpreter& interp)
-      : base_lexer (interp), m_reader (eval_string, this)
+      : base_lexer (interp), m_reader (eval_string, *this)
     { }
 
     // No copying!