comparison libinterp/corefcn/defun-int.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/defun-int.h@cd6ce11b9c57
children d63878346099
comparison
equal deleted inserted replaced
16891:486c3e2731ff 16892:68fc671a9339
1 /*
2
3 Copyright (C) 1994-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 #if !defined (octave_defun_int_h)
24 #define octave_defun_int_h 1
25
26 #include <string>
27
28 #include "ov-builtin.h"
29 #include "ov-dld-fcn.h"
30 #include "symtab.h"
31 #include "version.h"
32
33 class octave_value;
34
35 extern OCTINTERP_API void print_usage (void);
36 extern OCTINTERP_API void print_usage (const std::string&);
37
38 extern OCTINTERP_API void check_version (const std::string& version, const std::string& fcn);
39
40 extern OCTINTERP_API void
41 install_builtin_function (octave_builtin::fcn f, const std::string& name,
42 const std::string& file, const std::string& doc,
43 bool can_hide_function = true);
44
45 extern OCTINTERP_API void
46 install_dld_function (octave_dld_function::fcn f, const std::string& name,
47 const octave_shlib& shl, const std::string& doc,
48 bool relative = false);
49
50 extern OCTINTERP_API void
51 install_mex_function (void *fptr, bool fmex, const std::string& name,
52 const octave_shlib& shl, bool relative = false);
53
54 extern OCTINTERP_API void
55 alias_builtin (const std::string& alias, const std::string& name);
56
57 // Gets the shlib of the currently executing DLD function, if any.
58 extern OCTINTERP_API octave_shlib
59 get_current_shlib (void);
60
61 // This is a convenience class that calls the above function automatically at
62 // construction time. When deriving new classes, you can either use it as a field
63 // or as a parent (with multiple inheritance).
64
65 class octave_auto_shlib : public octave_shlib
66 {
67 public:
68 octave_auto_shlib (void)
69 : octave_shlib (get_current_shlib ()) { }
70 octave_auto_shlib (const octave_shlib& shl)
71 : octave_shlib (shl) { }
72 };
73
74 extern OCTINTERP_API bool
75 defun_isargout (int, int);
76
77 extern OCTINTERP_API void
78 defun_isargout (int, int, bool *);
79
80 #define DECLARE_FUNX(name, args_name, nargout_name) \
81 OCTAVE_EXPORT octave_value_list \
82 name (const octave_value_list& args_name, int nargout_name)
83
84 #define DECLARE_FUN(name, args_name, nargout_name) \
85 DECLARE_FUNX (F ## name, args_name, nargout_name)
86
87 // Define the code that will be used to insert the new function into
88 // the symbol table. We look for this name instead of the actual
89 // function so that we can easily install the doc std::string too.
90
91 typedef bool (*octave_dld_fcn_installer) (const octave_shlib&, bool relative);
92
93 typedef octave_function * (*octave_dld_fcn_getter) (const octave_shlib&, bool relative);
94
95 #define DEFINE_FUN_INSTALLER_FUN(name, doc) \
96 DEFINE_FUNX_INSTALLER_FUN(#name, F ## name, G ## name, doc)
97
98 #define DEFINE_FUNX_INSTALLER_FUN(name, fname, gname, doc) \
99 extern "C" \
100 OCTAVE_EXPORT \
101 octave_function * \
102 gname (const octave_shlib& shl, bool relative) \
103 { \
104 octave_function *retval = 0; \
105 \
106 check_version (OCTAVE_API_VERSION, name); \
107 \
108 if (! error_state) \
109 { \
110 octave_dld_function *fcn = octave_dld_function::create (fname, shl, name, doc); \
111 \
112 if (relative) \
113 fcn->mark_relative (); \
114 \
115 retval = fcn; \
116 } \
117 \
118 return retval; \
119 }
120
121 // MAKE_BUILTINS is defined to extract function names and related
122 // information and create the *.df files that are eventually used to
123 // create the builtins.cc file.
124
125 #if defined (MAKE_BUILTINS)
126
127 // Generate code to install name in the symbol table. The script
128 // mkdefs will create a .def file for every .cc file that uses DEFUN,
129 // or DEFCMD.
130
131 #define DEFUN_INTERNAL(name, args_name, nargout_name, doc) \
132 BEGIN_INSTALL_BUILTIN \
133 XDEFUN_INTERNAL (name, args_name, nargout_name, doc) \
134 END_INSTALL_BUILTIN
135
136 #define DEFCONSTFUN_INTERNAL(name, args_name, nargout_name, doc) \
137 BEGIN_INSTALL_BUILTIN \
138 XDEFCONSTFUN_INTERNAL (name, args_name, nargout_name, doc) \
139 END_INSTALL_BUILTIN
140
141 #define DEFUNX_INTERNAL(name, fname, args_name, nargout_name, doc) \
142 BEGIN_INSTALL_BUILTIN \
143 XDEFUNX_INTERNAL (name, fname, args_name, nargout_name, doc) \
144 END_INSTALL_BUILTIN
145
146 // Generate code to install name in the symbol table. The script
147 // mkdefs will create a .def file for every .cc file that uses
148 // DEFUN_DLD.
149
150 #define DEFUN_DLD_INTERNAL(name, args_name, nargout_name, doc) \
151 BEGIN_INSTALL_BUILTIN \
152 XDEFUN_DLD_INTERNAL (name, args_name, nargout_name, doc) \
153 END_INSTALL_BUILTIN
154
155 #define DEFUNX_DLD_INTERNAL(name, fname, args_name, nargout_name, doc) \
156 BEGIN_INSTALL_BUILTIN \
157 XDEFUNX_DLD_INTERNAL (name, fname, args_name, nargout_name, doc) \
158 END_INSTALL_BUILTIN
159
160 // Generate code for making another name for an existing function.
161
162 #define DEFALIAS_INTERNAL(alias, name) \
163 BEGIN_INSTALL_BUILTIN \
164 XDEFALIAS_INTERNAL(alias, name) \
165 END_INSTALL_BUILTIN
166
167 #else /* ! MAKE_BUILTINS */
168
169 // Generate the first line of the function definition. This ensures
170 // that the internal functions all have the same signature.
171
172 #define DEFUN_INTERNAL(name, args_name, nargout_name, doc) \
173 DECLARE_FUN (name, args_name, nargout_name)
174
175 #define DEFCONSTFUN_INTERNAL(name, args_name, nargout_name, doc) \
176 DECLARE_FUN (name, args_name, nargout_name)
177
178 #define DEFUNX_INTERNAL(name, fname, args_name, nargout_name, doc) \
179 DECLARE_FUNX (fname, args_name, nargout_name)
180
181 // No definition is required for an alias.
182
183 #define DEFALIAS_INTERNAL(alias, name)
184
185 #endif /* ! MAKE_BUILTINS */
186
187 #endif