Mercurial > hg > octave-lyh
comparison libinterp/parse-tree/pt-array-list.cc @ 16237:70f465930546
rearrange class heirarchy for tree_cell and tree_matrix
* pt-array-list.h, pt-array-list.cc: New files.
(tree_array_list): New class.
* pt-cell.h, pt-cell.cc (tree_cell): Derive from tree_array_list.
* pt-mat.h, pt-mat.cc (tree_matrix): Derive from tree_array_list.
* oct-parse.in.yy (octave_parser::finish_array_list): New function
adapted from octave_parser::finish_matrix.
(octave_parser::finish_matrix, octave_parser::finish_cell):
Call finish_array_list to do the work.
* pt-arg-list.h: Include symtab.h.
* base-list.h: Include cstdlib.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Sat, 09 Mar 2013 18:04:51 -0500 |
parents | |
children | c40a8873c2e7 |
comparison
equal
deleted
inserted
replaced
16235:c31fd42f9000 | 16237:70f465930546 |
---|---|
1 /* | |
2 | |
3 Copyright (C) 2013 John W. Eaton | |
4 | |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
9 Free Software Foundation; either version 3 of the License, or (at your | |
10 option) any later version. | |
11 | |
12 Octave is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
18 along with Octave; see the file COPYING. If not, see | |
19 <http://www.gnu.org/licenses/>. | |
20 | |
21 */ | |
22 | |
23 #ifdef HAVE_CONFIG_H | |
24 #include <config.h> | |
25 #endif | |
26 | |
27 #include <iostream> | |
28 | |
29 #include "error.h" | |
30 #include "pt-array-list.h" | |
31 | |
32 tree_array_list::~tree_array_list (void) | |
33 { | |
34 while (! empty ()) | |
35 { | |
36 iterator p = begin (); | |
37 delete *p; | |
38 erase (p); | |
39 } | |
40 } | |
41 | |
42 bool | |
43 tree_array_list::all_elements_are_constant (void) const | |
44 { | |
45 for (const_iterator p = begin (); p != end (); p++) | |
46 { | |
47 octave_quit (); | |
48 | |
49 tree_argument_list *elt = *p; | |
50 | |
51 if (! elt->all_elements_are_constant ()) | |
52 return false; | |
53 } | |
54 | |
55 return true; | |
56 } | |
57 | |
58 bool | |
59 tree_array_list::has_magic_end (void) const | |
60 { | |
61 for (const_iterator p = begin (); p != end (); p++) | |
62 { | |
63 octave_quit (); | |
64 | |
65 tree_argument_list *elt = *p; | |
66 | |
67 if (elt && elt->has_magic_end ()) | |
68 return true; | |
69 } | |
70 | |
71 return false; | |
72 } | |
73 | |
74 void | |
75 tree_array_list::copy_base (const tree_array_list& array_list) | |
76 { | |
77 tree_expression::copy_base (array_list); | |
78 } | |
79 | |
80 void | |
81 tree_array_list::copy_base (const tree_array_list& array_list, | |
82 symbol_table::scope_id scope, | |
83 symbol_table::context_id context) | |
84 { | |
85 for (const_iterator p = array_list.begin (); p != array_list.end (); p++) | |
86 { | |
87 const tree_argument_list *elt = *p; | |
88 | |
89 append (elt ? elt->dup (scope, context) : 0); | |
90 } | |
91 | |
92 copy_base (*this); | |
93 } | |
94 | |
95 tree_expression * | |
96 tree_array_list::dup (symbol_table::scope_id scope, | |
97 symbol_table::context_id context) const | |
98 { | |
99 panic_impossible (); | |
100 return 0; | |
101 } | |
102 | |
103 void | |
104 tree_array_list::accept (tree_walker&) | |
105 { | |
106 panic_impossible (); | |
107 } | |
108 |