Mercurial > octave
diff src/defun-int.h @ 7336:745a8299c2b5
[project @ 2007-12-28 20:56:55 by jwe]
author | jwe |
---|---|
date | Fri, 28 Dec 2007 20:56:58 +0000 |
parents | 2c5b14c60c6c |
children | a1ab9dbc9622 |
line wrap: on
line diff
--- a/src/defun-int.h Fri Feb 01 23:56:51 2008 -0500 +++ b/src/defun-int.h Fri Dec 28 20:56:58 2007 +0000 @@ -40,7 +40,7 @@ extern OCTINTERP_API void check_version (const std::string& version, const std::string& fcn); extern OCTINTERP_API void -install_builtin_mapper (octave_mapper *mf); +install_builtin_mapper (octave_mapper *mf, const std::string& name); extern OCTINTERP_API void install_builtin_function (octave_builtin::fcn f, const std::string& name, @@ -74,6 +74,8 @@ typedef bool (*octave_dld_fcn_installer) (const octave_shlib&, bool relative); +typedef octave_function * (*octave_dld_fcn_getter) (const octave_shlib&, bool relative); + #define DEFINE_FUN_INSTALLER_FUN(name, doc) \ DEFINE_FUN_INSTALLER_FUN2(name, doc, CXX_ABI) @@ -81,15 +83,15 @@ DEFINE_FUN_INSTALLER_FUN3(name, doc, cxx_abi) #define DEFINE_FUN_INSTALLER_FUN3(name, doc, cxx_abi) \ - DEFINE_FUNX_INSTALLER_FUN3(#name, F ## name, FS ## name, doc, cxx_abi) + DEFINE_FUNX_INSTALLER_FUN3(#name, F ## name, FS ## name, G ## name, doc, cxx_abi) -#define DEFINE_FUNX_INSTALLER_FUN(name, fname, fsname, doc) \ - DEFINE_FUNX_INSTALLER_FUN2(name, fname, fsname, doc, CXX_ABI) +#define DEFINE_FUNX_INSTALLER_FUN(name, fname, fsname, gname, doc) \ + DEFINE_FUNX_INSTALLER_FUN2(name, fname, fsname, gname, doc, CXX_ABI) -#define DEFINE_FUNX_INSTALLER_FUN2(name, fname, fsname, doc, cxx_abi) \ - DEFINE_FUNX_INSTALLER_FUN3(name, fname, fsname, doc, cxx_abi) +#define DEFINE_FUNX_INSTALLER_FUN2(name, fname, fsname, gname, doc, cxx_abi) \ + DEFINE_FUNX_INSTALLER_FUN3(name, fname, fsname, gname, doc, cxx_abi) -#define DEFINE_FUNX_INSTALLER_FUN3(name, fname, fsname, doc, cxx_abi) \ +#define DEFINE_FUNX_INSTALLER_FUN3(name, fname, fsname, gname, doc, cxx_abi) \ extern "C" \ OCTAVE_EXPORT \ bool \ @@ -105,6 +107,28 @@ install_dld_function (fname, name, shl, doc, false, relative); \ \ return retval; \ + } \ + \ + extern "C" \ + OCTAVE_EXPORT \ + octave_function * \ + gname ## _ ## cxx_abi (const octave_shlib& shl, bool relative) \ + { \ + octave_function *retval = 0; \ + \ + check_version (OCTAVE_API_VERSION, name); \ + \ + if (! error_state) \ + { \ + octave_dld_function *fcn = new octave_dld_function (fname, shl, name, doc); \ + \ + if (relative) \ + fcn->mark_relative (); \ + \ + retval = fcn; \ + } \ + \ + return retval; \ } // MAKE_BUILTINS is defined to extract function names and related @@ -193,8 +217,9 @@ ch_map_flag, can_ret_cmplx_for_real, doc) \ install_builtin_mapper \ (new octave_mapper \ - (ch_map, d_b_map, c_b_map, d_d_map, d_c_map, c_c_map, \ - lo, hi, ch_map_flag, can_ret_cmplx_for_real, #name, doc)) + (ch_map, d_b_map, c_b_map, d_d_map, d_c_map, c_c_map, \ + lo, hi, ch_map_flag, can_ret_cmplx_for_real, #name, doc), \ + #name) #endif /* ! MAKE_BUILTINS */