comparison libinterp/parse-tree/pt-const.cc @ 15195:2fc554ffbc28

split libinterp from src * libinterp: New directory. Move all files from src directory here except Makefile.am, main.cc, main-cli.cc, mkoctfile.in.cc, mkoctfilr.in.sh, octave-config.in.cc, octave-config.in.sh. * libinterp/Makefile.am: New file, extracted from src/Makefile.am. * src/Makefile.am: Delete everything except targets and definitions needed to build and link main and utility programs. * Makefile.am (SUBDIRS): Include libinterp in the list. * autogen.sh: Run config-module.sh in libinterp/dldfcn directory, not src/dldfcn directory. * configure.ac (AC_CONFIG_SRCDIR): Use libinterp/octave.cc, not src/octave.cc. (DL_LDFLAGS, LIBOCTINTERP): Use libinterp, not src. (AC_CONFIG_FILES): Include libinterp/Makefile in the list. * find-docstring-files.sh: Look in libinterp, not src. * gui/src/Makefile.am (liboctgui_la_CPPFLAGS): Find header files in libinterp, not src.
author John W. Eaton <jwe@octave.org>
date Sat, 18 Aug 2012 16:23:39 -0400
parents src/parse-tree/pt-const.cc@46b19589b593
children
comparison
equal deleted inserted replaced
15194:0f0b795044c3 15195:2fc554ffbc28
1 /*
2
3 Copyright (C) 1993-2012 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 "oct-obj.h"
31 #include "pager.h"
32 #include "pt-const.h"
33 #include "pt-walk.h"
34
35 // We are likely to have a lot of tree_constant objects to allocate,
36 // so make the grow_size large.
37 DEFINE_OCTAVE_ALLOCATOR2 (tree_constant, 1024);
38
39 void
40 tree_constant::print (std::ostream& os, bool pr_as_read_syntax, bool pr_orig_text)
41 {
42 if (pr_orig_text && ! orig_text.empty ())
43 os << orig_text;
44 else
45 val.print (os, pr_as_read_syntax);
46 }
47
48 void
49 tree_constant::print_raw (std::ostream& os, bool pr_as_read_syntax,
50 bool pr_orig_text)
51 {
52 if (pr_orig_text && ! orig_text.empty ())
53 os << orig_text;
54 else
55 val.print_raw (os, pr_as_read_syntax);
56 }
57
58 octave_value_list
59 tree_constant::rvalue (int nargout)
60 {
61 octave_value_list retval;
62
63 if (nargout > 1)
64 error ("invalid number of output arguments for constant expression");
65 else
66 retval = rvalue1 (nargout);
67
68 return retval;
69 }
70
71 tree_expression *
72 tree_constant::dup (symbol_table::scope_id,
73 symbol_table::context_id) const
74 {
75 tree_constant *new_tc
76 = new tree_constant (val, orig_text, line (), column ());
77
78 new_tc->copy_base (*this);
79
80 return new_tc;
81 }
82
83 void
84 tree_constant::accept (tree_walker& tw)
85 {
86 tw.visit_constant (*this);
87 }