Mercurial > hg > octave-nkf
comparison libinterp/corefcn/oct-obj.h @ 16892:68fc671a9339
maint: Collapse interpfcn and interpfcn-core directories into corefcn directory.
* libgui/src/module.mk: Remove -I references to interp-core, interpfcn, add
reference to corefcn.
* libinterp/Makefile.am: Remove -I references to interp-core, interpfcn, add
reference to corefcn.
* libinterp/corefcn/module.mk: Add files from interp-core, interpfcn to
build system. Copy over special rules from module.mk files in interp-core
andd interpfcn.
* src/Makefile.am: Replace references to interp-core, interpfcn with those
to corefcn.
* libinterp/corefcn/Cell.cc, libinterp/corefcn/Cell.h,
libinterp/corefcn/action-container.h, libinterp/corefcn/c-file-ptr-stream.cc,
libinterp/corefcn/c-file-ptr-stream.h, libinterp/corefcn/comment-list.cc,
libinterp/corefcn/comment-list.h, libinterp/corefcn/cutils.c,
libinterp/corefcn/cutils.h, libinterp/corefcn/data.cc,
libinterp/corefcn/data.h, libinterp/corefcn/debug.cc,
libinterp/corefcn/debug.h, libinterp/corefcn/defaults.cc,
libinterp/corefcn/defaults.in.h, libinterp/corefcn/defun-dld.h,
libinterp/corefcn/defun-int.h, libinterp/corefcn/defun.cc,
libinterp/corefcn/defun.h, libinterp/corefcn/dirfns.cc,
libinterp/corefcn/dirfns.h, libinterp/corefcn/display.cc,
libinterp/corefcn/display.h, libinterp/corefcn/dynamic-ld.cc,
libinterp/corefcn/dynamic-ld.h, libinterp/corefcn/error.cc,
libinterp/corefcn/error.h, libinterp/corefcn/event-queue.h,
libinterp/corefcn/file-io.cc, libinterp/corefcn/file-io.h,
libinterp/corefcn/gl-render.cc, libinterp/corefcn/gl-render.h,
libinterp/corefcn/gl2ps-renderer.cc, libinterp/corefcn/gl2ps-renderer.h,
libinterp/corefcn/gl2ps.c, libinterp/corefcn/gl2ps.h,
libinterp/corefcn/graphics.cc, libinterp/corefcn/graphics.in.h,
libinterp/corefcn/gripes.cc, libinterp/corefcn/gripes.h,
libinterp/corefcn/help.cc, libinterp/corefcn/help.h,
libinterp/corefcn/hook-fcn.cc, libinterp/corefcn/hook-fcn.h,
libinterp/corefcn/input.cc, libinterp/corefcn/input.h,
libinterp/corefcn/jit-ir.cc, libinterp/corefcn/jit-ir.h,
libinterp/corefcn/jit-typeinfo.cc, libinterp/corefcn/jit-typeinfo.h,
libinterp/corefcn/jit-util.cc, libinterp/corefcn/jit-util.h,
libinterp/corefcn/load-path.cc, libinterp/corefcn/load-path.h,
libinterp/corefcn/load-save.cc, libinterp/corefcn/load-save.h,
libinterp/corefcn/ls-ascii-helper.cc, libinterp/corefcn/ls-ascii-helper.h,
libinterp/corefcn/ls-hdf5.cc, libinterp/corefcn/ls-hdf5.h,
libinterp/corefcn/ls-mat-ascii.cc, libinterp/corefcn/ls-mat-ascii.h,
libinterp/corefcn/ls-mat4.cc, libinterp/corefcn/ls-mat4.h,
libinterp/corefcn/ls-mat5.cc, libinterp/corefcn/ls-mat5.h,
libinterp/corefcn/ls-oct-ascii.cc, libinterp/corefcn/ls-oct-ascii.h,
libinterp/corefcn/ls-oct-binary.cc, libinterp/corefcn/ls-oct-binary.h,
libinterp/corefcn/ls-utils.cc, libinterp/corefcn/ls-utils.h,
libinterp/corefcn/matherr.c, libinterp/corefcn/mex.cc, libinterp/corefcn/mex.h,
libinterp/corefcn/mexproto.h, libinterp/corefcn/mxarray.in.h,
libinterp/corefcn/oct-errno.h, libinterp/corefcn/oct-errno.in.cc,
libinterp/corefcn/oct-fstrm.cc, libinterp/corefcn/oct-fstrm.h,
libinterp/corefcn/oct-hdf5.h, libinterp/corefcn/oct-hist.cc,
libinterp/corefcn/oct-hist.h, libinterp/corefcn/oct-iostrm.cc,
libinterp/corefcn/oct-iostrm.h, libinterp/corefcn/oct-lvalue.cc,
libinterp/corefcn/oct-lvalue.h, libinterp/corefcn/oct-map.cc,
libinterp/corefcn/oct-map.h, libinterp/corefcn/oct-obj.cc,
libinterp/corefcn/oct-obj.h, libinterp/corefcn/oct-prcstrm.cc,
libinterp/corefcn/oct-prcstrm.h, libinterp/corefcn/oct-procbuf.cc,
libinterp/corefcn/oct-procbuf.h, libinterp/corefcn/oct-stdstrm.h,
libinterp/corefcn/oct-stream.cc, libinterp/corefcn/oct-stream.h,
libinterp/corefcn/oct-strstrm.cc, libinterp/corefcn/oct-strstrm.h,
libinterp/corefcn/oct.h, libinterp/corefcn/octave-link.cc,
libinterp/corefcn/octave-link.h, libinterp/corefcn/pager.cc,
libinterp/corefcn/pager.h, libinterp/corefcn/pr-output.cc,
libinterp/corefcn/pr-output.h, libinterp/corefcn/procstream.cc,
libinterp/corefcn/procstream.h, libinterp/corefcn/profiler.cc,
libinterp/corefcn/profiler.h, libinterp/corefcn/pt-jit.cc,
libinterp/corefcn/pt-jit.h, libinterp/corefcn/sighandlers.cc,
libinterp/corefcn/sighandlers.h, libinterp/corefcn/siglist.c,
libinterp/corefcn/siglist.h, libinterp/corefcn/sparse-xdiv.cc,
libinterp/corefcn/sparse-xdiv.h, libinterp/corefcn/sparse-xpow.cc,
libinterp/corefcn/sparse-xpow.h, libinterp/corefcn/symtab.cc,
libinterp/corefcn/symtab.h, libinterp/corefcn/sysdep.cc,
libinterp/corefcn/sysdep.h, libinterp/corefcn/toplev.cc,
libinterp/corefcn/toplev.h, libinterp/corefcn/txt-eng-ft.cc,
libinterp/corefcn/txt-eng-ft.h, libinterp/corefcn/txt-eng.h,
libinterp/corefcn/unwind-prot.cc, libinterp/corefcn/unwind-prot.h,
libinterp/corefcn/utils.cc, libinterp/corefcn/utils.h,
libinterp/corefcn/variables.cc, libinterp/corefcn/variables.h,
libinterp/corefcn/workspace-element.h, libinterp/corefcn/xdiv.cc,
libinterp/corefcn/xdiv.h, libinterp/corefcn/xgl2ps.c,
libinterp/corefcn/xnorm.cc, libinterp/corefcn/xnorm.h,
libinterp/corefcn/xpow.cc, libinterp/corefcn/xpow.h,
libinterp/corefcn/zfstream.cc, libinterp/corefcn/zfstream.h:
Files moved from interp-core and interpfcn directories.
* libinterp/interp-core/Cell.cc, libinterp/interp-core/Cell.h,
libinterp/interp-core/action-container.h,
libinterp/interp-core/c-file-ptr-stream.cc,
libinterp/interp-core/c-file-ptr-stream.h,
libinterp/interp-core/comment-list.cc, libinterp/interp-core/comment-list.h,
libinterp/interp-core/cutils.c, libinterp/interp-core/cutils.h,
libinterp/interp-core/defun-dld.h, libinterp/interp-core/defun-int.h,
libinterp/interp-core/display.cc, libinterp/interp-core/display.h,
libinterp/interp-core/dynamic-ld.cc, libinterp/interp-core/dynamic-ld.h,
libinterp/interp-core/event-queue.h, libinterp/interp-core/gl-render.cc,
libinterp/interp-core/gl-render.h, libinterp/interp-core/gl2ps-renderer.cc,
libinterp/interp-core/gl2ps-renderer.h, libinterp/interp-core/gl2ps.c,
libinterp/interp-core/gl2ps.h, libinterp/interp-core/gripes.cc,
libinterp/interp-core/gripes.h, libinterp/interp-core/jit-ir.cc,
libinterp/interp-core/jit-ir.h, libinterp/interp-core/jit-typeinfo.cc,
libinterp/interp-core/jit-typeinfo.h, libinterp/interp-core/jit-util.cc,
libinterp/interp-core/jit-util.h, libinterp/interp-core/ls-ascii-helper.cc,
libinterp/interp-core/ls-ascii-helper.h, libinterp/interp-core/ls-hdf5.cc,
libinterp/interp-core/ls-hdf5.h, libinterp/interp-core/ls-mat-ascii.cc,
libinterp/interp-core/ls-mat-ascii.h, libinterp/interp-core/ls-mat4.cc,
libinterp/interp-core/ls-mat4.h, libinterp/interp-core/ls-mat5.cc,
libinterp/interp-core/ls-mat5.h, libinterp/interp-core/ls-oct-binary.cc,
libinterp/interp-core/ls-oct-binary.h, libinterp/interp-core/ls-utils.cc,
libinterp/interp-core/ls-utils.h, libinterp/interp-core/matherr.c,
libinterp/interp-core/mex.cc, libinterp/interp-core/mex.h,
libinterp/interp-core/mexproto.h, libinterp/interp-core/module.mk,
libinterp/interp-core/mxarray.in.h, libinterp/interp-core/oct-errno.h,
libinterp/interp-core/oct-errno.in.cc, libinterp/interp-core/oct-fstrm.cc,
libinterp/interp-core/oct-fstrm.h, libinterp/interp-core/oct-hdf5.h,
libinterp/interp-core/oct-iostrm.cc, libinterp/interp-core/oct-iostrm.h,
libinterp/interp-core/oct-lvalue.cc, libinterp/interp-core/oct-lvalue.h,
libinterp/interp-core/oct-map.cc, libinterp/interp-core/oct-map.h,
libinterp/interp-core/oct-obj.cc, libinterp/interp-core/oct-obj.h,
libinterp/interp-core/oct-prcstrm.cc, libinterp/interp-core/oct-prcstrm.h,
libinterp/interp-core/oct-procbuf.cc, libinterp/interp-core/oct-procbuf.h,
libinterp/interp-core/oct-stdstrm.h, libinterp/interp-core/oct-stream.cc,
libinterp/interp-core/oct-stream.h, libinterp/interp-core/oct-strstrm.cc,
libinterp/interp-core/oct-strstrm.h, libinterp/interp-core/oct.h,
libinterp/interp-core/procstream.cc, libinterp/interp-core/procstream.h,
libinterp/interp-core/pt-jit.cc, libinterp/interp-core/pt-jit.h,
libinterp/interp-core/siglist.c, libinterp/interp-core/siglist.h,
libinterp/interp-core/sparse-xdiv.cc, libinterp/interp-core/sparse-xdiv.h,
libinterp/interp-core/sparse-xpow.cc, libinterp/interp-core/sparse-xpow.h,
libinterp/interp-core/txt-eng-ft.cc, libinterp/interp-core/txt-eng-ft.h,
libinterp/interp-core/txt-eng.h, libinterp/interp-core/unwind-prot.cc,
libinterp/interp-core/unwind-prot.h, libinterp/interp-core/xdiv.cc,
libinterp/interp-core/xdiv.h, libinterp/interp-core/xgl2ps.c,
libinterp/interp-core/xnorm.cc, libinterp/interp-core/xnorm.h,
libinterp/interp-core/xpow.cc, libinterp/interp-core/xpow.h,
libinterp/interp-core/zfstream.cc, libinterp/interp-core/zfstream.h,
libinterp/interpfcn/data.cc, libinterp/interpfcn/data.h,
libinterp/interpfcn/debug.cc, libinterp/interpfcn/debug.h,
libinterp/interpfcn/defaults.cc, libinterp/interpfcn/defaults.in.h,
libinterp/interpfcn/defun.cc, libinterp/interpfcn/defun.h,
libinterp/interpfcn/dirfns.cc, libinterp/interpfcn/dirfns.h,
libinterp/interpfcn/error.cc, libinterp/interpfcn/error.h,
libinterp/interpfcn/file-io.cc, libinterp/interpfcn/file-io.h,
libinterp/interpfcn/graphics.cc, libinterp/interpfcn/graphics.in.h,
libinterp/interpfcn/help.cc, libinterp/interpfcn/help.h,
libinterp/interpfcn/hook-fcn.cc, libinterp/interpfcn/hook-fcn.h,
libinterp/interpfcn/input.cc, libinterp/interpfcn/input.h,
libinterp/interpfcn/load-path.cc, libinterp/interpfcn/load-path.h,
libinterp/interpfcn/load-save.cc, libinterp/interpfcn/load-save.h,
libinterp/interpfcn/ls-oct-ascii.cc, libinterp/interpfcn/ls-oct-ascii.h,
libinterp/interpfcn/module.mk, libinterp/interpfcn/oct-hist.cc,
libinterp/interpfcn/oct-hist.h, libinterp/interpfcn/octave-link.cc,
libinterp/interpfcn/octave-link.h, libinterp/interpfcn/pager.cc,
libinterp/interpfcn/pager.h, libinterp/interpfcn/pr-output.cc,
libinterp/interpfcn/pr-output.h, libinterp/interpfcn/profiler.cc,
libinterp/interpfcn/profiler.h, libinterp/interpfcn/sighandlers.cc,
libinterp/interpfcn/sighandlers.h, libinterp/interpfcn/symtab.cc,
libinterp/interpfcn/symtab.h, libinterp/interpfcn/sysdep.cc,
libinterp/interpfcn/sysdep.h, libinterp/interpfcn/toplev.cc,
libinterp/interpfcn/toplev.h, libinterp/interpfcn/utils.cc,
libinterp/interpfcn/utils.h, libinterp/interpfcn/variables.cc,
libinterp/interpfcn/variables.h, libinterp/interpfcn/workspace-element.h:
deleted files.
author | Rik <rik@octave.org> |
---|---|
date | Wed, 03 Jul 2013 17:43:48 -0700 |
parents | libinterp/interp-core/oct-obj.h@1249a615c91b |
children | d63878346099 |
comparison
equal
deleted
inserted
replaced
16891:486c3e2731ff | 16892:68fc671a9339 |
---|---|
1 /* | |
2 | |
3 Copyright (C) 1994-2012 John W. Eaton | |
4 Copyright (C) 2009 VZLU Prague | |
5 | |
6 This file is part of Octave. | |
7 | |
8 Octave is free software; you can redistribute it and/or modify it | |
9 under the terms of the GNU General Public License as published by the | |
10 Free Software Foundation; either version 3 of the License, or (at your | |
11 option) any later version. | |
12 | |
13 Octave is distributed in the hope that it will be useful, but WITHOUT | |
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
19 along with Octave; see the file COPYING. If not, see | |
20 <http://www.gnu.org/licenses/>. | |
21 | |
22 */ | |
23 | |
24 #if !defined (octave_oct_obj_h) | |
25 #define octave_oct_obj_h 1 | |
26 | |
27 #include <string> | |
28 #include <vector> | |
29 | |
30 #include "oct-alloc.h" | |
31 #include "str-vec.h" | |
32 #include "Array.h" | |
33 | |
34 #include "ov.h" | |
35 #include "Cell.h" | |
36 | |
37 class | |
38 OCTINTERP_API | |
39 octave_value_list | |
40 { | |
41 public: | |
42 | |
43 octave_value_list (void) | |
44 : data (), names () { } | |
45 | |
46 explicit octave_value_list (octave_idx_type n) | |
47 : data (dim_vector (1, n)), names () { } | |
48 | |
49 octave_value_list (octave_idx_type n, const octave_value& val) | |
50 : data (dim_vector (1, n), val), names () { } | |
51 | |
52 octave_value_list (const octave_value& tc) | |
53 : data (dim_vector (1, 1), tc), names () { } | |
54 | |
55 octave_value_list (const Array<octave_value>& d) | |
56 : data (d.as_row ()), names () { } | |
57 | |
58 octave_value_list (const Cell& tc) | |
59 : data (tc.as_row ()), names () { } | |
60 | |
61 octave_value_list (const octave_value_list& obj) | |
62 : data (obj.data), names (obj.names) { } | |
63 | |
64 // Concatenation constructor. | |
65 octave_value_list (const std::list<octave_value_list>&); | |
66 | |
67 ~octave_value_list (void) { } | |
68 | |
69 octave_value_list& operator = (const octave_value_list& obj) | |
70 { | |
71 if (this != &obj) | |
72 { | |
73 data = obj.data; | |
74 names = obj.names; | |
75 } | |
76 | |
77 return *this; | |
78 } | |
79 | |
80 Array<octave_value> array_value (void) const { return data; } | |
81 | |
82 Cell cell_value (void) const { return array_value (); } | |
83 | |
84 // Assignment will resize on range errors. | |
85 | |
86 octave_value& operator () (octave_idx_type n) { return elem (n); } | |
87 | |
88 const octave_value& operator () (octave_idx_type n) const { return elem (n); } | |
89 | |
90 octave_idx_type length (void) const { return data.length (); } | |
91 | |
92 bool empty (void) const { return length () == 0; } | |
93 | |
94 void resize (octave_idx_type n, const octave_value& rfv = octave_value ()) | |
95 { | |
96 data.resize (dim_vector (1, n), rfv); | |
97 } | |
98 | |
99 octave_value_list& prepend (const octave_value& val); | |
100 | |
101 octave_value_list& append (const octave_value& val); | |
102 | |
103 octave_value_list& append (const octave_value_list& lst); | |
104 | |
105 octave_value_list& reverse (void); | |
106 | |
107 octave_value_list | |
108 slice (octave_idx_type offset, octave_idx_type len, bool tags = false) const | |
109 { | |
110 octave_value_list retval (data.linear_slice (offset, offset + len)); | |
111 if (tags && len > 0 && names.length () > 0) | |
112 retval.names = names.linear_slice (offset, std::min (len, names.length ())); | |
113 | |
114 return retval; | |
115 } | |
116 | |
117 octave_value_list | |
118 splice (octave_idx_type offset, octave_idx_type len, | |
119 const octave_value_list& lst = octave_value_list ()) const; | |
120 | |
121 bool all_strings_p (void) const; | |
122 | |
123 bool all_scalars (void) const; | |
124 | |
125 bool any_cell (void) const; | |
126 | |
127 bool has_magic_colon (void) const; | |
128 | |
129 string_vector make_argv (const std::string& = std::string ()) const; | |
130 | |
131 void stash_name_tags (const string_vector& nm) { names = nm; } | |
132 | |
133 string_vector name_tags (void) const { return names; } | |
134 | |
135 void make_storable_values (void); | |
136 | |
137 octave_value& xelem (octave_idx_type i) | |
138 { | |
139 return data.xelem (i); | |
140 } | |
141 | |
142 void clear (void) | |
143 { | |
144 data.clear (); | |
145 } | |
146 | |
147 private: | |
148 | |
149 Array<octave_value> data; | |
150 | |
151 // This list of strings can be used to tag each element of data with | |
152 // a name. By default, it is empty. | |
153 string_vector names; | |
154 | |
155 octave_value& elem (octave_idx_type n) | |
156 { | |
157 if (n >= length ()) | |
158 resize (n + 1); | |
159 | |
160 return data(n); | |
161 } | |
162 | |
163 const octave_value& elem (octave_idx_type n) const | |
164 { return data(n); } | |
165 | |
166 DECLARE_OCTAVE_ALLOCATOR | |
167 }; | |
168 | |
169 // Make it easy to build argument lists for built-in functions or for | |
170 // returning values. | |
171 | |
172 inline octave_value_list | |
173 ovl (const octave_value& a0) | |
174 { | |
175 octave_value_list retval; | |
176 retval(0) = a0; | |
177 return retval; | |
178 } | |
179 | |
180 inline octave_value_list | |
181 ovl (const octave_value& a0, const octave_value& a1) | |
182 { | |
183 octave_value_list retval; | |
184 retval(1) = a1; | |
185 retval(0) = a0; | |
186 return retval; | |
187 } | |
188 | |
189 inline octave_value_list | |
190 ovl (const octave_value& a0, const octave_value& a1, | |
191 const octave_value& a2) | |
192 { | |
193 octave_value_list retval; | |
194 retval(2) = a2; | |
195 retval(1) = a1; | |
196 retval(0) = a0; | |
197 return retval; | |
198 } | |
199 | |
200 inline octave_value_list | |
201 ovl (const octave_value& a0, const octave_value& a1, | |
202 const octave_value& a2, const octave_value& a3) | |
203 { | |
204 octave_value_list retval; | |
205 retval(3) = a3; | |
206 retval(2) = a2; | |
207 retval(1) = a1; | |
208 retval(0) = a0; | |
209 return retval; | |
210 } | |
211 | |
212 inline octave_value_list | |
213 ovl (const octave_value& a0, const octave_value& a1, | |
214 const octave_value& a2, const octave_value& a3, | |
215 const octave_value& a4) | |
216 { | |
217 octave_value_list retval; | |
218 retval(4) = a4; | |
219 retval(3) = a3; | |
220 retval(2) = a2; | |
221 retval(1) = a1; | |
222 retval(0) = a0; | |
223 return retval; | |
224 } | |
225 | |
226 inline octave_value_list | |
227 ovl (const octave_value& a0, const octave_value& a1, | |
228 const octave_value& a2, const octave_value& a3, | |
229 const octave_value& a4, const octave_value& a5) | |
230 { | |
231 octave_value_list retval; | |
232 retval(5) = a5; | |
233 retval(4) = a4; | |
234 retval(3) = a3; | |
235 retval(2) = a2; | |
236 retval(1) = a1; | |
237 retval(0) = a0; | |
238 return retval; | |
239 } | |
240 | |
241 inline octave_value_list | |
242 ovl (const octave_value& a0, const octave_value& a1, | |
243 const octave_value& a2, const octave_value& a3, | |
244 const octave_value& a4, const octave_value& a5, | |
245 const octave_value& a6) | |
246 { | |
247 octave_value_list retval; | |
248 retval(6) = a6; | |
249 retval(5) = a5; | |
250 retval(4) = a4; | |
251 retval(3) = a3; | |
252 retval(2) = a2; | |
253 retval(1) = a1; | |
254 retval(0) = a0; | |
255 return retval; | |
256 } | |
257 | |
258 inline octave_value_list | |
259 ovl (const octave_value& a0, const octave_value& a1, | |
260 const octave_value& a2, const octave_value& a3, | |
261 const octave_value& a4, const octave_value& a5, | |
262 const octave_value& a6, const octave_value& a7) | |
263 { | |
264 octave_value_list retval; | |
265 retval(7) = a7; | |
266 retval(6) = a6; | |
267 retval(5) = a5; | |
268 retval(4) = a4; | |
269 retval(3) = a3; | |
270 retval(2) = a2; | |
271 retval(1) = a1; | |
272 retval(0) = a0; | |
273 return retval; | |
274 } | |
275 | |
276 inline octave_value_list | |
277 ovl (const octave_value& a0, const octave_value& a1, | |
278 const octave_value& a2, const octave_value& a3, | |
279 const octave_value& a4, const octave_value& a5, | |
280 const octave_value& a6, const octave_value& a7, | |
281 const octave_value& a8) | |
282 { | |
283 octave_value_list retval; | |
284 retval(8) = a8; | |
285 retval(7) = a7; | |
286 retval(6) = a6; | |
287 retval(5) = a5; | |
288 retval(4) = a4; | |
289 retval(3) = a3; | |
290 retval(2) = a2; | |
291 retval(1) = a1; | |
292 retval(0) = a0; | |
293 return retval; | |
294 } | |
295 | |
296 inline octave_value_list | |
297 ovl (const octave_value& a0, const octave_value& a1, | |
298 const octave_value& a2, const octave_value& a3, | |
299 const octave_value& a4, const octave_value& a5, | |
300 const octave_value& a6, const octave_value& a7, | |
301 const octave_value& a8, const octave_value& a9) | |
302 { | |
303 octave_value_list retval; | |
304 retval(9) = a9; | |
305 retval(8) = a8; | |
306 retval(7) = a7; | |
307 retval(6) = a6; | |
308 retval(5) = a5; | |
309 retval(4) = a4; | |
310 retval(3) = a3; | |
311 retval(2) = a2; | |
312 retval(1) = a1; | |
313 retval(0) = a0; | |
314 return retval; | |
315 } | |
316 | |
317 #endif |