Mercurial > octave
annotate libinterp/parse-tree/pt-tm-const.h @ 29358:0a5b15007766 stable
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2021.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 10 Feb 2021 09:52:15 -0500 |
parents | bd51beb6205e |
children | aef11bb4e6d1 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
29358
0a5b15007766
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
3 // Copyright (C) 1996-2021 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
25 |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
26 #if ! defined (octave_pt_tm_const_h) |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
27 #define octave_pt_tm_const_h 1 |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
28 |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
29 #include "octave-config.h" |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
30 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
31 #include <list> |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
32 #include <memory> |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
33 #include <string> |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
34 |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
35 #include "Array.h" |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
36 #include "Sparse.h" |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
37 |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
38 #include "data.h" |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
39 #include "dim-vector.h" |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
40 #include "oct-map.h" |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
41 #include "ov.h" |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
42 #include "ovl.h" |
23442
53f5f8231c37
allow most header files to be compiled separately
John W. Eaton <jwe@octave.org>
parents:
23435
diff
changeset
|
43 #include "pt-arg-list.h" |
26325
4877f77d5e1d
add necessary includes and forward decls in public header files (bug #55277)
Mike Miller <mtmiller@octave.org>
parents:
25393
diff
changeset
|
44 #include "pt-mat.h" |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
45 |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
46 namespace octave |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
47 { |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
48 class tree_evaluator; |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
49 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
50 // Evaluate tree_matrix objects and convert them to octave_value |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
51 // arrays (full and sparse numeric, char, cell, struct, class and |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
52 // anything else that works like an array). Use a separate class |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
53 // (tm_const) and pass the evaluator object to it instead of doing |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
54 // all this work in tree_evaluator::visit_matrix because the job is |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
55 // fairly large and requires extra data (stored in the tm_info |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
56 // class) for each row and for the overall array. |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
57 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
58 // Evaluate all elements of the array, recording info about each |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
59 // row, then create summary info for the full array. Compute the |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
60 // result type and dimension first before copying values. |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
61 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
62 // FIXME: Handle overloading of horzcat and vertcat for for built-in |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
63 // types. |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
64 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
65 // Summary info about the current row or matrix. |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
66 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
67 class tm_info |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
68 { |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
69 public: |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
70 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
71 tm_info (bool obj_is_empty) |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
72 : m_dv (0, 0), m_all_strings (true), m_all_sq_strings (true), |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
73 m_all_dq_strings (true), m_some_strings (false), |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
74 m_all_real (true), m_all_complex (true), m_all_empty (true), |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
75 m_any_cell (false), m_any_sparse (false), |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
76 m_any_class (false), m_all_1x1 (! obj_is_empty), |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
77 m_first_elem_is_struct (false), m_class_name () |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
78 { } |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
79 |
24846
7620f1f5290d
use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
80 dim_vector dims (void) const { return m_dv; } |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
81 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
82 octave_idx_type rows (void) const { return m_dv(0); } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
83 octave_idx_type cols (void) const { return m_dv(1); } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
84 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
85 bool all_strings_p (void) const { return m_all_strings; } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
86 bool all_sq_strings_p (void) const { return m_all_sq_strings; } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
87 bool all_dq_strings_p (void) const { return m_all_dq_strings; } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
88 bool some_strings_p (void) const { return m_some_strings; } |
24846
7620f1f5290d
use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
89 bool all_real_p (void) const { return m_all_real; } |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
90 bool all_complex_p (void) const { return m_all_complex; } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
91 bool all_empty_p (void) const { return m_all_empty; } |
24846
7620f1f5290d
use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
92 bool any_cell_p (void) const { return m_any_cell; } |
7620f1f5290d
use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
93 bool any_sparse_p (void) const { return m_any_sparse; } |
7620f1f5290d
use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
94 bool any_class_p (void) const { return m_any_class; } |
7620f1f5290d
use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
95 bool all_1x1_p (void) const { return m_all_1x1; } |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
96 bool first_elem_struct_p (void) const { return m_first_elem_is_struct; } |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
97 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
98 std::string class_name (void) const { return m_class_name; } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
99 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
100 protected: |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
101 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
102 // Size of this row or matrix after evaluation. |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
103 dim_vector m_dv; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
104 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
105 // Are all elements character strings? |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
106 bool m_all_strings; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
107 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
108 // Are all elements double-quoted character strings? |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
109 bool m_all_sq_strings; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
110 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
111 // Are all elements single-quoted character strings? |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
112 bool m_all_dq_strings; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
113 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
114 // Are any elements character strings? |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
115 bool m_some_strings; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
116 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
117 // Are all elements real valued? |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
118 bool m_all_real; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
119 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
120 // Are all elements complex valued? |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
121 bool m_all_complex; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
122 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
123 // Are all elements empty? |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
124 bool m_all_empty; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
125 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
126 // Are any elements cells? |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
127 bool m_any_cell; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
128 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
129 // Are any elements sparse arrays? |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
130 bool m_any_sparse; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
131 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
132 // Are any elements sparse class objects? |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
133 bool m_any_class; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
134 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
135 // Do all elements have dimensions 1x1? |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
136 bool m_all_1x1; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
137 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
138 // Is the first element a struct? |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
139 bool m_first_elem_is_struct; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
140 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
141 // Class name of result. |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
142 std::string m_class_name; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
143 }; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
144 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
145 class tm_row_const : public tm_info |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
146 { |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
147 public: |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
148 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
149 typedef std::list<octave_value>::iterator iterator; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
150 typedef std::list<octave_value>::const_iterator const_iterator; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
151 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
152 tm_row_const (void) = delete; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
153 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
154 tm_row_const (const tree_argument_list& row, tree_evaluator& tw) |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
155 : tm_info (row.empty ()), m_values () |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
156 { |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
157 init (row, tw); |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
158 } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
159 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
160 tm_row_const (const tm_row_const&) = default; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
161 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
162 tm_row_const& operator = (const tm_row_const&) = delete; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
163 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
164 ~tm_row_const (void) = default; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
165 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
166 iterator begin (void) { return m_values.begin (); } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
167 const_iterator begin (void) const { return m_values.begin (); } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
168 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
169 iterator end (void) { return m_values.end (); } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
170 const_iterator end (void) const { return m_values.end (); } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
171 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
172 bool empty (void) const { return m_values.empty (); } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
173 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
174 size_t length (void) const { return m_values.size (); } |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
175 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
176 void cellify (void); |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
177 |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
178 private: |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
179 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
180 std::list<octave_value> m_values; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
181 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
182 void init_element (const octave_value&, bool&); |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
183 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
184 void init (const tree_argument_list&, tree_evaluator& tw); |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
185 }; |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
186 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
187 class tm_const : public tm_info |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
188 { |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
189 public: |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
190 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
191 typedef std::list<tm_row_const>::iterator iterator; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
192 typedef std::list<tm_row_const>::const_iterator const_iterator; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
193 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
194 tm_const (void) = delete; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
195 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
196 tm_const (const tree_matrix& tm, tree_evaluator& tw) |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
197 : tm_info (tm.empty ()), m_evaluator (tw), m_tm_rows () |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
198 { |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
199 init (tm); |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
200 } |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
201 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
202 // No copying! |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
203 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
204 tm_const (const tm_const&) = delete; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
205 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
206 tm_const& operator = (const tm_const&) = delete; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
207 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
208 ~tm_const (void) = default; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
209 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
210 octave_value concat (char string_fill_char) const; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
211 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
212 private: |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
213 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
214 tree_evaluator& m_evaluator; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
215 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
216 // The list of lists of octave_value objects that contain the |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
217 // values of elements in each row of the tree_matrix object we are |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
218 // evaluating. |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
219 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
220 std::list<tm_row_const> m_tm_rows; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
221 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
222 void init (const tree_matrix& tm); |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
223 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
224 octave_value char_array_concat (char string_fill_char) const; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
225 |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
226 octave_value class_concat (void) const; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
227 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
228 octave_value generic_concat (void) const; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
229 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
230 template <typename TYPE> |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
231 void array_concat_internal (TYPE& result) const; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
232 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
233 template <typename TYPE> |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
234 TYPE array_concat (void) const; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
235 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
236 template <typename TYPE> |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
237 TYPE sparse_array_concat (void) const; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
238 |
25393
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
239 template <typename MAP> |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
240 octave_map map_concat (void) const; |
b860a7e526cf
refactor evaluation of tree_matrix object
John W. Eaton <jwe@octave.org>
parents:
25383
diff
changeset
|
241 }; |
23435
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
242 } |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
243 |
c452180ab672
begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
244 #endif |