Mercurial > octave
view libinterp/corefcn/defun.h @ 24789:a4d4ec566fd7
improve formatting of large values in pr-output functions
* pr-output.cc (make_real_format): Initialize local variables.
Switch to E format if available precision is exceeded. Set int format
based on leading digits.
(make_complex_matrix_format): Also allow switching to E format if
printing in fixed_point_format. Set int format based on leading
digits.
(make_real_matrix_format, make_complex_format,
make_complex_matrix_format, make_range_format):
Initialize local variables.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 22 Feb 2018 15:52:38 -0500 |
parents | 194eb4bd202b |
children | 6652d3823428 |
line wrap: on
line source
/* Copyright (C) 1994-2017 John W. Eaton This file is part of Octave. Octave is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Octave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, see <https://www.gnu.org/licenses/>. */ #if ! defined (octave_defun_h) #define octave_defun_h 1 #include "octave-config.h" #if defined (octave_defun_dld_h) # error defun.h and defun-dld.h both included in same file! #endif #include "defun-int.h" //! Macro to define a builtin function. //! //! For detailed information, see \ref Macros. //! //! @param name The **unqouted** name of the function that should be installed //! on the `octave::symbol_table` and can be called by the //! interpreter. Internally, the function name is prepended by an //! `F`. //! @param args_name The name of the octave_value_list variable used to pass //! the argument list to this function. If this value is //! omitted, the function cannot access the argument list. //! @param nargout_name The name of the `int` variable used to pass the number //! of output arguments this function is expected to //! produce from the caller. If this value is //! omitted, the function cannot access this number. //! @param doc Texinfo help text (docstring) for the function. //! //! @see DEFUNX, DEFCONSTFUN #define DEFUN(name, args_name, nargout_name, doc) \ DECLARE_FUN (name, args_name, nargout_name) //! Macro to define a builtin function with certain internal name. //! //! @warning Consider to use #DEFUN, unless you have good reason. //! //! For detailed information, see \ref Macros. //! //! This macro can be used when @p name cannot be used directly (for example if //! it is already defined as a macro). In that case, @p name is already a //! quoted string (thus unaffected by macros), and the internal name of the //! function is given by @p fname. //! //! @param name The **qouted** name of the function that should be callable //! by the interpreter. //! @param fname The internal **unqouted** name of the function. This internal //! name is by convention prepended by an `F`. //! @param args_name The name of the octave_value_list variable used to pass //! the argument list to this function. If this value is //! omitted, the function cannot access the argument list. //! @param nargout_name The name of the `int` variable used to pass the number //! of output arguments this function is expected to //! produce from the caller. If this value is //! omitted, the function cannot access this number. //! @param doc Texinfo help text (docstring) for the function. //! //! @see DEFUN, DEFCONSTFUN #define DEFUNX(name, fname, args_name, nargout_name, doc) \ DECLARE_FUNX (fname, args_name, nargout_name) //! Macro to define a builtin function that cannot be hidden by a variable. //! //! @warning Consider to use #DEFUN, unless you have good reason. //! //! For detailed information, see \ref Macros. //! //! The function gets installed to the `octave::symbol_table` in a way, such //! that no variable is allowed to hide this function name. //! //! @param name The **unqouted** name of the function that should be installed //! on the `octave::symbol_table` and can be called by the //! interpreter. Internally, the function name is prepended by an //! `F`. //! @param args_name The name of the octave_value_list variable used to pass //! the argument list to this function. If this value is //! omitted, the function cannot access the argument list. //! @param nargout_name The name of the `int` variable used to pass the number //! of output arguments this function is expected to //! produce from the caller. If this value is //! omitted, the function cannot access this number. //! @param doc Texinfo help text (docstring) for the function. //! //! @see DEFUN, DEFUNX #define DEFCONSTFUN(name, args_name, nargout_name, doc) \ DECLARE_FUN (name, args_name, nargout_name) //! Macro to define a builtin method. //! //! For detailed information, see \ref Macros. //! //! @param name The **unqouted** name of the method that should be installed //! on the `octave::symbol_table` and can be called by the //! interpreter. Internally, the method name is prepended by an //! `F`. //! @param interp_name The name of the `octave::interpreter` reference that can //! be used by this method. If this value is omitted, //! there is no access to the interpreter and one should //! use #DEFUN to define a function instead. //! @param args_name The name of the octave_value_list variable used to pass //! the argument list to this method. If this value is //! omitted, the method cannot access the argument list. //! @param nargout_name The name of the `int` variable used to pass the number //! of output arguments this method is expected to //! produce from the caller. If this value is //! omitted, the method cannot access this number. //! @param doc Texinfo help text (docstring) for the method. //! //! @see DEFMETHODX, DEFCONSTMETHOD #define DEFMETHOD(name, interp_name, args_name, nargout_name, doc) \ DECLARE_METHOD (name, interp_name, args_name, nargout_name) //! Macro to define a builtin method with certain internal name. //! //! @warning Consider to use #DEFMETHOD, unless you have good reason. //! //! For detailed information, see \ref Macros. //! //! This macro can be used when @p name cannot be used directly (for example if //! it is already defined as a macro). In that case, @p name is already a //! quoted string (thus unaffected by macros), and the internal name of the //! method is given by @p fname. //! //! @param name The **qouted** name of the method that should be callable //! by the interpreter. //! @param fname The internal **unqouted** name of the method. This internal //! name is by convention prepended by an `F`. //! @param interp_name The name of the `octave::interpreter` reference that can //! be used by this method. If this value is omitted, //! there is no access to the interpreter and one should //! use #DEFUNX to define a function instead. //! @param args_name The name of the octave_value_list variable used to pass //! the argument list to this method. If this value is //! omitted, the method cannot access the argument list. //! @param nargout_name The name of the `int` variable used to pass the number //! of output arguments this method is expected to //! produce from the caller. If this value is //! omitted, the method cannot access this number. //! @param doc Texinfo help text (docstring) for the method. //! //! @see DEFMETHOD, DEFCONSTMETHOD #define DEFMETHODX(name, fname, interp_name, args_name, nargout_name, doc) \ DECLARE_METHODX (fname, interp_name, args_name, nargout_name) //! Macro to define a builtin method that cannot be hidden by a variable. //! //! @warning Consider to use #DEFMETHOD, unless you have good reason. //! //! For detailed information, see \ref Macros. //! //! The method gets installed to the `octave::symbol_table` in a way, such //! that no variable is allowed to hide this method name. //! //! @param name The **unqouted** name of the method that should be installed //! on the `octave::symbol_table` and can be called by the //! interpreter. Internally, the method name is prepended by an //! `F`. //! @param interp_name The name of the `octave::interpreter` reference that can //! be used by this method. If this value is omitted, //! there is no access to the interpreter and one should //! use #DEFCONSTFUN to define a function instead. //! @param args_name The name of the octave_value_list variable used to pass //! the argument list to this method. If this value is //! omitted, the method cannot access the argument list. //! @param nargout_name The name of the `int` variable used to pass the number //! of output arguments this method is expected to //! produce from the caller. If this value is //! omitted, the method cannot access this number. //! @param doc Texinfo help text (docstring) for the method. //! //! @see DEFMETHOD, DEFMETHODX #define DEFCONSTMETHOD(name, interp_name, args_name, nargout_name, doc) \ DECLARE_METHOD (name, interp_name, args_name, nargout_name) //! Macro to define an alias for another existing function name. //! //! For detailed information, see \ref Macros. //! //! @param alias For another existing function name. //! @param name The name of the other existing function. //! //! @see DEFUN #define DEFALIAS(alias, name) #endif