Mercurial > octave-nkf
diff libinterp/parse-tree/lex.h @ 17693:efbe746f8fa8
eliminate octave_comment_buffer singleton
* lex.h (octave_base_lexer::comment_buffer): New class adapted from
octave_comment_buffer class. No longer a singleton class.
(octave_base_lexer::comment_buffer::reset): New function.
(octave_base_lexer::reset): Call comment_buf.reset.
(octave_base_lexer::comment_buf): New data member.
(octave_base_lexer::get_comment): New function.
* comment-list.h, comment-list.cc (octave_comment_buffer): Delete.
Change all uses of octave_comment_buffer to use local comment_buf
object instead.
* parse.h (octave_base_parser::make_statement): New member function.
* oct-parse.in.yy (make_statement): Delete.
Change all uses of make_statement to use the member function instead.
(safe_fclose): Don't extract and delete comment list here.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 18 Oct 2013 21:00:33 -0400 |
parents | 531473481084 |
children | f79bf671a493 |
line wrap: on
line diff
--- a/libinterp/parse-tree/lex.h Fri Oct 18 16:27:44 2013 -0700 +++ b/libinterp/parse-tree/lex.h Fri Oct 18 21:00:33 2013 -0400 @@ -493,8 +493,50 @@ bool eof; }; + // Collect comment text. + + class + comment_buffer + { + public: + + comment_buffer (void) : comment_list (0) { } + + ~comment_buffer (void) { delete comment_list; } + + void append (const std::string& s, octave_comment_elt::comment_type t) + { + if (! comment_list) + comment_list = new octave_comment_list (); + + comment_list->append (s, t); + } + + // Caller is expected to delete the returned value. + + octave_comment_list *get_comment (void) + { + octave_comment_list *retval = comment_list; + + comment_list = 0; + + return retval; + } + + void reset (void) + { + delete comment_list; + + comment_list = 0; + } + + private: + + octave_comment_list *comment_list; + }; + octave_base_lexer (void) - : lexical_feedback (), scanner (0), input_buf () + : lexical_feedback (), scanner (0), input_buf (), comment_buf () { init (); } @@ -545,6 +587,8 @@ void finish_comment (octave_comment_elt::comment_type typ); + octave_comment_list *get_comment (void) { return comment_buf.get_comment (); } + int handle_close_bracket (int bracket_type); bool looks_like_command_arg (void); @@ -583,6 +627,9 @@ // Object that reads and buffers input. input_buffer input_buf; + // Object that collects comment text. + comment_buffer comment_buf; + virtual void increment_promptflag (void) = 0; virtual void decrement_promptflag (void) = 0;