[ast] allow _iRetCount == 0 in gateways 34/21034/42
Stéphane Mottelet [Fri, 12 Jul 2019 15:41:40 +0000 (17:41 +0200)]
http://bugzilla.scilab.org/show_bug.cgi?id=2036

Just an example of what can be done after this patch

* at the macro level (see plot.sci in the patch):

--> plot(1:10,sin(1:10),1:10,cos(1:10))

--> h=plot(1:10,sin(1:10),1:10,cos(1:10))
 h  =

2 by 1 matrix of handles:
=========================
Polyline
Polyline

--> plot(1:10,sin(1:10),1:10,cos(1:10)).foreground
 ans  =

   33.
   2.

zero value of argn(1) is overriden only in relevant cases: e.g. recursive
extraction or use of expression as an argument in another callExp.

* at the gateway level (here old Scilab C API) :

--> plot3d(rand(10,10))

--> h=plot3d(rand(10,10))
 h  =

Handle of type "Plot3d" with properties:
========================================
parent: Axes
children: []
visible = "on"
surface_mode = "on"
foreground = -1
thickness = 1
mark_mode = "off"
mark_style = 0
mark_size_unit = "tabulated"
mark_size = 0
mark_foreground = -1
mark_background = -2
data.x = [1,2,3,4,5,6,7,8,9,10]
data.y = [1,2,3,4,5,6,7,8,9,10]
data.z matrix 10x10
color_mode = 2
color_flag = 0
hiddencolor = 4
clip_state = "clipgrf"
clip_box = []
ambient_color = [0,0,0]
diffuse_color = [1,1,1]
specular_color = [1,1,1]
use_color_material = "on"
material_shininess = 2
user_data = []
tag = ""

Change-Id: I60f075f8e348fea51ca6ddc2c7985324de5d63f5

397 files changed:
scilab/contrib/toolbox_skeleton/sci_gateway/cpp/sci_cppmultiplybypi.cpp
scilab/contrib/toolbox_skeleton/sci_gateway/cpp/sci_cppsub.cpp
scilab/contrib/toolbox_skeleton/sci_gateway/cpp/sci_cppsum.cpp
scilab/modules/api_scilab/help/en_US/legacy/capi/CheckLhs.xml
scilab/modules/api_scilab/help/en_US/legacy/capi/CheckRhs.xml
scilab/modules/api_scilab/help/en_US/legacy/capi/howto/CallingAScilabFunctionFromACInterface.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/boolean_reading_api.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/boolean_writing_api.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/bsparse_reading_api.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/bsparse_writing_api.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/deleteNamedVariable.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/double_reading_api.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/handle_reading_api.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/handle_writing_api.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/pointer_reading_api.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/pointer_writing_api.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/poly_getpolyvariablename_api.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/poly_reading_api.xml
scilab/modules/api_scilab/help/en_US/legacy/low_level_functions/string_reading_api.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/boolean_reading_api.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/boolean_writing_api.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/bsparse_reading_api.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/bsparse_writing_api.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/deleteNamedVariable.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/double_reading_api.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/handle_reading_api.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/handle_writing_api.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/pointer_reading_api.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/pointer_writing_api.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/poly_getpolyvariablename_api.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/poly_reading_api.xml
scilab/modules/api_scilab/help/ja_JP/legacy/low_level_functions/string_reading_api.xml
scilab/modules/api_scilab/tests/nonreg_tests/bug_11538.c
scilab/modules/api_scilab/tests/nonreg_tests/bug_9264.c
scilab/modules/api_scilab/tests/unit_tests/deleteNamedVariable.c
scilab/modules/api_scilab/tests/unit_tests/double_reading_api.c
scilab/modules/api_scilab/tests/unit_tests/pointer_reading_api.c
scilab/modules/api_scilab/tests/unit_tests/poly_reading_api.c
scilab/modules/api_scilab/tests/unit_tests/read_write_boolean_api.c
scilab/modules/api_scilab/tests/unit_tests/read_write_bsparse_api.c
scilab/modules/api_scilab/tests/unit_tests/string_reading_api.c
scilab/modules/arnoldi/sci_gateway/c/sci_dnaupd.c
scilab/modules/arnoldi/sci_gateway/c/sci_dneupd.c
scilab/modules/arnoldi/sci_gateway/c/sci_dsaupd.c
scilab/modules/arnoldi/sci_gateway/c/sci_dseupd.c
scilab/modules/arnoldi/sci_gateway/c/sci_znaupd.c
scilab/modules/arnoldi/sci_gateway/c/sci_zneupd.c
scilab/modules/ast/src/cpp/ast/run_CallExp.hpp
scilab/modules/ast/src/cpp/ast/run_SeqExp.hpp
scilab/modules/ast/src/cpp/types/function.cpp
scilab/modules/ast/src/cpp/types/macro.cpp
scilab/modules/ast/src/cpp/types/overload.cpp
scilab/modules/ast/tests/unit_tests/argn.tst [new file with mode: 0644]
scilab/modules/ast/tests/unit_tests/sci_newtype.cpp
scilab/modules/boolean/sci_gateway/cpp/sci_find.cpp
scilab/modules/cacsd/sci_gateway/c/sci_contr.c
scilab/modules/cacsd/sci_gateway/c/sci_linmeq.c
scilab/modules/cacsd/sci_gateway/c/sci_mucomp.c
scilab/modules/cacsd/sci_gateway/c/sci_rankqr.c
scilab/modules/cacsd/sci_gateway/c/sci_ricc.c
scilab/modules/cacsd/sci_gateway/c/sci_rrankqr.c
scilab/modules/cacsd/sci_gateway/c/sci_zrankqr.c
scilab/modules/cacsd/sci_gateway/cpp/sci_arl2_ius.cpp
scilab/modules/cacsd/sci_gateway/cpp/sci_ereduc.cpp
scilab/modules/cacsd/sci_gateway/cpp/sci_fstair.cpp
scilab/modules/cacsd/sci_gateway/cpp/sci_ldiv.cpp
scilab/modules/cacsd/sci_gateway/cpp/sci_ltitr.cpp
scilab/modules/cacsd/sci_gateway/cpp/sci_rtitr.cpp
scilab/modules/call_scilab/sci_gateway/c/sci_fromc.c
scilab/modules/call_scilab/sci_gateway/c/sci_fromjava.c
scilab/modules/completion/sci_gateway/cpp/sci_completion.cpp
scilab/modules/completion/tests/utilities/sci_completeline.c
scilab/modules/completion/tests/utilities/sci_getcommonpart.c
scilab/modules/completion/tests/utilities/sci_getfields.c
scilab/modules/completion/tests/utilities/sci_getfilepartlevel.c
scilab/modules/completion/tests/utilities/sci_getpartlevel.c
scilab/modules/core/examples/capi/call_scifunction/sci_call_scifunc.c
scilab/modules/core/examples/capi/optional_parameters/optional_parameters.c
scilab/modules/core/sci_gateway/c/sci_debug.c
scilab/modules/core/sci_gateway/cpp/sci_analyzeroptions.cpp
scilab/modules/core/sci_gateway/cpp/sci_argn.cpp
scilab/modules/core/sci_gateway/cpp/sci_checkNamedArguments.cpp
scilab/modules/core/sci_gateway/cpp/sci_errclear.cpp
scilab/modules/core/sci_gateway/cpp/sci_error.cpp
scilab/modules/core/sci_gateway/cpp/sci_format.cpp
scilab/modules/core/sci_gateway/cpp/sci_funcprot.cpp
scilab/modules/core/sci_gateway/cpp/sci_getmd5.cpp
scilab/modules/core/sci_gateway/cpp/sci_getos.cpp
scilab/modules/core/sci_gateway/cpp/sci_getversion.cpp
scilab/modules/core/sci_gateway/cpp/sci_isfield.cpp
scilab/modules/core/sci_gateway/cpp/sci_macr2tree.cpp
scilab/modules/core/sci_gateway/cpp/sci_mode.cpp
scilab/modules/core/sci_gateway/cpp/sci_oldEmptyBehaviour.cpp
scilab/modules/core/sci_gateway/cpp/sci_warning.cpp
scilab/modules/core/sci_gateway/cpp/sci_what.cpp
scilab/modules/core/tests/nonreg_tests/bug_7974.c
scilab/modules/data_structures/sci_gateway/cpp/sci_getfield.cpp
scilab/modules/differential_equations/sci_gateway/cpp/sci_ode.cpp
scilab/modules/differential_equations/sci_gateway/cpp/sci_odedc.cpp
scilab/modules/dynamic_link/examples/dynamic_link_c_and_fortran/ext14c.c
scilab/modules/dynamic_link/examples/gateway/sci_matmul.c
scilab/modules/dynamic_link/examples/gateway/sci_view.c
scilab/modules/dynamic_link/help/en_US/addinter.xml
scilab/modules/dynamic_link/help/en_US/ilib_build.xml
scilab/modules/dynamic_link/tests/nonreg_tests/bug_2085.c
scilab/modules/dynamic_link/tests/nonreg_tests/bug_3191.c
scilab/modules/dynamic_link/tests/nonreg_tests/bug_3392.c
scilab/modules/dynamic_link/tests/nonreg_tests/bug_3639.c
scilab/modules/dynamic_link/tests/unit_tests/addinter.c
scilab/modules/dynamic_link/tests/unit_tests/addinter_template.c
scilab/modules/dynamic_link/tests/unit_tests/ilib_build.macosx.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/ilib_build_2.macosx.dia.ref
scilab/modules/dynamic_link/tests/unit_tests/intfun1.c
scilab/modules/dynamic_link/tests/unit_tests/sci_cppfind.cxx
scilab/modules/dynamic_link/tests/unit_tests/sci_csub.c
scilab/modules/dynamic_link/tests/unit_tests/sci_csum.c
scilab/modules/elementary_functions/sci_gateway/c/sci_dec2base.c
scilab/modules/elementary_functions/sci_gateway/c/sci_log10.c
scilab/modules/elementary_functions/sci_gateway/c/sci_maxi.c
scilab/modules/elementary_functions/sci_gateway/c/sci_number_properties.c
scilab/modules/elementary_functions/sci_gateway/c/sci_prod.c
scilab/modules/elementary_functions/sci_gateway/c/sci_testmatrix.c
scilab/modules/elementary_functions/sci_gateway/cpp/sci_bitstring.cpp
scilab/modules/elementary_functions/sci_gateway/cpp/sci_isequal.cpp
scilab/modules/elementary_functions/sci_gateway/cpp/sci_issquare.cpp
scilab/modules/elementary_functions/sci_gateway/cpp/sci_isvector.cpp
scilab/modules/elementary_functions/sci_gateway/cpp/sci_permute.cpp
scilab/modules/elementary_functions/sci_gateway/cpp/sci_rat.cpp
scilab/modules/elementary_functions/sci_gateway/cpp/sci_size.cpp
scilab/modules/external_objects/src/cpp/addNamedVariable.cpp
scilab/modules/external_objects/src/cpp/addToClasspath.cpp
scilab/modules/external_objects/src/cpp/doubleExclam_invoke.cpp
scilab/modules/external_objects/src/cpp/evalString.cpp
scilab/modules/external_objects/src/cpp/exists.cpp
scilab/modules/external_objects/src/cpp/getEnvId.cpp
scilab/modules/external_objects/src/cpp/getField.cpp
scilab/modules/external_objects/src/cpp/getNamedVariable.cpp
scilab/modules/external_objects/src/cpp/getsetOptions.cpp
scilab/modules/external_objects/src/cpp/invoker.cpp
scilab/modules/external_objects/src/cpp/operation.cpp
scilab/modules/fileio/sci_gateway/c/sci_chdir.c
scilab/modules/fileio/sci_gateway/c/sci_copyfile.c
scilab/modules/fileio/sci_gateway/c/sci_fprintfMat.c
scilab/modules/fileio/sci_gateway/c/sci_fscanfMat.c
scilab/modules/fileio/sci_gateway/c/sci_movefile.c
scilab/modules/fileio/sci_gateway/c/sci_tempname.c
scilab/modules/fileio/sci_gateway/cpp/sci_basename.cpp
scilab/modules/fileio/sci_gateway/cpp/sci_fileext.cpp
scilab/modules/fileio/sci_gateway/cpp/sci_fileparts.cpp
scilab/modules/fileio/sci_gateway/cpp/sci_filesep.cpp
scilab/modules/fileio/sci_gateway/cpp/sci_fullpath.cpp
scilab/modules/fileio/sci_gateway/cpp/sci_getlongpathname.cpp
scilab/modules/fileio/sci_gateway/cpp/sci_getshortpathname.cpp
scilab/modules/fileio/sci_gateway/cpp/sci_isdir.cpp
scilab/modules/fileio/sci_gateway/cpp/sci_isfile.cpp
scilab/modules/fileio/sci_gateway/cpp/sci_mopen.cpp
scilab/modules/fileio/sci_gateway/cpp/sci_mputl.cpp
scilab/modules/fileio/sci_gateway/cpp/sci_pathconvert.cpp
scilab/modules/functions/help/en_US/argn.xml
scilab/modules/functions/help/fr_FR/argn.xml
scilab/modules/functions/help/ja_JP/argn.xml
scilab/modules/functions/help/pt_BR/argn.xml
scilab/modules/functions/help/ru_RU/argn.xml
scilab/modules/functions/sci_gateway/cpp/sci_macrovar.cpp
scilab/modules/functions/sci_gateway/cpp/sci_whereis.cpp
scilab/modules/graphics/macros/plot.sci
scilab/modules/graphics/sci_gateway/c/sci_plot3d.c
scilab/modules/graphics/sci_gateway/c/sci_rubberbox.c
scilab/modules/graphics/sci_gateway/c/sci_xchange.c
scilab/modules/graphics/sci_gateway/c/sci_xclick.c
scilab/modules/graphics/sci_gateway/c/sci_xgetmouse.c
scilab/modules/graphics/sci_gateway/c/sci_xname.c
scilab/modules/gui/sci_gateway/c/sci_delmenu.c
scilab/modules/gui/sci_gateway/c/sci_messagebox.c
scilab/modules/gui/sci_gateway/c/sci_progressionbar.c
scilab/modules/gui/sci_gateway/c/sci_setmenu.c
scilab/modules/gui/sci_gateway/c/sci_unsetmenu.c
scilab/modules/gui/sci_gateway/c/sci_waitbar.c
scilab/modules/gui/sci_gateway/cpp/sci_datatip_manager_mode.cpp
scilab/modules/gui/sci_gateway/cpp/sci_datatip_set_display.cpp
scilab/modules/gui/sci_gateway/cpp/sci_getinstalledlookandfeels.cpp
scilab/modules/gui/sci_gateway/cpp/sci_getlookandfeel.cpp
scilab/modules/gui/sci_gateway/cpp/sci_loadGui.cpp
scilab/modules/gui/sci_gateway/cpp/sci_saveGui.cpp
scilab/modules/gui/sci_gateway/cpp/sci_uigetcolor.cpp
scilab/modules/gui/sci_gateway/cpp/sci_uigetdir.cpp
scilab/modules/gui/sci_gateway/cpp/sci_uigetfile.cpp
scilab/modules/gui/sci_gateway/cpp/sci_uigetfont.cpp
scilab/modules/gui/sci_gateway/cpp/sci_uiputfile.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5attr.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5cp.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5dataset.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5delete.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5dump.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5exists.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5flush.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5get.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5group.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5isfoo.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5label.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5link.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5ln.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5ls.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5mount.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5mv.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5open.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5read.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5readattr.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5rm.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5umount.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_h5write.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_hdf5_is_file.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_hdf5_listvar_v2.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_hdf5_listvar_v3.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_hdf5_load_v1.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_hdf5_load_v2.cpp
scilab/modules/hdf5/sci_gateway/cpp/sci_percent_H5Object_e.cpp
scilab/modules/hdf5/src/cpp/h5create.hpp
scilab/modules/helptools/sci_gateway/cpp/sci_buildDoc.cpp
scilab/modules/interpolation/sci_gateway/cpp/sci_eval_cshep2d.cpp
scilab/modules/interpolation/sci_gateway/cpp/sci_interp2d.cpp
scilab/modules/interpolation/sci_gateway/cpp/sci_interp3d.cpp
scilab/modules/io/sci_gateway/c/sci_getenv.c
scilab/modules/io/sci_gateway/cpp/sci_file.cpp
scilab/modules/io/sci_gateway/cpp/sci_getio.cpp
scilab/modules/jvm/sci_gateway/cpp/sci_system_getproperty.cpp
scilab/modules/jvm/sci_gateway/cpp/sci_system_setproperty.cpp
scilab/modules/linear_algebra/sci_gateway/c/sci_norm.c
scilab/modules/linear_algebra/sci_gateway/cpp/sci_hess.cpp
scilab/modules/linear_algebra/sci_gateway/cpp/sci_schur.cpp
scilab/modules/linear_algebra/sci_gateway/cpp/sci_spec.cpp
scilab/modules/linear_algebra/sci_gateway/cpp/sci_svd.cpp
scilab/modules/localization/sci_gateway/c/sci_addlocalizationdomain.c
scilab/modules/localization/sci_gateway/cpp/sci_getdefaultlanguage.cpp
scilab/modules/localization/sci_gateway/cpp/sci_getlanguage.cpp
scilab/modules/localization/sci_gateway/cpp/sci_setdefaultlanguage.cpp
scilab/modules/localization/sci_gateway/cpp/sci_setlanguage.cpp
scilab/modules/matio/sci_gateway/c/sci_matfile_close.c
scilab/modules/matio/sci_gateway/c/sci_matfile_listvar.c
scilab/modules/matio/sci_gateway/c/sci_matfile_open.c
scilab/modules/matio/sci_gateway/c/sci_matfile_varreadnext.c
scilab/modules/matio/sci_gateway/c/sci_matfile_varwrite.c
scilab/modules/mexlib/examples/interface/f4.c
scilab/modules/mpi/sci_gateway/c/sci_mpi_bcast.c
scilab/modules/mpi/sci_gateway/c/sci_mpi_comm_rank.c
scilab/modules/mpi/sci_gateway/c/sci_mpi_comm_size.c
scilab/modules/mpi/sci_gateway/c/sci_mpi_finalize.c
scilab/modules/mpi/sci_gateway/c/sci_mpi_get_processor_name.c
scilab/modules/mpi/sci_gateway/c/sci_mpi_init.c
scilab/modules/mpi/sci_gateway/c/sci_mpi_isend.c
scilab/modules/mpi/sci_gateway/c/sci_mpi_recv.c
scilab/modules/mpi/sci_gateway/c/sci_mpi_send.c
scilab/modules/mpi/sci_gateway/c/sci_mpi_wait.c
scilab/modules/optimization/sci_gateway/c/sci_qld.c
scilab/modules/optimization/sci_gateway/c/sci_qp_solve.c
scilab/modules/parallel/sci_gateway/c/sci_parallel_concurrency.c
scilab/modules/preferences/sci_gateway/cpp/sci_addModulePreferences.cpp
scilab/modules/preferences/sci_gateway/cpp/sci_removeModulePreferences.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_callblk.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_curblock.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_model2blk.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_phase_simulation.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_scicosDiagramToScilab.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_scicos_debug.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_scicos_debug_count.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_scicos_log.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_scicos_new.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_scicos_setfield.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_scicos_time.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_set_blockerror.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_validvar.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_var2vec.cpp
scilab/modules/scicos/sci_gateway/cpp/sci_vec2var.cpp
scilab/modules/signal_processing/sci_gateway/c/sci_amell.c
scilab/modules/signal_processing/sci_gateway/c/sci_remez.c
scilab/modules/sparse/sci_gateway/cpp/sci_blkslvi.cpp
scilab/modules/sparse/sci_gateway/cpp/sci_inpnv.cpp
scilab/modules/sparse/sci_gateway/cpp/sci_ludel.cpp
scilab/modules/special_functions/sci_gateway/c/sci_beta.c
scilab/modules/special_functions/sci_gateway/c/sci_legendre.c
scilab/modules/spreadsheet/sci_gateway/c/sci_csvDefault.c
scilab/modules/spreadsheet/sci_gateway/c/sci_csvRead.c
scilab/modules/spreadsheet/sci_gateway/c/sci_csvStringToDouble.c
scilab/modules/spreadsheet/sci_gateway/c/sci_csvTextScan.c
scilab/modules/spreadsheet/sci_gateway/c/sci_csvWrite.c
scilab/modules/statistics/sci_gateway/c/sci_cdfbet.c
scilab/modules/statistics/sci_gateway/c/sci_cdfbin.c
scilab/modules/statistics/sci_gateway/c/sci_cdfchi.c
scilab/modules/statistics/sci_gateway/c/sci_cdfchn.c
scilab/modules/statistics/sci_gateway/c/sci_cdff.c
scilab/modules/statistics/sci_gateway/c/sci_cdffnc.c
scilab/modules/statistics/sci_gateway/c/sci_cdfgam.c
scilab/modules/statistics/sci_gateway/c/sci_cdfnbn.c
scilab/modules/statistics/sci_gateway/c/sci_cdfnor.c
scilab/modules/statistics/sci_gateway/c/sci_cdfpoi.c
scilab/modules/statistics/sci_gateway/c/sci_cdft.c
scilab/modules/string/macros/evstr.sci
scilab/modules/string/sci_gateway/cpp/sci_convstr.cpp
scilab/modules/string/sci_gateway/cpp/sci_emptystr.cpp
scilab/modules/string/sci_gateway/cpp/sci_isalphanum.cpp
scilab/modules/string/sci_gateway/cpp/sci_isascii.cpp
scilab/modules/string/sci_gateway/cpp/sci_isdigit.cpp
scilab/modules/string/sci_gateway/cpp/sci_isletter.cpp
scilab/modules/string/sci_gateway/cpp/sci_isnum.cpp
scilab/modules/string/sci_gateway/cpp/sci_part.cpp
scilab/modules/string/sci_gateway/cpp/sci_regexp.cpp
scilab/modules/string/sci_gateway/cpp/sci_strchr.cpp
scilab/modules/string/sci_gateway/cpp/sci_strcmp.cpp
scilab/modules/string/sci_gateway/cpp/sci_strcspn.cpp
scilab/modules/string/sci_gateway/cpp/sci_stripblanks.cpp
scilab/modules/string/sci_gateway/cpp/sci_strncpy.cpp
scilab/modules/string/sci_gateway/cpp/sci_strrchr.cpp
scilab/modules/string/sci_gateway/cpp/sci_strrev.cpp
scilab/modules/string/sci_gateway/cpp/sci_strsplit.cpp
scilab/modules/string/sci_gateway/cpp/sci_strspn.cpp
scilab/modules/string/sci_gateway/cpp/sci_strstr.cpp
scilab/modules/string/sci_gateway/cpp/sci_strtok.cpp
scilab/modules/string/sci_gateway/cpp/sci_tokens.cpp
scilab/modules/tclsci/macros/TCL_CreateSlave.sci
scilab/modules/tclsci/sci_gateway/c/sci_TCL_DeleteInterp.c
scilab/modules/tclsci/sci_gateway/c/sci_TCL_DoOneEvent.c
scilab/modules/tclsci/sci_gateway/c/sci_TCL_EvalFile.c
scilab/modules/tclsci/sci_gateway/c/sci_TCL_EvalStr.c
scilab/modules/tclsci/sci_gateway/c/sci_TCL_ExistArray.c
scilab/modules/tclsci/sci_gateway/c/sci_TCL_ExistInterp.c
scilab/modules/tclsci/sci_gateway/c/sci_TCL_ExistVar.c
scilab/modules/tclsci/sci_gateway/c/sci_TCL_GetVar.c
scilab/modules/tclsci/sci_gateway/c/sci_TCL_GetVersion.c
scilab/modules/tclsci/sci_gateway/c/sci_TCL_UnsetVar.c
scilab/modules/tclsci/sci_gateway/c/sci_opentk.c
scilab/modules/time/sci_gateway/c/sci_calendar.c
scilab/modules/time/sci_gateway/c/sci_realtime.c
scilab/modules/ui_data/sci_gateway/cpp/sci_browsevar.cpp
scilab/modules/ui_data/sci_gateway/cpp/sci_closeEditvar.cpp
scilab/modules/ui_data/sci_gateway/cpp/sci_filebrowser.cpp
scilab/modules/ui_data/sci_gateway/cpp/sci_updatebrowsevar.cpp
scilab/modules/umfpack/sci_gateway/c/sci_res_with_prec.c
scilab/modules/umfpack/sci_gateway/c/sci_taucs_chdel.c
scilab/modules/umfpack/sci_gateway/c/sci_taucs_chfact.c
scilab/modules/umfpack/sci_gateway/c/sci_taucs_chget.c
scilab/modules/umfpack/sci_gateway/c/sci_taucs_chinfo.c
scilab/modules/umfpack/sci_gateway/c/sci_taucs_chsolve.c
scilab/modules/umfpack/sci_gateway/c/sci_umf_ludel.c
scilab/modules/umfpack/sci_gateway/c/sci_umf_lufact.c
scilab/modules/umfpack/sci_gateway/c/sci_umf_luget.c
scilab/modules/umfpack/sci_gateway/c/sci_umf_luinfo.c
scilab/modules/umfpack/sci_gateway/c/sci_umf_lusolve.c
scilab/modules/umfpack/sci_gateway/c/sci_umfpack.c
scilab/modules/windows_tools/sci_gateway/cpp/sci_createGUID.cpp
scilab/modules/windows_tools/sci_gateway/cpp/sci_dos.cpp
scilab/modules/windows_tools/sci_gateway/cpp/sci_findfileassociation.cpp
scilab/modules/windows_tools/sci_gateway/cpp/sci_getsystemmetrics.cpp
scilab/modules/windows_tools/sci_gateway/cpp/sci_istssession.cpp
scilab/modules/windows_tools/sci_gateway/cpp/sci_mcisendstring.cpp
scilab/modules/windows_tools/sci_gateway/cpp/sci_win64.cpp
scilab/modules/windows_tools/sci_gateway/cpp/sci_winopen.cpp
scilab/modules/windows_tools/sci_gateway/cpp/sci_winqueryreg.cpp
scilab/modules/xcos/sci_gateway/cpp/sci_xcosDiagramToScilab.cpp
scilab/modules/xml/sci_gateway/cpp/sci_htmlDump.cpp
scilab/modules/xml/sci_gateway/cpp/sci_htmlRead.cpp
scilab/modules/xml/sci_gateway/cpp/sci_htmlReadStr.cpp
scilab/modules/xml/sci_gateway/cpp/sci_htmlWrite.cpp
scilab/modules/xml/sci_gateway/cpp/sci_percent_XMLAttr_e.cpp
scilab/modules/xml/sci_gateway/cpp/sci_percent_XMLAttr_length.cpp
scilab/modules/xml/sci_gateway/cpp/sci_percent_XMLAttr_size.cpp
scilab/modules/xml/sci_gateway/cpp/sci_percent_XMLList_e.cpp
scilab/modules/xml/sci_gateway/cpp/sci_percent_XMLList_length.cpp
scilab/modules/xml/sci_gateway/cpp/sci_percent_XMLList_size.cpp
scilab/modules/xml/sci_gateway/cpp/sci_percent_c_i_XMLAttr.cpp
scilab/modules/xml/sci_gateway/cpp/sci_percent_foo_i_XMLList.cpp
scilab/modules/xml/sci_gateway/cpp/sci_percent_s_i_XMLList.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlAddNs.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlAppend.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlAsNumber.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlAsText.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlDelete.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlDocument.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlDump.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlElement.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlFormat.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlGetNsByHref.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlGetNsByPrefix.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlGetOpenDocs.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlIsValidObject.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlName.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlNs.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlRead.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlReadStr.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlRemove.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlSetAttributes.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlValidate.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlValidationFile.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlWrite.cpp
scilab/modules/xml/sci_gateway/cpp/sci_xmlXPath.cpp
scilab/modules/xml/src/cpp/XMLList_insertion.hxx
scilab/modules/xml/src/cpp/extraction.hxx
scilab/modules/xml/src/cpp/insertion.hxx

index 27c30d6..9d7bf9b 100644 (file)
@@ -26,7 +26,7 @@ types::Function::ReturnValue sci_cppmultiplybypi(types::typed_list &in, int _iRe
     }
 
     /* check that we have only 1 output argument */
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected."), "cppmultiplybypi", 1);
         return types::Function::Error;
index 8c24527..097c8dd 100644 (file)
@@ -25,7 +25,7 @@ types::Function::ReturnValue sci_cppsub(types::typed_list &in, int _iRetCount, t
     }
 
     /* check that we have only 1 output argument */
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected."), "cpp_sub", 1);
         return types::Function::Error;
index b909758..82eab2a 100644 (file)
@@ -25,7 +25,7 @@ types::Function::ReturnValue sci_cppsum(types::typed_list &in, int _iRetCount, t
     }
 
     /* check that we have only 1 output argument */
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected."), "cpp_sum", 1);
         return types::Function::Error;
index f4a559a..420bb10 100644 (file)
@@ -73,7 +73,7 @@ int sci_my_function(char *fname, unsigned long l)
 * a = my_function(a,b,c);
 */
   CheckRhs(3,3);
-  CheckLhs(1,1);
+  CheckLhs(0,1);
 
 }
  ]]></programlisting>
index 9d99932..c8f4cf4 100644 (file)
@@ -73,7 +73,7 @@ int sci_my_function(char *fname, unsigned long l)
 * a = my_function(a,b,c);
 */
   CheckRhs(3,3);
-  CheckLhs(1,1);
+  CheckLhs(0,1);
 
 }
  ]]></programlisting>
index 8ead217..62840e5 100644 (file)
@@ -113,7 +113,7 @@ int read_write_boolean(char *fname,void* pvApiCtx)
 
     //check input and output arguments
     CheckInputArgument(pvApiCtx, 1,1);
-    CheckOutputArgument(pvApiCtx, 1,1);
+    CheckOutputArgument(pvApiCtx, 0,1);
 
     //get variable address of the first input argument
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
index 7cd0b2d..7f84ff2 100644 (file)
@@ -174,7 +174,7 @@ int read_write_boolean(char *fname,void* pvApiCtx)
 
     //check input and output arguments
     CheckInputArgument(pvApiCtx, 1,1);
-    CheckOutputArgument(pvApiCtx, 1,1);
+    CheckOutputArgument(pvApiCtx, 0,1);
 
     //get variable address of the first input argument
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
index b5c1f32..f74174c 100644 (file)
@@ -139,7 +139,7 @@ int read_write_bsparse(char *fname,void* pvApiCtx)
 
     //check input and output arguments
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     //get variable address of the first input argument
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
index 9e9746d..27d1871 100644 (file)
@@ -214,7 +214,7 @@ int read_write_bsparse(char *fname,void* pvApiCtx)
 
     //check input and output arguments
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     //get variable address of the first input argument
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
index 725cd92..de374ac 100644 (file)
@@ -54,7 +54,7 @@ fileData = ['#include ""api_scilab.h""'
 '    char* pstVarName = NULL;'
 ''
 '    CheckRhs(1,1);'
-'    CheckLhs(1,1);'
+'    CheckLhs(0,1);'
 ''
 '    sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);'
 '    if(sciErr.iErr)'
index eea95e7..69af3f4 100644 (file)
@@ -125,7 +125,7 @@ int read_double(char *fname,void* pvApiCtx)
 
        //check input and output arguments
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     /************************
        *    First variable    *
index fdbec5e..404eb9f 100644 (file)
@@ -103,7 +103,7 @@ int read_write_handle(char *fname,void* pvApiCtx)
 
     //check input and output arguments
     CheckInputArgument(pvApiCtx, 1,1);
-    CheckOutputArgument(pvApiCtx, 1,1);
+    CheckOutputArgument(pvApiCtx, 0,1);
 
     //get variable address of the first input argument
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
index ecc5f9d..fe4263d 100644 (file)
@@ -164,7 +164,7 @@ int read_write_handle(char *fname,void* pvApiCtx)
 
     //check input and output arguments
     CheckInputArgument(pvApiCtx, 1,1);
-    CheckOutputArgument(pvApiCtx, 1,1);
+    CheckOutputArgument(pvApiCtx, 0,1);
 
     //get variable address of the first input argument
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
index 48a016e..38ccf59 100644 (file)
@@ -82,7 +82,7 @@ int read_pointer(char *fname,void* pvApiCtx)
        SciErr sciErr;
 
        CheckInputArgument(pvApiCtx, 0, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
        if(nbInputArgument(pvApiCtx) == 0)
        {//create mode
index a05fb21..2de85ea 100644 (file)
@@ -138,7 +138,7 @@ int read_pointer(char *fname,void* pvApiCtx)
        SciErr sciErr;
 
        CheckInputArgument(pvApiCtx, 0, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
        if(nbInputArgument(pvApiCtx) == 0)
        {//create mode
index 2bf44a7..4416df0 100644 (file)
@@ -98,7 +98,7 @@ int read_poly(char *fname,void* pvApiCtx)
 
        //check input and output arguments
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
        sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
        if(sciErr.iErr)
index 758b9a0..46fdc57 100644 (file)
@@ -134,7 +134,7 @@ int read_poly(char *fname,void* pvApiCtx)
 
        //check input and output arguments
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
        sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
        if(sciErr.iErr)
index 9e4d9a0..dbae9df 100644 (file)
@@ -136,7 +136,7 @@ int read_string(char *fname,void* pvApiCtx)
        //check input and output arguments
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
        //get variable address
        sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
index 1c07065..e0651cb 100644 (file)
@@ -114,7 +114,7 @@ int read_write_boolean(char *fname,void* pvApiCtx)
     int* piBool     = NULL;
     // 入力/出力引数を確認
     CheckInputArgument(pvApiCtx, 1,1);
-    CheckOutputArgument(pvApiCtx, 1,1);
+    CheckOutputArgument(pvApiCtx, 0,1);
     // 最初の引数の変数アドレスを取得
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if(sciErr.iErr)
index ab24f7e..7cfa19c 100644 (file)
@@ -176,7 +176,7 @@ int read_write_boolean(char *fname,void* pvApiCtx)
     int* piBool     = NULL;
     // 入力/出力引数を確認
     CheckInputArgument(pvApiCtx, 1,1);
-    CheckOutputArgument(pvApiCtx, 1,1);
+    CheckOutputArgument(pvApiCtx, 0,1);
     // 最初の入力引数の変数アドレスを取得
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if(sciErr.iErr)
index 93b842c..b9a4e83 100644 (file)
@@ -138,7 +138,7 @@ int read_write_bsparse(char *fname,void* pvApiCtx)
     int* piNewCol           = NULL;
     // 入力/出力引数を確認
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     // 最初の入力引数の変数アドレスを取得
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if(sciErr.iErr)
index e9d11e2..d7b33e0 100644 (file)
@@ -213,7 +213,7 @@ int read_write_bsparse(char *fname,void* pvApiCtx)
     int* piNewCol           = NULL;
     // 入力/出力引数を確認
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     // 最初の入力引数の変数アドレスを取得
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if(sciErr.iErr)
index 1adc875..d11d69d 100644 (file)
@@ -54,7 +54,7 @@ fileData = ['#include ""api_scilab.h""'
 '    char* pstVarName = NULL;'
 ''
 '    CheckRhs(1,1);'
-'    CheckLhs(1,1);'
+'    CheckLhs(0,1);'
 ''
 '    sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);'
 '    if(sciErr.iErr)'
index d76115b..7039186 100644 (file)
@@ -124,7 +124,7 @@ int read_double(char *fname,void* pvApiCtx)
        double* pdblImg         = NULL;
        // 入力/出力引数を確認
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     /************************
        *    最初の変数    *
        ************************/
index 3a56c9c..b681e0e 100644 (file)
@@ -102,7 +102,7 @@ int read_write_handle(char *fname,void* pvApiCtx)
     long long* pllHandle   = NULL;
     //入力/出力引数を確認
     CheckInputArgument(pvApiCtx, 1,1);
-    CheckOutputArgument(pvApiCtx, 1,1);
+    CheckOutputArgument(pvApiCtx, 0,1);
     //最初の入力引数の変数アドレスを取得
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if(sciErr.iErr)
index fb5cd63..a45af1e 100644 (file)
@@ -163,7 +163,7 @@ int read_write_handle(char *fname,void* pvApiCtx)
     long long* pllHandle   = NULL;
     //入力/出力引数を確認
     CheckInputArgument(pvApiCtx, 1,1);
-    CheckOutputArgument(pvApiCtx, 1,1);
+    CheckOutputArgument(pvApiCtx, 0,1);
     //最初の入力引数の変数アドレスを取得
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if(sciErr.iErr)
index ec59c3c..0cab310 100644 (file)
@@ -81,7 +81,7 @@ int read_pointer(char *fname,void* pvApiCtx)
 {
        SciErr sciErr;
        CheckInputArgument(pvApiCtx, 0, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
        if(nbInputArgument(pvApiCtx) == 0)
        {// モードを作成
                double* pdblData    = (double*)malloc(sizeof(double) * 2 * 2);
index eab9771..745caa3 100644 (file)
@@ -137,7 +137,7 @@ int read_pointer(char *fname,void* pvApiCtx)
 {
        SciErr sciErr;
        CheckInputArgument(pvApiCtx, 0, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
        if(nbInputArgument(pvApiCtx) == 0)
        {//モードを作成
                double* pdblData    = (double*)malloc(sizeof(double) * 2 * 2);
index 55d862b..b3377e5 100644 (file)
@@ -97,7 +97,7 @@ int read_poly(char *fname,void* pvApiCtx)
        char* pstVarname        = NULL;
        //入力/出力引数を確認
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
        sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
        if(sciErr.iErr)
        {
index 11a33c6..422a71b 100644 (file)
@@ -135,7 +135,7 @@ int read_poly(char *fname,void* pvApiCtx)
        char* pstVarname        = NULL;
        //入力/出力引数を確認
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
        sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
        if(sciErr.iErr)
        {
index 20332d7..b92f2d6 100644 (file)
@@ -135,7 +135,7 @@ int read_string(char *fname,void* pvApiCtx)
        char* pstOut    = NULL;
        //入力/出力引数の確認
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
        //変数アドレスを取得
        sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
        if(sciErr.iErr)
index cf88522..cc3a3e8 100644 (file)
@@ -26,7 +26,7 @@ int sci_bug_11538(char* fname, void* pvApiCtx)
     char* pstData = NULL;
 
     CheckRhs(1, 1);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index 39d0a02..61248c5 100644 (file)
@@ -22,7 +22,7 @@ int sci_bug9264(char *fname, void* pvApiCtx)
     int rows = 0, cols = 0;
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
     if (err.iErr)
index 36cb232..0c8d804 100644 (file)
@@ -23,7 +23,7 @@ int sci_deleteNamedVariable(char *fname, void* pvApiCtx)
     char* pstVarName = NULL;
 
     CheckRhs(1, 1);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index d0e6102..51af52f 100644 (file)
@@ -33,7 +33,7 @@ int read_double(char *fname, void* pvApiCtx)
 
     //check input and output arguments
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     /************************
     *    First variable    *
index 4d9ddd6..5d89764 100644 (file)
@@ -24,7 +24,7 @@ int read_pointer(char *fname, void* pvApiCtx)
     SciErr sciErr;
 
     CheckInputArgument(pvApiCtx, 0, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     if (nbInputArgument(pvApiCtx) == 0)
     {
index 36204f8..9b941b6 100644 (file)
@@ -35,7 +35,7 @@ int read_poly(char *fname, void* pvApiCtx)
 
     //check input and output arguments
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index 36b6230..9f7e5d3 100644 (file)
@@ -30,7 +30,7 @@ int read_write_boolean(char *fname, void *pvApiCtx)
 
     //check input and output arguments
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     //get variable address of the first input argument
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
index 42ec708..97e8a54 100644 (file)
@@ -40,7 +40,7 @@ int read_write_bsparse(char *fname, void* pvApiCtx)
 
     //check input and output arguments
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     //get variable address of the first input argument
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
index 10ad787..42f6036 100644 (file)
@@ -37,7 +37,7 @@ int read_string(char *fname, void* pvApiCtx)
     //check input and output arguments
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     //get variable address
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
index 3262f17..7d876e5 100644 (file)
@@ -73,7 +73,7 @@ int sci_dnaupd(char *fname, void *pvApiCtx)
     int WORKL, mWORKL, nWORKL;
     int INFO,  mINFO,  nINFO;
 
-    int minlhs = 1, minrhs = 14, maxlhs = 8, maxrhs = 14;
+    int minlhs = 0, minrhs = 14, maxlhs = 8, maxrhs = 14;
     int LDV, LWORKL;
     int sizeWORKL = 0;
 
index 1dc25ac..688389e 100644 (file)
@@ -97,7 +97,7 @@ int sci_dneupd(char *fname, void *pvApiCtx)
     int WORKL,    mWORKL,    nWORKL;
     int INFO,     mINFO,     nINFO;
 
-    int minlhs = 1, minrhs = 22, maxlhs = 10, maxrhs = 22;
+    int minlhs = 0, minrhs = 22, maxlhs = 10, maxrhs = 22;
     int LDZ, LDV, LWORKL;
     int sizeWORKL = 0;
 
index a1a653b..8c03267 100644 (file)
@@ -72,7 +72,7 @@ int sci_dsaupd(char *fname, void *pvApiCtx)
     int WORKL, mWORKL, nWORKL;
     int INFO,  mINFO,  nINFO;
 
-    int minlhs = 1, minrhs = 14, maxlhs = 8, maxrhs = 14;
+    int minlhs = 0, minrhs = 14, maxlhs = 8, maxrhs = 14;
     int LDV, LWORKL;
     int sizeWORKL = 0;
 
index 86274db..9ae4e6c 100644 (file)
@@ -90,7 +90,7 @@ int sci_dseupd(char *fname, void *pvApiCtx)
     int WORKL,    mWORKL,    nWORKL;
     int INFO,     mINFO,     nINFO;
 
-    int minlhs = 1, minrhs = 19, maxlhs = 9, maxrhs = 19;
+    int minlhs = 0, minrhs = 19, maxlhs = 9, maxrhs = 19;
     int LDZ, LDV, LWORKL;
     int sizeWORKL = 0;
 
index ff5518e..020af9f 100644 (file)
@@ -80,7 +80,7 @@ int sci_znaupd(char *fname, void *pvApiCtx)
     int RWORK, mRWORK, nRWORK;
     int INFO,  mINFO,  nINFO;
 
-    int minlhs = 1, minrhs = 15, maxlhs = 9, maxrhs = 15;
+    int minlhs = 0, minrhs = 15, maxlhs = 9, maxrhs = 15;
     int LDV, LWORKL;
     int sizeWORKL = 0;
 
index 1ba0564..b73e2c9 100644 (file)
@@ -99,7 +99,7 @@ int sci_zneupd(char *fname, void *pvApiCtx)
     int RWORK,    mRWORK,    nRWORK;
     int INFO,     mINFO,     nINFO;
 
-    int minlhs = 1, minrhs = 21, maxlhs = 9, maxrhs = 21;
+    int minlhs = 0, minrhs = 21, maxlhs = 9, maxrhs = 21;
     int LDZ, LDV, LWORKL;
     int sizeWORKL = 0;
 
index db76707..9a99381 100644 (file)
@@ -158,7 +158,16 @@ void RunVisitorT<T>::visitprivate(const CallExp &e)
         }
 
         setExpectedSize(iSaveExpectedSize);
-        iRetCount = std::max(1, iRetCount);
+
+        // override iRetCount only in relevant cases
+        if (pIT->isCallable() && e.getParent()->isSeqExp())
+        {
+            iRetCount = std::max(0, iRetCount);
+        }
+        else
+        {
+            iRetCount = std::max(1, iRetCount);
+        }
 
         for (int i = 0; i < iLoopSize; i++)
         {
index b04f4bf..e9160e7 100644 (file)
@@ -139,9 +139,9 @@ void RunVisitorT<T>::visitprivate(const SeqExp  &e)
 
                     try
                     {
-                        //in this case of calling, we can return only one value
+                        //in this case of calling, we can return at most one value
                         int iSaveExpectedSize = getExpectedSize();
-                        setExpectedSize(1);
+                        setExpectedSize(0);
 
                         pCall->invoke(in, opt, getExpectedSize(), out, **it);
                         setExpectedSize(iSaveExpectedSize);
index c5da1eb..ec6de6d 100644 (file)
@@ -28,7 +28,6 @@ extern "C"
 #include "core_math.h"
 #include "charEncoding.h"
 #include "Scierror.h"
-#include "sciprint.h"
 #include "localization.h"
 #include "sci_path.h"
 #include "sci_malloc.h"
@@ -136,7 +135,7 @@ Function* Function::createFunction(const std::wstring& _wstName, const std::wstr
     {
         return new DynamicFunction(_wstName, _wstEntryPointName, _wstLibName, _iType, _pLoadDeps, _wstModule, _bCloseLibAfterCall);
     }
-    
+
     // must never append
     return NULL;
 }
@@ -309,6 +308,7 @@ WrapFunction* WrapFunction::clone()
 
 Function::ReturnValue WrapFunction::call(typed_list &in, optional_list &opt, int _iRetCount, typed_list &out)
 {
+
     int ret = 1;
     int inSize = (int)in.size();
     int optSize = (int)opt.size();
@@ -326,9 +326,9 @@ Function::ReturnValue WrapFunction::call(typed_list &in, optional_list &opt, int
 
     ReturnValue retVal = Callable::OK;
     GatewayStruct gStr;
-    _iRetCount = std::max(1, _iRetCount);
     gStr.m_iIn = inSize + optSize;
-    gStr.m_iOut = _iRetCount;
+    gStr.m_iOut = std::max(0, _iRetCount);
+    _iRetCount = std::max(1, _iRetCount);
 
     //copy input parameter to prevent calling gateway modifies input data
     typed_list inCopy;
@@ -492,7 +492,8 @@ WrapMexFunction* WrapMexFunction::clone()
 
 Function::ReturnValue WrapMexFunction::call(typed_list &in, optional_list &/*opt*/, int _iRetCount, typed_list &out)
 {
-    typedef struct __MAXARRAY__ {
+    typedef struct __MAXARRAY__
+    {
         int* ptr;
     } mxArray;
 
@@ -536,7 +537,7 @@ Function::ReturnValue WrapMexFunction::call(typed_list &in, optional_list &/*opt
         throw ie;
     }
 
-    if (_iRetCount == 1 && plhs[0] == NULL)
+    if (_iRetCount <= 1 && plhs[0] == NULL)
     {
         //dont copy empty values, juste return "no value"
         return retVal;
@@ -602,7 +603,7 @@ Function::ReturnValue WrapCFunction::call(typed_list& in, optional_list& opt, in
     {
         GatewayCStruct gcs;
         gcs.name = m_stName;
-        out.resize(_iRetCount, NULL);
+        out.resize(std::max(1, _iRetCount), NULL);
         if (m_pCFunc((void*)&gcs, (int)in.size(), (scilabVar*)(in.data()), (int)opt.size(), (scilabOpt)&opt, _iRetCount, (scilabVar*)(out.data())))
         {
             retVal = Error;
@@ -615,7 +616,7 @@ Function::ReturnValue WrapCFunction::call(typed_list& in, optional_list& opt, in
 
     if (retVal == OK)
     {
-        if (_iRetCount == 1 && out[0] == NULL)
+        if (_iRetCount <= 1 && out[0] == NULL)
         {
             //dont copy empty values, juste return "no value"
             out.clear();
index a60bdd7..c78c572 100644 (file)
@@ -31,7 +31,6 @@ extern "C"
 {
 #include "localization.h"
 #include "Scierror.h"
-#include "sciprint.h"
 #include "sci_malloc.h"
 #include "os_string.h"
 }
@@ -175,6 +174,9 @@ Callable::ReturnValue Macro::call(typed_list &in, optional_list &opt, int _iRetC
 {
     int rhs = (int)in.size();
     bool bVarargout = false;
+
+    int  iRetCount = std::max(0, _iRetCount);
+
     ReturnValue RetVal = Callable::OK;
     symbol::Context *pContext = symbol::Context::getInstance();
 
@@ -280,6 +282,7 @@ Callable::ReturnValue Macro::call(typed_list &in, optional_list &opt, int _iRetC
     // varargout is a list
     // varargout can containt more items than caller need
     // varargout must containt at leat caller needs
+
     if (m_outputArgs->size() >= 1 && m_outputArgs->back()->getSymbol().getName() == L"varargout")
     {
         bVarargout = true;
@@ -304,7 +307,8 @@ Callable::ReturnValue Macro::call(typed_list &in, optional_list &opt, int _iRetC
         m_pDblArgOut = m_pDblArgOut->clone();
         m_pDblArgOut->IncreaseRef();
     }
-    m_pDblArgOut->set(0, _iRetCount);
+
+    m_pDblArgOut->set(0, iRetCount);
 
     pContext->put(m_Nargin, m_pDblArgIn);
     pContext->put(m_Nargout, m_pDblArgOut);
@@ -338,7 +342,7 @@ Callable::ReturnValue Macro::call(typed_list &in, optional_list &opt, int _iRetC
     }
 
     //nb excepted output without varargout
-    int iRet = std::min((int)m_outputArgs->size() - (bVarargout ? 1 : 0), _iRetCount);
+    int iRet = std::min((int)m_outputArgs->size() - (bVarargout ? 1 : 0), std::max(1, iRetCount));
 
     //normal output management
     //for (std::list<symbol::Variable*>::iterator i = m_outputArgs->begin(); i != m_outputArgs->end() && _iRetCount; ++i, --_iRetCount)
@@ -397,7 +401,7 @@ Callable::ReturnValue Macro::call(typed_list &in, optional_list &opt, int _iRetC
         }
 
         List* pVarOut = pOut->getAs<List>();
-        const int size = std::min(pVarOut->getSize(), _iRetCount - (int)out.size());
+        const int size = std::min(pVarOut->getSize(), iRetCount - (int)out.size());
         for (int i = 0 ; i < size ; ++i)
         {
             InternalType* pIT = pVarOut->get(i);
index 27a3253..31b0c42 100644 (file)
@@ -55,6 +55,7 @@ std::wstring Overload::buildOverloadName(const std::wstring& _stFunctionName, ty
 
 types::Function::ReturnValue Overload::generateNameAndCall(const std::wstring& _stFunctionName, types::typed_list &in, int _iRetCount, types::typed_list &out, bool _isOperator)
 {
+    _iRetCount = std::max(1,_iRetCount);
     std::wstring stFunc = buildOverloadName(_stFunctionName, in, _iRetCount, _isOperator);
     if (symbol::Context::getInstance()->get(symbol::Symbol(stFunc)))
     {
@@ -83,6 +84,7 @@ types::Function::ReturnValue Overload::generateNameAndCall(const std::wstring& _
 
 types::Function::ReturnValue Overload::call(const std::wstring& _stOverloadingFunctionName, types::typed_list &in, int _iRetCount, types::typed_list &out, bool _isOperator)
 {
+    _iRetCount = std::max(1,_iRetCount);
     types::InternalType *pIT = symbol::Context::getInstance()->get(symbol::Symbol(_stOverloadingFunctionName));
     types::Callable *pCall = NULL;
     try
diff --git a/scilab/modules/ast/tests/unit_tests/argn.tst b/scilab/modules/ast/tests/unit_tests/argn.tst
new file mode 100644 (file)
index 0000000..8a5e3af
--- /dev/null
@@ -0,0 +1,72 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2019 - Stéphane MOTTELET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- NO CHECK REF -->
+// <-- TEST WITH GRAPHIC -->
+
+// In the below functions
+// "expected_n_lhs" is the number of expected lhs
+// as seen by the function in argn(1) value
+
+function varargout = lhs_test(expected_n_lhs)
+    assert_checkequal(argn(1), expected_n_lhs)
+    if argn(1)==1
+        varargout(1) = 1:10
+    end
+end
+
+function varargout = lhs_test_struct(expected_n_lhs)
+    assert_checkequal(argn(1), expected_n_lhs)
+    if argn(1)==1
+        varargout(1) = struct("a",1,"b",2)
+    end
+end
+
+function varargout = new_plot(expected_n_lhs, varargin)
+    assert_checkequal(argn(1), expected_n_lhs)
+    clf
+    plot(varargin(:))
+    if argn(1) == 1
+        varargout(1) = gce()
+    end
+end
+
+// argn(1) == 0 when there is no explicit or implicit lhs
+
+lhs_test(0)
+lhs_test_struct(0)
+new_plot(0, 1:10, sin(1:10))
+
+// argn(1) == 1 when there is an explicit lhs
+
+x = lhs_test(1)
+s = lhs_test_struct(1)
+h = new_plot(1, 1:10, sin(1:10))
+
+// argn(1) == 1 when there is no explicit lhs but the function call
+// is used in expression or as an input argument
+// in another function call
+
+- lhs_test(1)
++ lhs_test(1)
+1 + lhs_test(1)
+cos(lhs_test(1))
+fieldnames(lhs_test_struct(1))
+set(new_plot(1, 1:10, sin(1:10)),"visible","off")
+
+// argn(1) == 1 when there is no explicit lhs but recursive extraction
+// is used on the result of function call
+
+lhs_test(1)($) + lhs_test(1)(1)
+lhs_test_struct(1).a + lhs_test_struct(1).b
+new_plot(1, 1:10, sin(1:10)).visible
+
+// argn(1) == 1 when there is no explicit lhs but  insertion
+// is used on the result of function call, typically of graphic handle type
+
+//new_plot(1, 1:10, sin(1:10)).visible = "on"
+
index 3c8874f..9bb82ef 100644 (file)
@@ -17,7 +17,7 @@
 #include "bool.hxx"
 #include "newtype.hxx"
 
-extern "C" 
+extern "C"
 {
 #include "Scierror.h"
 #include "localization.h"
@@ -32,7 +32,7 @@ types::Function::ReturnValue sci_newtype(types::typed_list &in, int _iRetCount,
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected."), "newtype", 1);
         return types::Function::Error;
index 6c44c82..1316710 100644 (file)
@@ -33,6 +33,7 @@ static void getCoordFromIndex(int _iIndex, int* _piIndexes, int* _piDims, int _i
 types::Function::ReturnValue sci_find(types::typed_list &in, int _iRetCount, types::typed_list &out)
 {
     int iMax = -1;
+    int iRetCount = std::max(1, _iRetCount);
 
     if (in.size() == 0 || in.size() > 2)
     {
@@ -64,7 +65,7 @@ types::Function::ReturnValue sci_find(types::typed_list &in, int _iRetCount, typ
     {
         //call overload for other types
         std::wstring wstFuncName = L"%" + in[0]->getShortTypeStr() + L"_find";
-        return Overload::call(wstFuncName, in, _iRetCount, out);
+        return Overload::call(wstFuncName, in, iRetCount, out);
     }
 
     types::GenericType* pGT = in[0]->getAs<types::GenericType>();
@@ -143,19 +144,19 @@ types::Function::ReturnValue sci_find(types::typed_list &in, int _iRetCount, typ
 
         //call overload for other types
         std::wstring wstFuncName = L"%" + in[0]->getShortTypeStr() + L"_find";
-        return Overload::call(wstFuncName, in, _iRetCount, out);
+        return Overload::call(wstFuncName, in, iRetCount, out);
     }
 
     if (iValues == 0)
     {
-        for (int i = 0 ; i < _iRetCount ; i++)
+        for (int i = 0 ; i < iRetCount ; i++)
         {
             out.push_back(types::Double::Empty());
         }
     }
     else
     {
-        if (_iRetCount == 1)
+        if (iRetCount <= 1)
         {
             types::Double* dbl = new types::Double(1, iValues);
             double* p = dbl->get();
@@ -173,8 +174,8 @@ types::Function::ReturnValue sci_find(types::typed_list &in, int _iRetCount, typ
         int* piRefDims = pGT->getDimsArray();
         int iRefDims = pGT->getDims();
 
-        int* piDims = new int[_iRetCount];
-        int iDims = _iRetCount;
+        int* piDims = new int[iRetCount];
+        int iDims = iRetCount;
 
         if (iDims == iRefDims)
         {
@@ -212,7 +213,7 @@ types::Function::ReturnValue sci_find(types::typed_list &in, int _iRetCount, typ
         int** piCoord = new int*[iValues];
         for (int i = 0 ; i < iValues ; i++)
         {
-            piCoord[i] = new int[_iRetCount];
+            piCoord[i] = new int[iRetCount];
         }
 
         for (int i = 0 ; i < iValues ; i++)
@@ -220,7 +221,7 @@ types::Function::ReturnValue sci_find(types::typed_list &in, int _iRetCount, typ
             getCoordFromIndex(piIndex[i], piCoord[i], piDims, iDims);
         }
 
-        for (int i = 0 ; i < _iRetCount ; i++)
+        for (int i = 0 ; i < iRetCount ; i++)
         {
             types::Double* pOut = new types::Double(1, iValues);
             for (int j = 0 ; j < iValues ; j++)
index 5ece042..ff4ca5c 100644 (file)
@@ -73,7 +73,7 @@ int sci_contr(char* fname, void* pvApiCtx)
     /*     [NCONT,U,KSTAIR,V,A,B]=ab01od(A,B,[TOL])   */
 
     CheckInputArgument(pvApiCtx, 2, 3);
-    CheckOutputArgument(pvApiCtx, 1, 6);
+    CheckOutputArgument(pvApiCtx, 0, 6);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddrptrA);
     if (sciErr.iErr)
index 09ab88a..f53a52c 100644 (file)
@@ -211,7 +211,7 @@ int sci_linmeq(char *fname, void* pvApiCtx)
 
     // Check for proper number of arguments.
     CheckInputArgument(pvApiCtx, 3, 7);
-    CheckOutputArgument(pvApiCtx, 1, 2);
+    CheckOutputArgument(pvApiCtx, 0, 2);
 
     // Check dimensions of input parameters and read/set scalar parameters.
     //   task
@@ -766,7 +766,7 @@ int sci_linmeq(char *fname, void* pvApiCtx)
             return 1;
         }
 
-        if (nbOutputArgument(pvApiCtx) == 1)
+        if (nbOutputArgument(pvApiCtx) <= 1)
         {
             sciErr = allocMatrixOfDoubleAsInteger(pvApiCtx, ++iNbvars, iOne, iOne, &lIWORK);
             if (sciErr.iErr)
index e1a3189..65809ff 100644 (file)
@@ -52,7 +52,7 @@ int sci_mucomp(char *fname, void* pvApiCtx)
 
     int minrhs = 3;
     int maxrhs = 3;
-    int minLhs = 1;
+    int minLhs = 0;
     int maxLhs = 3;
 
     int iOne  = 1;
@@ -85,7 +85,7 @@ int sci_mucomp(char *fname, void* pvApiCtx)
 
     if (N == 0)
     {
-        if (nbOutputArgument(pvApiCtx) == 1)
+        if (nbOutputArgument(pvApiCtx) <= 1)
         {
             sciErr = allocMatrixOfDouble(pvApiCtx, 2, N, iOne, &lBOUND);
             if (sciErr.iErr)
@@ -263,7 +263,7 @@ int sci_mucomp(char *fname, void* pvApiCtx)
         return 1;
     }
 
-    if (nbOutputArgument(pvApiCtx) == 1)
+    if (nbOutputArgument(pvApiCtx) <= 1)
     {
         AssignOutputVariable(pvApiCtx, 1) = 4;
     }
index ad308c5..53084a0 100644 (file)
@@ -29,7 +29,7 @@ int sci_rankqr(char* fname, void* pvApiCtx)
     int ret = 0;
 
     CheckInputArgument(pvApiCtx, 1, 3);
-    CheckOutputArgument(pvApiCtx, 1, 5);
+    CheckOutputArgument(pvApiCtx, 0, 5);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index 99c6509..e8fbecb 100644 (file)
@@ -52,7 +52,7 @@ int sci_ricc(char *fname, void* pvApiCtx)
 
     int minrhs = 4;
     int maxrhs = 5;
-    int minLhs = 1;
+    int minLhs = 0;
     int maxLhs = 3;
 
     int N = 0, LWORKMIN = 0, INFO = 0;
@@ -354,7 +354,7 @@ int sci_ricc(char *fname, void* pvApiCtx)
         }
     }
 
-    if (nbOutputArgument(pvApiCtx) == 1)
+    if (nbOutputArgument(pvApiCtx) <= 1)
     {
         AssignOutputVariable(pvApiCtx, 1) = k;
     }
index 30d6e32..70f67a2 100644 (file)
@@ -41,7 +41,7 @@ int sci_rrankqr(char *fname, void* pvApiCtx)
 
     int minrhs = 1;
     int maxrhs = 3;
-    int minlhs = 1;
+    int minlhs = 0;
     int maxlhs = 5;
 
     char JOBQR      = 'Q';
index 33496ce..6aa5f7a 100644 (file)
@@ -50,7 +50,7 @@ int sci_zrankqr(char *fname, void* pvApiCtx)
 
     int minrhs = 1;
     int maxrhs = 3;
-    int minlhs = 1;
+    int minlhs = 0;
     int maxlhs = 5;
 
     char JOBQR      = 'Q';
index df3ab18..3a12a44 100644 (file)
@@ -61,7 +61,7 @@ types::Function::ReturnValue sci_arl2_ius(types::typed_list &in, int _iRetCount,
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1 && _iRetCount > 3)
+    if (_iRetCount > 3)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d or %d expected.\n"), "arl2_ius", 1, 3);
         return types::Function::Error;
index 1f2a279..7936e79 100644 (file)
@@ -40,7 +40,7 @@ types::Function::ReturnValue sci_ereduc(types::typed_list &in, int _iRetCount, t
         return types::Function::Error;
     }
 
-    if (_iRetCount < 1 || _iRetCount > 5)
+    if (_iRetCount > 5)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "ereduc", 1, 5);
         return types::Function::Error;
index 24aa707..8a339df 100644 (file)
@@ -46,7 +46,7 @@ types::Function::ReturnValue sci_fstair(types::typed_list &in, int _iRetCount, t
         return types::Function::Error;
     }
 
-    if (_iRetCount < 1 || _iRetCount > 10)
+    if (_iRetCount > 10)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "fstair", 1, 10);
         return types::Function::Error;
index 0901857..3b33dd9 100644 (file)
@@ -47,7 +47,7 @@ types::Function::ReturnValue sci_ldiv(types::typed_list &in, int _iRetCount, typ
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "ldiv", 1);
         return types::Function::Error;
index 46bb7b1..61765a5 100644 (file)
@@ -48,7 +48,7 @@ types::Function::ReturnValue sci_ltitr(types::typed_list &in, int _iRetCount, ty
         return types::Function::Error;
     }
 
-    if (_iRetCount < 1 || _iRetCount > 2)
+    if (_iRetCount > 2)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "ltitr", 1, 2);
         return types::Function::Error;
index 38b3440..2884ab9 100644 (file)
@@ -63,7 +63,7 @@ types::Function::ReturnValue sci_rtitr(types::typed_list &in, int _iRetCount, ty
         return types::Function::Error;
     }
 
-    if (_iRetCount < 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "rtitr", 1);
         return types::Function::Error;
index dab2a4e..9217035 100644 (file)
@@ -25,7 +25,7 @@
 int sci_fromc(char *fname, void* pvApiCtx)
 {
     CheckInputArgument(pvApiCtx, 0, 0);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     if ( IsFromC() )
     {
index 3555d1a..751c8ee 100644 (file)
@@ -25,7 +25,7 @@
 int sci_fromjava(char *fname, void* pvApiCtx)
 {
     CheckInputArgument(pvApiCtx, 0, 0);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     if ( IsFromJava() )
     {
index 8b01fa6..9c6e8d5 100644 (file)
@@ -64,7 +64,7 @@ types::Function::ReturnValue sci_completion(types::typed_list &in, int _iRetCoun
 
     if (in.size() == 1)
     {
-        if (_iRetCount == 1)
+        if (_iRetCount <= 1)
         {
             out.push_back(doCompletion(pcSomechars, &completion));
         }
@@ -90,7 +90,7 @@ types::Function::ReturnValue sci_completion(types::typed_list &in, int _iRetCoun
     }
     else // if(in.size() == 2)
     {
-        if (_iRetCount != 1)
+        if (_iRetCount > 1)
         {
             Scierror(78, _("%s: Wrong number of output argument(s): %d expected."), "completion", 1);
             FREE(pcSomechars);
index 509072b..c036d29 100644 (file)
@@ -39,7 +39,7 @@ int sci_completeline(char *fname, void *pvApiCtx)
     char *result            = NULL;
 
     CheckInputArgument(pvApiCtx, 5, 6);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
     if (sciErr.iErr)
index 34afb51..6b864ce 100644 (file)
@@ -31,7 +31,7 @@ int sci_getcommonpart(char *fname, void *pvApiCtx)
     int iSize           = 0;
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index 3d2caec..919fa72 100644 (file)
@@ -32,7 +32,7 @@ int sci_getfields(char *fname, void *pvApiCtx)
     int sizefields = 0;
 
     CheckRhs(1, 1);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index 07d90eb..4f161e7 100644 (file)
@@ -29,7 +29,7 @@ int sci_getfilepartlevel(char *fname, void *pvApiCtx)
     char* pcOutput  = NULL;
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index d9eab50..fc94486 100644 (file)
@@ -29,7 +29,7 @@ int sci_getpartlevel(char *fname, void *pvApiCtx)
     char* pcOutput  = NULL;
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index 4bf925b..50c8a3c 100755 (executable)
@@ -30,7 +30,7 @@ int sci_call_scifunc(char *fname)
     int pointerOnScilabFunction = 0;
 
     CheckRhs(3, 3);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     if (GetType(1) != sci_matrix)
     {
index 7cc1105..dda0762 100644 (file)
@@ -28,7 +28,7 @@ int sci_optional_parameters(char * fname)
     };
 
     int minrhs = 1, maxrhs = 1;
-    int minlhs = 1, maxlhs = 3;
+    int minlhs = 0, maxlhs = 3;
     int nopt, iopos, res;
     char buffer_name[csiz]; // csiz used for character coding
 
index 2ebf1ea..b755061 100644 (file)
@@ -25,7 +25,7 @@ int C2F(sci_debug)(char *fname, void *pvApiCtx)
     double dPreviousDebugLevel = 0.;
 
     Rhs = Max(Rhs, 0);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
     CheckRhs(0, 1);
 
     //dPreviousDebugLevel = (double)C2F(iop).ddt;
index 44ebaa4..62b3404 100644 (file)
@@ -33,12 +33,12 @@ types::Function::ReturnValue sci_analyzeroptions(types::typed_list &in, int _iRe
     /* Check the number of input argument */
     if (in.size() > 1)
     {
-        Scierror(999, _("%s: Wrong number of input arguments: %d or %d expected.\n"), "mode" , 0, 1);
+        Scierror(999, _("%s: Wrong number of input arguments: %d or %d expected.\n"), "mode", 0, 1);
         return types::Function::Error;
     }
 
     /* Check the number of output argument */
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "mode", 1);
         return types::Function::Error;
index 9d5eb00..7a5e66c 100644 (file)
@@ -82,7 +82,7 @@ types::Function::ReturnValue sci_argn(types::typed_list &in, int _iRetCount, typ
     }
     else
     {
-        if (iRhs == 0 && _iRetCount == 1)
+        if (iRhs == 0 && _iRetCount <= 1)
         {
             //arng() returns lhs
             out.push_back(pOut);
index 701a68e..dfc332f 100644 (file)
@@ -48,7 +48,7 @@ types::Function::ReturnValue sci_checkNamedArguments(types::typed_list &in, int
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), fname, 1);
         return types::Function::Error;
index 498bb97..ff00748 100644 (file)
@@ -29,12 +29,12 @@ types::Function::ReturnValue sci_errclear(types::typed_list &in, int _iRetCount,
     /* Check the number of input argument */
     if (in.size() > 1)
     {
-        Scierror(999, _("%s: Wrong number of input arguments: %d or %d expected.\n"), "errclear" , 0, 1);
+        Scierror(999, _("%s: Wrong number of input arguments: %d or %d expected.\n"), "errclear", 0, 1);
         return types::Function::Error;
     }
 
     /* Check the number of output argument */
-    if (_iRetCount != 1)
+    if (_iRetCount > 0)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "errclear", 0);
         return types::Function::Error;
index 1d8b888..962580f 100644 (file)
@@ -35,7 +35,7 @@ types::Function::ReturnValue sci_error(types::typed_list &in, int _iRetCount, ty
     int iErrorCode = DEFAULT_ERROR_CODE;
     types::String* pStrError = NULL;
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "error", 1);
         return types::Function::Error;
index 0a99f35..9775a93 100644 (file)
@@ -47,7 +47,7 @@ types::Function::ReturnValue sci_format(types::typed_list &in, int _iRetCount, t
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "format", 0, 1);
         return types::Function::Error;
index bfdd339..5f2c6e9 100644 (file)
@@ -34,7 +34,7 @@ types::Function::ReturnValue sci_funcprot(types::typed_list &in, int _iRetCount,
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(77, _("%s: Wrong number of output argument(s): %d expected."), "funcprot", 1);
         return types::Function::Error;
index f1261d4..b0f5317 100644 (file)
@@ -34,7 +34,7 @@ types::Function::ReturnValue sci_getmd5(types::typed_list &in, int _iRetCount, t
     bool bStringMode = false;
     char* pstPath = NULL;
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "getmd5", 1);
         return types::Function::Error;
index 68f6c5c..94e26d0 100644 (file)
@@ -39,7 +39,7 @@ types::Function::ReturnValue sci_getos(types::typed_list &in, int _iRetCount, ty
         return types::Function::Error;
     }
 
-    if (_iRetCount != 2 && _iRetCount != 1 && _iRetCount != -1)
+    if (_iRetCount > 2)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "getos", 1, 2);
         FREE(OperatingSystem);
index 51f0103..c60720b 100644 (file)
@@ -47,7 +47,7 @@ types::Function::ReturnValue sci_getversion(types::typed_list &in, int _iRetCoun
 
     if (in.size() == 0)
     {
-        if (_iRetCount != 1 && _iRetCount != 2)
+        if (_iRetCount > 2)
         {
             Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "getversion", 1, 2);
             return types::Function::Error;
@@ -77,7 +77,7 @@ types::Function::ReturnValue sci_getversion(types::typed_list &in, int _iRetCoun
             return types::Function::Error;
         }
 
-        if (_iRetCount != 1)
+        if (_iRetCount > 1)
         {
             Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "getversion", 1);
             return types::Function::Error;
index d190721..6c345f8 100644 (file)
@@ -30,7 +30,7 @@ extern "C"
 
 types::Function::ReturnValue sci_isfield(types::typed_list &in, int _iRetCount, types::typed_list &out)
 {
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(999, _("%s: Wrong number of output argument(s): %d expected.\n"), "isfield", 1);
         return types::Function::Error;
index 20fb541..a22d295 100644 (file)
@@ -37,7 +37,7 @@ types::Function::ReturnValue sci_macr2tree(types::typed_list &in, int _iRetCount
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "macr2tree", 1);
         return types::Function::Error;
index abc1175..3369680 100644 (file)
@@ -34,12 +34,12 @@ types::Function::ReturnValue sci_mode(types::typed_list &in, int _iRetCount, typ
     /* Check the number of input argument */
     if (in.size() > 1)
     {
-        Scierror(999, _("%s: Wrong number of input arguments: %d or %d expected.\n"), "mode" , 0, 1);
+        Scierror(999, _("%s: Wrong number of input arguments: %d or %d expected.\n"), "mode", 0, 1);
         return types::Function::Error;
     }
 
     /* Check the number of output argument */
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "mode", 1);
         return types::Function::Error;
index ad6e58e..eb5120d 100644 (file)
@@ -35,7 +35,7 @@ types::Function::ReturnValue sci_oldEmptyBehaviour(types::typed_list &in, int _i
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(999, _("%s: Wrong number of output argument(s): %d expected.\n"), "oldEmptyBehaviour", 1);
         return types::Function::Error;
index 20eff3a..01d3be5 100644 (file)
@@ -43,7 +43,7 @@ types::Function::ReturnValue sci_warning(types::typed_list &in, int _iRetCount,
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "warning", 1);
         return types::Function::Error;
index f8bb938..5e1108a 100644 (file)
@@ -63,7 +63,7 @@ types::Function::ReturnValue sci_what(types::typed_list &in, int _iRetCount, typ
     }
 
     // Check output arguments
-    if (_iRetCount != 1 && _iRetCount != 2)
+    if (_iRetCount > 2)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), fname, 1, 2);
         return types::Function::Error;
@@ -73,7 +73,7 @@ types::Function::ReturnValue sci_what(types::typed_list &in, int _iRetCount, typ
     pOutStringFctTmp = getFunctionsName(&sizeFct);
     pOutStringCmdTmp = getcommandkeywords(&sizeCmd);
 
-    if (_iRetCount == 1)
+    if (_iRetCount <= 1)
     {
         // Print functions
         printVarList("Internal Functions", pOutStringFctTmp, sizeFct);
index 96babc1..1782030 100644 (file)
@@ -24,7 +24,7 @@ int sci_call_xerbla(char *fname)
     int retXerbla = 0;
 
     CheckRhs(2, 2);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
     if (sciErr.iErr)
index dffe9f9..2196996 100644 (file)
@@ -58,6 +58,8 @@ types::Function::ReturnValue sci_getfield(types::typed_list &in, int _iRetCount,
         return sci_getfieldUserType(in, _iRetCount, out);
     }
 
+    _iRetCount = std::max(_iRetCount, 1);
+
     types::InternalType* pIndex = in[0];
     if (in[1]->isList() == false && in[1]->isMList() == false && in[1]->isTList() == false)
     {
index fb07a06..73df52a 100644 (file)
@@ -154,7 +154,7 @@ types::Function::ReturnValue sci_ode(types::typed_list &in, int _iRetCount, type
     // *** check number of output args according the methode. ***
     if (meth < 3)
     {
-        if (_iRetCount != 1 && _iRetCount != 3)
+        if (_iRetCount > 3)
         {
             Scierror(78, _("%s: Wrong number of output argument(s): %d or %d expected.\n"), "ode", 1, 3);
             return types::Function::Error;
@@ -170,7 +170,7 @@ types::Function::ReturnValue sci_ode(types::typed_list &in, int _iRetCount, type
     }
     else // meth > 3
     {
-        if (_iRetCount != 1)
+        if (_iRetCount > 1)
         {
             Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "ode", 1);
             return types::Function::Error;
@@ -870,7 +870,7 @@ types::Function::ReturnValue sci_ode(types::typed_list &in, int _iRetCount, type
         }
         case 5: // lsrgk (rk)
         {
-            rworkSize = 1+9 * (*YSize);
+            rworkSize = 1 + 9 * (*YSize);
             iworkSize = 1;
             break;
         }
@@ -991,7 +991,7 @@ types::Function::ReturnValue sci_ode(types::typed_list &in, int _iRetCount, type
             int iLastT = pDblT->getSize() - 1;
             double t = pDblT->get(iLastT);
             double t0 = pDblT0->get(0);
-            rwork[(*YSize)]=(t-t0)/100; // h0
+            rwork[(*YSize)] = (t - t0) / 100; // h0
         }
     }
 
index 45c2b0b..6f76409 100644 (file)
@@ -147,7 +147,7 @@ types::Function::ReturnValue sci_odedc(types::typed_list &in, int _iRetCount, ty
     // *** check number of output args according the methode. ***
     if (meth < 3)
     {
-        if (_iRetCount != 1 && _iRetCount != 3)
+        if (_iRetCount > 3)
         {
             Scierror(78, _("%s: Wrong number of output argument(s): %d or %d expected.\n"), "odedc", 1, 3);
             return types::Function::Error;
@@ -163,7 +163,7 @@ types::Function::ReturnValue sci_odedc(types::typed_list &in, int _iRetCount, ty
     }
     else // meth > 3
     {
-        if (_iRetCount != 1)
+        if (_iRetCount > 1)
         {
             Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "odedc", 1);
             return types::Function::Error;
index c151029..ea1cb92 100644 (file)
@@ -20,7 +20,7 @@
 int ext14cI(char *fname)
 {
     int m1, n1, l1, m2, n2, l2, m3, n3, l3, n, l4;
-    int minlhs = 1, minrhs = 3, maxlhs = 1, maxrhs = 3;
+    int minlhs = 0, minrhs = 3, maxlhs = 1, maxrhs = 3;
     Nbvars = 0;
     CheckRhs(minrhs, maxrhs) ;
     CheckLhs(minlhs, maxlhs) ;
index d1d5874..34c0579 100644 (file)
@@ -13,7 +13,7 @@
 int sci_matmul(char *fname)
 {
     static int l1, m1, n1, l2, m2, n2, l3;
-    static int minlhs = 1, maxlhs = 1, minrhs = 2, maxrhs = 2;
+    static int minlhs = 0, maxlhs = 1, minrhs = 2, maxrhs = 2;
 
     /* Check number of inputs (rhs=2) and outputs (lhs=1) */
     CheckRhs(minrhs, maxrhs) ;
index b2483ff..5b0845e 100644 (file)
@@ -11,7 +11,7 @@
 int sci_view(char *fname)
 {
     static int l1, m1, n1, l2, m2, n2, m3, n3, l3;
-    static int minlhs = 1, maxlhs = 3, minrhs = 3, maxrhs = 3;
+    static int minlhs = 0, maxlhs = 3, minrhs = 3, maxrhs = 3;
 
     /* Check number of inputs (rhs=3) and outputs (lhs=3) */
     CheckRhs(minrhs, maxrhs) ;
index c9070aa..480ed75 100644 (file)
@@ -113,7 +113,7 @@ src = ['#include <math.h>'
 '  int *piAddressVarOne = NULL;'
 ''
 '  CheckRhs(1,1);'
-'  CheckLhs(1,1);'
+'  CheckLhs(0,1);'
 ''
 '  sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);'
 '  if(sciErr.iErr)'
index f7ac36f..4cb1861 100644 (file)
@@ -152,7 +152,7 @@ i=['#include <stdlib.h>'
    '  int *piAddressVarOne = NULL;'
    ''
    '  CheckRhs(1,1);'
-   '  CheckLhs(1,1);'
+   '  CheckLhs(0,1);'
    ''
    '  sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);'
    '  if(sciErr.iErr)'
index a2ced99..9f9dfc1 100644 (file)
@@ -10,7 +10,7 @@ static void f99(double *ar, double *ac, int *ita, int *ma, int *na);
 int intex2c(char *fname, void * pvApiCtx)
 {
     static int cplx, rows, cols;
-    int minlhs = 1, minrhs = 1, maxlhs = 1, maxrhs = 1;
+    int minlhs = 0, minrhs = 1, maxlhs = 1, maxrhs = 1;
     double *pdblReal = NULL, *pdblImag = NULL;
     int* piAddr1 = NULL;
 
index 3af54dd..e98dfec 100644 (file)
@@ -9,7 +9,7 @@ void c_fun(double *b, double *c, double *a);
 int c_intfun(char *fname, void * pvApiCtx)
 {
     int rows1 = 0, cols1 = 0, rows2 = 0, cols2 = 0, rows3 = 1, cols3 = 1;
-    int minlhs = 1, maxlhs = 1, minrhs = 2, maxrhs = 2;
+    int minlhs = 0, maxlhs = 1, minrhs = 2, maxrhs = 2;
 
     double *pdbl1 = NULL, *pdbl2 = NULL, *pdblOut = NULL;
     int* piAddr1 = NULL;
index 6fb0387..d507c53 100644 (file)
@@ -11,7 +11,7 @@ void c_sub(double *b, double *c, double *a);
 int c_intsum(char *fname, void * pvApiCtx)
 {
     int rows1 = 0, cols1 = 0,  rows2 = 0, cols2 = 0, rows3 = 1, cols3 = 1;
-    int minlhs = 1, maxlhs = 1, minrhs = 2, maxrhs = 2;
+    int minlhs = 0, maxlhs = 1, minrhs = 2, maxrhs = 2;
 
     double *pdbl1 = NULL, *pdbl2 = NULL, *pdblOut = NULL;
     int* piAddr1 = NULL;
@@ -100,7 +100,7 @@ int c_intsum(char *fname, void * pvApiCtx)
 int c_intsub(char *fname, void * pvApiCtx)
 {
     int rows1 = 0, cols1 = 0, rows2 = 0, cols2 = 0, rows3 = 1, cols3 = 1;
-    int minlhs = 1, maxlhs = 1, minrhs = 2, maxrhs = 2;
+    int minlhs = 0, maxlhs = 1, minrhs = 2, maxrhs = 2;
 
     double *pdbl1 = NULL, *pdbl2 = NULL, *pdblOut = NULL;
     int* piAddr1 = NULL;
index e117e7f..cccc870 100644 (file)
@@ -10,7 +10,7 @@ void c_sub(double *b, double *c, double *a);
 /* ============================================== */
 int c_intsum(char *fname, void * pvApiCtx)
 {
-    int minlhs = 1, maxlhs = 1, minrhs = 2, maxrhs = 2;
+    int minlhs = 0, maxlhs = 1, minrhs = 2, maxrhs = 2;
 
     int l1 = 0, rows1 = 0, cols1 = 0, l2 = 0, rows2 = 0, cols2 = 0, l3 = 0, rows3 = 1, cols3 = 1;
     double *pdbl1 = NULL, *pdbl2 = NULL, *pdblOut = NULL;
@@ -98,7 +98,7 @@ int c_intsum(char *fname, void * pvApiCtx)
 int c_intsub(char *fname, void * pvApiCtx)
 {
     int l1 = 0, rows1 = 0, cols1 = 0, l2 = 0, rows2 = 0, cols2 = 0, l3 = 0, rows3 = 1, cols3 = 1;
-    int minlhs = 1, maxlhs = 1, minrhs = 2, maxrhs = 2;
+    int minlhs = 0, maxlhs = 1, minrhs = 2, maxrhs = 2;
 
     double *pdbl1 = NULL, *pdbl2 = NULL, *pdblOut = NULL;
 
index 204034b..ae13143 100644 (file)
@@ -20,7 +20,7 @@ int intfun1(char *fname, void *pvApiCtx)
     double dblIn = 0;
     double dblOut = 0;
     CheckRhs(1, 1);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr != 0)
index 5be73c3..5b86963 100644 (file)
@@ -15,7 +15,7 @@ int interf_template_A0(char *fname, void * pvApiCtx)
     SciErr sciErr;
 
     CheckRhs(0, 0);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
 
     sciErr = allocMatrixOfInteger32(pvApiCtx, 1, rows, cols, &piInt);
@@ -40,7 +40,7 @@ int interf_template_B0(char *fname, void * pvApiCtx)
     SciErr sciErr;
 
     CheckRhs(0, 0);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     sciErr = allocMatrixOfInteger32(pvApiCtx, Rhs + 1, rows, cols, &piInt);
     if (sciErr.iErr)
index a5a715b..01b4048 100644 (file)
@@ -32,7 +32,7 @@ i=['#define __USE_DEPRECATED_STACK_FUNCTIONS__'
    '{'
    '  int m1,n1,l1;'
    '  CheckRhs(1,1);'
-   '  CheckLhs(1,1);'
+   '  CheckLhs(0,1);'
    '  GetRhsVar(1, MATRIX_OF_DOUBLE_DATATYPE, &m1, &n1, &l1);'
    '  fun1(stk(l1),stk(l1));'
    '  LhsVar(1) = 1;'
index f236122..841ffd5 100644 (file)
@@ -36,7 +36,7 @@ i=['#define __USE_DEPRECATED_STACK_FUNCTIONS__'
    '  int m2 = 0, n2 = 0, l2 = 0;'
    '  int m3 = 0, n3 = 0, l3 = 0;'
    '  CheckRhs(1,2);'
-   '  CheckLhs(1,1);'
+   '  CheckLhs(0,1);'
    '  GetRhsVar(1, ""d"", &m1, &n1, &l1);'
    '  GetRhsVar(2, ""d"", &m2, &n2, &l2);'
    '  m3=1;n3=1;'
index 2b57650..78f2d83 100644 (file)
@@ -13,7 +13,7 @@ int intfun1(char *fname, void* pvApiCtx)
     double* pdblOut    = NULL;
 
     CheckRhs(1, 1);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
     if (sciErr.iErr)
index 37410ec..c0e19d8 100644 (file)
@@ -17,7 +17,7 @@ extern "C" {
         double *position = NULL; /* Where we will store the position */
 
         CheckRhs(2, 2); /* Check the number of input argument */
-        CheckLhs(1, 1); /* Check the number of output argument */
+        CheckLhs(0, 1); /* Check the number of output argument */
 
         //get string
         sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
index a6c575b..a72b69f 100644 (file)
@@ -17,7 +17,7 @@ int sci_csub(char *fname, void *pvApiCtx)
     double* pdblOut    = NULL;
 
     CheckRhs(1, 2);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
     if (sciErr.iErr)
index ce9c9eb..24726a2 100644 (file)
@@ -15,7 +15,7 @@ int sci_csum(char *fname, void *pvApiCtx)
     double* pdblOut    = NULL;
 
     CheckRhs(1, 2);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
     if (sciErr.iErr)
index 9cc0080..6e2e943 100644 (file)
@@ -37,7 +37,7 @@ int sci_dec2base(char *fname, void* pvApiCtx)
     error_convertbase err = ERROR_CONVERTBASE_NOK;
 
     CheckInputArgument(pvApiCtx, 2, 3);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     if (nbInputArgument(pvApiCtx) == 3)
     {
index f28e9df..a3658ec 100644 (file)
@@ -50,7 +50,7 @@ int sci_log10(char *fname, void* pvApiCtx)
     int iRhs = nbInputArgument(pvApiCtx);
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index 78e7b6d..7c964e5 100644 (file)
@@ -54,7 +54,7 @@ int func_comp(char* fname, int _iMini, void* pvApiCtx)
     int iModeActive = 0;
     int *piAddr1               = NULL;
 
-    CheckLhs(1, 2);
+    CheckLhs(0, 2);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
     if (sciErr.iErr)
index 7b4374c..f73502f 100644 (file)
@@ -39,7 +39,7 @@ int sci_number_properties(char *fname, void* pvApiCtx)
     int bBoolFlag = 0;
 
     CheckRhs(1, 1);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index aabdf4f..935a840 100644 (file)
@@ -35,7 +35,7 @@ int sci_prod(char *fname, void* pvApiCtx)
     int iMode                                          = 0;
 
     CheckRhs(1, 2);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index a2f18f4..d2f5a85 100644 (file)
@@ -44,7 +44,7 @@ int sci_testmatrix(char *fname, void* pvApiCtx)
     double *pdblRealRet = NULL;
 
     CheckRhs(2, 2);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     /*check input 1*/
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
index 4ca1b0e..b16ca12 100644 (file)
@@ -7,7 +7,7 @@
 extern "C"
 {
 #include "Scierror.h"
-#include "localization.h"    
+#include "localization.h"
 }
 /* ==================================================================== */
 types::Function::ReturnValue sci_bitstring(types::typed_list &in, int _iRetCount, types::typed_list &out)
@@ -20,7 +20,7 @@ types::Function::ReturnValue sci_bitstring(types::typed_list &in, int _iRetCount
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected."), "bitstring", 1);
         return types::Function::Error;
index 0af2c25..b2cb8fc 100644 (file)
@@ -20,7 +20,7 @@
 types::Function::ReturnValue sci_isequal(types::typed_list &in, int _iRetCount, types::typed_list &out)
 {
     bool bResult = true;
-    if (in.size() <= 1 || _iRetCount != 1)
+    if (in.size() <= 1 || _iRetCount > 1)
     {
         return types::Function::Error;
     }
index 9aabd00..ceb1b86 100644 (file)
@@ -31,7 +31,7 @@ int sci_issquare(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt,
         return 1;
     }
 
-    if (nout != 1)
+    if (nout > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), fname, 1);
         return 1;
index ecc061c..9eeaa6c 100644 (file)
@@ -31,7 +31,7 @@ int sci_isvector(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt,
         return 1;
     }
 
-    if (nout != 1)
+    if (nout > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), fname, 1);
         return 1;
index 1452507..361bafb 100644 (file)
@@ -20,7 +20,7 @@
 extern "C"
 {
 #include "Scierror.h"
-#include "localization.h" 
+#include "localization.h"
 }
 
 void computeOffsets(int iDims, const int* piDimsArray, const std::vector<int>& dimsVect, int* piOffset, int* piMaxOffset)
@@ -143,7 +143,7 @@ types::Function::ReturnValue sci_permute(types::typed_list& in, int _iRetCount,
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected."), "permute", 1);
         return types::Function::Error;
index 83e17ff..fc15b86 100644 (file)
@@ -37,7 +37,7 @@ types::Function::ReturnValue sci_rat(types::typed_list &in, int _iRetCount, type
     types::Double* pDblIn   = NULL;
     types::Double* pDblN    = NULL; // numerator
     types::Double* pDblD    = NULL; // denominator
-    types::Double* pDblOut  = NULL; // if _iRetCount == 1 the result is N/D
+    types::Double* pDblOut  = NULL; // if _iRetCount <= 1 the result is N/D
 
     double dblTol  = 1.e-6;
 
@@ -103,7 +103,7 @@ types::Function::ReturnValue sci_rat(types::typed_list &in, int _iRetCount, type
         dblTol = dblTol * dblRTol;
     }
 
-    if (_iRetCount == 1)
+    if (_iRetCount <= 1)
     {
         pDblOut = new types::Double(pDblIn->getRows(), pDblIn->getCols());
         double* pOutR = pDblOut->get();
index 4588278..85cdf0b 100644 (file)
@@ -106,7 +106,7 @@ types::Function::ReturnValue sci_size(types::typed_list &in, int _iRetCount, typ
             int iDims = in[0]->getAs<types::GenericType>()->getDims();
             int* piDims = in[0]->getAs<types::GenericType>()->getDimsArray();
 
-            if (_iRetCount == 1)
+            if (_iRetCount <= 1)
             {
                 int iRowsOut = 1;
                 int iColsOut = 0;
index 603caaf..8011ee9 100644 (file)
@@ -27,7 +27,7 @@ int ScilabGateway::addNamedVariable(char * fname, const int envId, void * pvApiC
     int idObj;
 
     CheckInputArgument(pvApiCtx, 2, 2);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
     ScilabGatewayOptions & options = env.getGatewayOptions();
index 7e77b1b..5ae2386 100644 (file)
@@ -33,7 +33,7 @@ int ScilabGateway::addToClasspath(char * fname, const int envId, void * pvApiCtx
     char ** className = 0;
 
     CheckInputArgumentAtLeast(pvApiCtx, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
     ScilabGatewayOptions & options = env.getGatewayOptions();
index 1ed02d9..1851e45 100644 (file)
@@ -33,7 +33,7 @@ int ScilabGateway::doubleExclam_invoke(char * fname, const int envId, void * pvA
     int len = Rhs - 1;
     std::vector<int> torem;
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
     ScilabGatewayOptions & options = env.getGatewayOptions();
index 1789cb9..bb6603c 100644 (file)
@@ -28,7 +28,7 @@ int ScilabGateway::evalString(char * fname, const int envId, void * pvApiCtx)
     ScilabStringStackAllocator * allocator = 0;
 
     CheckInputArgument(pvApiCtx, 1, 2);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
     ScilabGatewayOptions & options = env.getGatewayOptions();
index 26c26c5..a30540a 100644 (file)
@@ -28,7 +28,7 @@ int ScilabGateway::exists(char * fname, const int envId, void * pvApiCtx)
     bool exists = false;
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
     ScilabGatewayOptions & options = env.getGatewayOptions();
index 3b7ffbb..d4a13f7 100644 (file)
@@ -23,7 +23,7 @@ int ScilabGateway::getEnvId(char * fname, const int envId, void * pvApiCtx)
     SciErr sciErr;
 
     CheckInputArgument(pvApiCtx, 0, 0);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
     ScilabGatewayOptions & options = env.getGatewayOptions();
index d2db326..1f3eed3 100644 (file)
@@ -29,7 +29,7 @@ int ScilabGateway::getField(char * fname, const int envId, void * pvApiCtx)
     char * fieldName = 0;
 
     CheckInputArgument(pvApiCtx, 2, 3);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
     ScilabGatewayOptions & options = env.getGatewayOptions();
index ac8734d..e2dedf8 100644 (file)
@@ -24,7 +24,7 @@ int ScilabGateway::getNamedVariable(char * fname, const int envId, void * pvApiC
     int idObj;
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
     ScilabGatewayOptions & options = env.getGatewayOptions();
index cf0af30..b24698c 100644 (file)
@@ -25,7 +25,7 @@ int ScilabGateway::getsetOptions(char * fname, const int envId, ScilabAbstractOp
     int val = 0;
 
     CheckInputArgument(pvApiCtx, 0, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
     ScilabGatewayOptions & options = env.getGatewayOptions();
index 842275b..f9da1a4 100644 (file)
@@ -27,7 +27,7 @@ int ScilabGateway::invoke(char * fname, const int envId, ScilabAbstractInvoker &
     int ret = 0;
     int nbArgs = Rhs;
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     ScilabAbstractEnvironment & env = ScilabEnvironments::getEnvironment(envId);
     ScilabGatewayOptions & options = env.getGatewayOptions();
index 9b51827..3dbfce1 100644 (file)
@@ -29,7 +29,7 @@ int ScilabGateway::operation(char * fname, const int envId, const OperatorsType
     int ret;
 
     CheckInputArgument(pvApiCtx, 1, 2);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
     if (err.iErr)
index 581c808..615692d 100644 (file)
@@ -37,7 +37,7 @@ int sci_chdir(char *fname, void* pvApiCtx)
     wchar_t *expandedPath = NULL;
 
     CheckRhs(0, 1);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     if (Rhs == 0)
     {
index b6aff18..78dd46d 100644 (file)
@@ -49,7 +49,7 @@ int sci_copyfile(char *fname, void* pvApiCtx)
 
     /* Check Input & Output parameters */
     CheckRhs(2, 2);
-    CheckLhs(1, 2);
+    CheckLhs(0, 2);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
     if (sciErr.iErr)
index 3563052..291f381 100644 (file)
@@ -49,7 +49,7 @@ int sci_fprintfMat(char *fname, void* pvApiCtx)
     int i = 0;
 
     CheckRhs(2, 5);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     if (Rhs >= 3)
     {
index 12ec074..850227f 100644 (file)
@@ -44,7 +44,7 @@ int sci_fscanfMat(char *fname, void* pvApiCtx)
     fscanfMatResult *results = NULL;
 
     CheckRhs(1, 3);
-    CheckLhs(1, 2);
+    CheckLhs(0, 2);
 
     if (Rhs == 3)
     {
index a669d91..140b580 100644 (file)
@@ -49,7 +49,7 @@ int sci_movefile(char *fname, void* pvApiCtx)
 
     /* Check Input & Output parameters */
     CheckRhs(2, 2);
-    CheckLhs(1, 2);
+    CheckLhs(0, 2);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
     if (sciErr.iErr)
index 7b78625..7c76567 100644 (file)
@@ -31,7 +31,7 @@ int sci_tempname(char *fname, void* pvApiCtx)
 
     //Rhs = Max(Rhs, 0);
     CheckRhs(0, 1);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     if (Rhs == 0)
     {
index 74c1841..9040ce9 100644 (file)
@@ -37,7 +37,7 @@ types::Function::ReturnValue sci_basename(types::typed_list &in, int _iRetCount,
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "basename", 1);
         return types::Function::Error;
index 92e3f69..dc82341 100644 (file)
@@ -32,11 +32,11 @@ types::Function::ReturnValue sci_fileext(types::typed_list &in, int _iRetCount,
 {
     if (in.size() != 1)
     {
-        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "fileext" , 1);
+        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "fileext", 1);
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "fileext", 1);
         return types::Function::Error;
index 1d042a6..362788e 100644 (file)
@@ -55,7 +55,7 @@ types::Function::ReturnValue sci_fileparts(types::typed_list &in, int _iRetCount
         return types::Function::Error;
     }
 
-    if (in.size() == 2 && _iRetCount != 1 && _iRetCount != -1)
+    if (in.size() == 2 && _iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output arguments: %d expected.\n"), "fileparts", 1);
         return types::Function::Error;
index b8494a9..30ae75e 100644 (file)
@@ -34,11 +34,11 @@ types::Function::ReturnValue sci_filesep(types::typed_list &in, int _iRetCount,
 {
     if (in.size() != 0)
     {
-        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "filesep" , 0);
+        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "filesep", 0);
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1 && _iRetCount != -1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "filesep", 1);
         return types::Function::Error;
index 628c1e2..633fd80 100644 (file)
@@ -30,11 +30,11 @@ types::Function::ReturnValue sci_fullpath(types::typed_list &in, int _iRetCount,
 {
     if (in.size() != 1)
     {
-        Scierror(77, _("%s: Wrong number of input arguments: %d expected.\n"), "fullpath" , 1);
+        Scierror(77, _("%s: Wrong number of input arguments: %d expected.\n"), "fullpath", 1);
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "fullpath", 1);
         return types::Function::Error;
index 9cbea89..2c50dd4 100644 (file)
@@ -30,11 +30,11 @@ types::Function::ReturnValue sci_getlongpathname(types::typed_list &in, int _iRe
 {
     if (in.size() != 1)
     {
-        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "getlongpathname" , 1);
+        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "getlongpathname", 1);
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1 && _iRetCount != 2)
+    if (_iRetCount > 2)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "getlongpathname", 1, 2);
         return types::Function::Error;
index 805b206..bb2badd 100644 (file)
@@ -33,11 +33,11 @@ types::Function::ReturnValue sci_getshortpathname(types::typed_list &in, int _iR
 {
     if (in.size() != 1)
     {
-        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "getshortpathname" , 1);
+        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "getshortpathname", 1);
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1 && _iRetCount != 2)
+    if (_iRetCount > 2)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "getshortpathname", 1, 2);
         return types::Function::Error;
index dc0cec3..5ed05f8 100644 (file)
@@ -38,11 +38,11 @@ types::Function::ReturnValue sci_isdir(types::typed_list &in, int _iRetCount, ty
 {
     if (in.size() != 1)
     {
-        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "isdir" , 1);
+        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "isdir", 1);
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "isdir", 1);
         return types::Function::Error;
index 5e5c252..13109f6 100644 (file)
@@ -33,11 +33,11 @@ types::Function::ReturnValue sci_isfile(types::typed_list &in, int _iRetCount, t
 {
     if (in.size() != 1)
     {
-        Scierror(77, _("%s: Wrong number of input arguments: %d expected.\n"), "isfile" , 1);
+        Scierror(77, _("%s: Wrong number of input arguments: %d expected.\n"), "isfile", 1);
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "isfile", 1);
         return types::Function::Error;
index 59e7de6..1547728 100644 (file)
@@ -40,7 +40,7 @@ types::Function::ReturnValue sci_mopen(types::typed_list &in, int _iRetCount, ty
     int iSwap               = 0;
 
     //check output parameters
-    if (_iRetCount != 1 && _iRetCount != 2)
+    if (_iRetCount > 2)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), "mopen", 1, 2);
         return types::Function::Error;
@@ -59,7 +59,7 @@ types::Function::ReturnValue sci_mopen(types::typed_list &in, int _iRetCount, ty
         types::String* pS1 = in[0]->getAs<types::String>();
         if (pS1->getSize() != 1)
         {
-            Scierror(999, _("%s: Wrong size for input argument #%d: string expected.\n"), "mopen" , 1);
+            Scierror(999, _("%s: Wrong size for input argument #%d: string expected.\n"), "mopen", 1);
             return types::Function::Error;
         }
 
@@ -78,7 +78,7 @@ types::Function::ReturnValue sci_mopen(types::typed_list &in, int _iRetCount, ty
             types::String* pS2 = in[1]->getAs<types::String>();
             if (pS2->getSize() != 1)
             {
-                Scierror(999, _("%s: Wrong size for input argument #%d: string expected.\n"), "mopen" , 2);
+                Scierror(999, _("%s: Wrong size for input argument #%d: string expected.\n"), "mopen", 2);
                 FREE(pstFilename);
                 return types::Function::Error;
             }
@@ -90,7 +90,7 @@ types::Function::ReturnValue sci_mopen(types::typed_list &in, int _iRetCount, ty
                 //swap
                 if (in[2]->isDouble() == false)
                 {
-                    Scierror(999, _("%s: Wrong type for input argument #%d: An integer expected.\n"), "mopen" , 3);
+                    Scierror(999, _("%s: Wrong type for input argument #%d: An integer expected.\n"), "mopen", 3);
                     FREE(pstFilename);
                     return types::Function::Error;
                 }
@@ -111,7 +111,7 @@ types::Function::ReturnValue sci_mopen(types::typed_list &in, int _iRetCount, ty
 
                 if (in.size() >= 4)
                 {
-                    Scierror(999, _("%s: Wrong number of input arguments: %d to %d expected.\n"), "mopen" , 1, 3);
+                    Scierror(999, _("%s: Wrong number of input arguments: %d to %d expected.\n"), "mopen", 1, 3);
                     FREE(pstFilename);
                     return types::Function::Error;
                 }
@@ -121,7 +121,7 @@ types::Function::ReturnValue sci_mopen(types::typed_list &in, int _iRetCount, ty
     }
     else
     {
-        Scierror(999, _("%s: Wrong number of input arguments: %d to %d expected.\n"), "mopen" , 1, 3);
+        Scierror(999, _("%s: Wrong number of input arguments: %d to %d expected.\n"), "mopen", 1, 3);
         return types::Function::Error;
     }
 
@@ -131,7 +131,7 @@ types::Function::ReturnValue sci_mopen(types::typed_list &in, int _iRetCount, ty
     if (iErr != MOPEN_NO_ERROR)
     {
         //mange file open errors
-        if (_iRetCount == 1)
+        if (_iRetCount <= 1)
         {
             switch (iErr)
             {
index e2440da..4376f3a 100644 (file)
@@ -44,7 +44,7 @@ types::Function::ReturnValue sci_mputl(types::typed_list &in, int _iRetCount, ty
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(999, _("%s: Wrong number of output argument(s): %d expected.\n"), "mputl", 1);
         return types::Function::Error;
index 3fdabf7..7ea1003 100644 (file)
@@ -41,11 +41,11 @@ types::Function::ReturnValue sci_pathconvert(types::typed_list &in, int _iRetCou
 
     if (in.size() < 1 || in.size() > 4)
     {
-        Scierror(999, _("%s: Wrong number of input arguments: %d to %d expected.\n"), "pathconvert" , 1, 4);
+        Scierror(999, _("%s: Wrong number of input arguments: %d to %d expected.\n"), "pathconvert", 1, 4);
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "pathconvert", 1);
         return types::Function::Error;
index d3389ad..91e270f 100644 (file)
             optional arguments.
         </para>
         <warning>
-            There is no way to detect whether a Scilab function is called without expected
-            output argument. In this case, <varname>lhs</varname> returns 1.
-        </warning>
-        <warning>
             Testing the existence of a named input argument with <literal>isdef(..,"l")</literal>
             is more robust that with <literal>argn()</literal>. Please see examples.
         </warning>
index fb02636..0d22f2b 100644 (file)
             et de sortie <varname>lhs</varname>. Elle permet d'utiliser des arguments optionnels.
         </para>
         <warning>
-            Il n'est pas possible de savoir depuis une fonction Scilab si celle-ci a été appelée
-            sans aucun argument de sortie attendu. Le cas échéant, <varname>lhs</varname> vaut 1,
-            au lieu de 0.
-        </warning>
-        <warning>
             L'existence d'un argument d'entrée nommé (hors de la portée d'un éventuel varargin)
             peut être testée avec <literal>isdef(..,"l")</literal> de manière plus robuste
             qu'en utilisant <literal>argn()</literal>. Un exemple figure ci-après.
index 555a362..a5094a0 100644 (file)
             通常,関数の定義においてオプションの引数を処理する際に使用されます.
         </para>
         <warning>
-            <varname>lhs</varname> は常に1以上であることに注意してください.
-            言い換えると,関数が出力引数なしにコールされた場合であっても,
-            <varname>lhs</varname> は 1 となります.
-        </warning>
-        <warning>
             Testing the existence of a named input argument with <literal>isdef(..,"l")</literal>
             is more robust that with <literal>argn()</literal>. Please see examples.
         </warning>
@@ -246,4 +241,4 @@ endfunction
             </member>
         </simplelist>
     </refsection>
-</refentry>
\ No newline at end of file
+</refentry>
index f8590dd..48b7085 100644 (file)
             opcionais.
         </para>
         <warning>
-            There is no way to detect whether a Scilab function is called without expected
-            output argument. In this case, <varname>lhs</varname> returns 1.
-        </warning>
-        <warning>
             Testing the existence of a named input argument with <literal>isdef(..,"l")</literal>
             is more robust that with <literal>argn()</literal>. Please see examples.
         </warning>
index 43dbfb6..3ffb047 100644 (file)
             с необязательными аргументами.
         </para>
         <warning>
-            Нет способа обнаружить вызвана ли Scilab-функция без ожидаемых выходных аргументов. В этом случае
-            <varname>lhs</varname> возвращает 1.
-        </warning>
-        <warning>
             Проверка существования именного входного аргумента с помощью <literal>isdef(..,"l")</literal>
             более надёжна, чем с помощью <literal>argn()</literal>. Пожалуйста, смотрите примеры.
         </warning>
index 1e46933..85e82b5 100644 (file)
@@ -42,13 +42,13 @@ types::Function::ReturnValue sci_macrovar(types::typed_list &in, int _iRetCount,
 {
     if (in.size() != 1)
     {
-        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "macrovar" , 1);
+        Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), "macrovar", 1);
         return types::Function::Error;
     }
 
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
-        Scierror(999, _("%s: Wrong number of output arguments: %d expected.\n"), "macrovar" , 1);
+        Scierror(999, _("%s: Wrong number of output arguments: %d expected.\n"), "macrovar", 1);
         return types::Function::Error;
     }
 
@@ -135,4 +135,4 @@ void addIn(ast::MacrovarVisitor& visit, std::list<symbol::Variable*>* pSym)
     {
         visit.addIn((*it)->getSymbol().getName().c_str());
     }
-}
\ No newline at end of file
+}
index e031479..69946b1 100644 (file)
@@ -35,7 +35,7 @@ types::Function::ReturnValue sci_whereis(types::typed_list &in, int _iRetCount,
     }
 
     /* Check the number of output argument */
-    if (_iRetCount != 1)
+    if (_iRetCount > 1)
     {
         Scierror(999, _("%s: Wrong number of output argument(s): %d expected.\n"), "whereis", 1);
         return types::Function::Error;
index 4d661ba..941d94a 100644 (file)
@@ -11,7 +11,7 @@
 // For more information, see the COPYING file which you should have received
 // along with this program.
 
-function plot(varargin)
+function varargout = plot(varargin)
     // Try to build a new better parser that could manage things like:
     // plot(x,y,'X',1:10); // where X stands for Xdata (Matlab recognizes
     //it and treats it well...)
@@ -22,7 +22,7 @@ function plot(varargin)
         //LineSpec and PropertySpec examples:
         t = 0:%pi/20:2*%pi;
         tt = t';
-        clf('reset');
+        clf("reset");
         drawlater();
         subplot(211);
         plot(tt, sin(tt), "ro-.", tt, cos(tt), "cya+", tt, abs(sin(tt)), "--mo");
@@ -259,7 +259,7 @@ function plot(varargin)
                     msg1 = gettext("%s: Error : unable to evaluate input function %s.")
                     msg2 = gettext("Error %d at line %d of the function: ''%s''")
                     error(msprintf(msg1 + ascii(10) + msg2, "plot", ..
-                        err_func, err_number, err_line, err_message));
+                    err_func, err_number, err_line, err_message));
                 end
                 // All right: go on plotting:
                 ListArg(xyIndexLineSpec(i,2)) = tmp;
@@ -477,4 +477,7 @@ function plot(varargin)
     // smart drawnow
     ResetFigureDDM(current_figure, cur_draw_mode)
 
+    if lhs
+        varargout(1) = Curves;
+    end
 endfunction
index 8b39c39..5a2c980 100644 (file)
@@ -31,6 +31,8 @@
 #include "localization.h"
 #include "Scierror.h"
 #include "DefaultCommandArg.h"
+#include "CurrentObject.h"
+#include "HandleManagement.h"
 
 /*--------------------------------------------------------------------------*/
 int sci_plot3d(char * fname, void *pvApiCtx)
@@ -40,7 +42,7 @@ int sci_plot3d(char * fname, void *pvApiCtx)
     double *ebox = ebox_def;
     static int iflag_def[3] = {2, 2, 4};
     int *iflag = iflag_def;
-    double  alpha_def = 35.0 , theta_def = 45.0;
+    double  alpha_def = 35.0, theta_def = 45.0;
     double *alpha = &alpha_def, *theta = &theta_def;
     int m1 = 0, n1 = 0,  m2 = 0, n2 = 0, m3 = 0, n3 = 0;
     int m3n = 0, n3n = 0, m3l = 0;
@@ -90,6 +92,7 @@ int sci_plot3d(char * fname, void *pvApiCtx)
     }
 
     CheckInputArgument(pvApiCtx, 1, 8);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     if (getOptionals(pvApiCtx, fname, opts) == 0)
     {
@@ -380,7 +383,22 @@ int sci_plot3d(char * fname, void *pvApiCtx)
     {
         freeAllocatedSingleString(legend);
     }
-    AssignOutputVariable(pvApiCtx, 1) = 0;
+
+    if (nbOutputArgument(pvApiCtx) == 1)
+    {
+        if (createScalarHandle(pvApiCtx, nbInputArgument(pvApiCtx) + 1, getHandle(getCurrentObject())))
+        {
+            printError(&sciErr, 0);
+            Scierror(999, _("%s: Memory allocation error.\n"), fname);
+            return 1;
+        }
+        AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
+    }
+    else
+    {
+        AssignOutputVariable(pvApiCtx, 1) = 0;
+    }
+
     ReturnArguments(pvApiCtx);
     return 0;
 
index daa2d45..ceeeade 100644 (file)
@@ -226,7 +226,7 @@ int sci_rubberbox(char * fname, void *pvApiCtx)
     BOOL bClickMode = TRUE;
 
     CheckInputArgument(pvApiCtx, 0, 2);
-    CheckOutputArgument(pvApiCtx, 1, 2);
+    CheckOutputArgument(pvApiCtx, 0, 2);
     // iView == 1 => 2D
     // else 3D
     getGraphicObjectProperty(iSubwinUID, __GO_VIEW__, jni_int, (void**)&piView);
index 4d25e3a..c842f7f 100644 (file)
@@ -52,7 +52,7 @@ int sci_xchange(char * fname, void *pvApiCtx)
     int viewingRect[VIEWING_RECT_SIZE];
 
     CheckInputArgument(pvApiCtx, 3, 3);
-    CheckOutputArgument(pvApiCtx, 1, 3);
+    CheckOutputArgument(pvApiCtx, 0, 3);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddrl3);
     if (sciErr.iErr)
index 18d4ddf..59601c3 100644 (file)
@@ -56,7 +56,7 @@ int sci_xclick(char *fname, void *pvApiCtx)
     int *piFigureId = &iFigureId;
 
     CheckInputArgument(pvApiCtx, -1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 5);
+    CheckOutputArgument(pvApiCtx, 0, 5);
 
     //iflag = (nbInputArgument(pvApiCtx) >= 1) ? 1 :0;
 
@@ -86,7 +86,7 @@ int sci_xclick(char *fname, void *pvApiCtx)
         userCoords2D[1] = pixelCoords[1];
     }
 
-    if (nbOutputArgument(pvApiCtx) == 1)
+    if (nbOutputArgument(pvApiCtx) <= 1)
     {
         AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
 
index ea928b2..85d5142 100644 (file)
@@ -56,7 +56,7 @@ int sci_xgetmouse(char *fname, void *pvApiCtx)
     int selPosition = 0;
 
     CheckInputArgument(pvApiCtx, 0, 1);
-    CheckOutputArgument(pvApiCtx, 1, 2);
+    CheckOutputArgument(pvApiCtx, 0, 2);
 
     switch (nbInputArgument(pvApiCtx))
     {
index 8f89eb0..a7ac058 100644 (file)
@@ -43,7 +43,7 @@ int sci_xname(char *fname, void *pvApiCtx)
     int iCurrentFigure = 0;
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddrl1);
     if (sciErr.iErr)
index 7f49ef8..b60f00b 100644 (file)
@@ -38,7 +38,7 @@ int sci_delmenu(char *fname, void* pvApiCtx)
 
     // Check parameter number
     CheckInputArgument(pvApiCtx, 1, 2);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
     if (sciErr.iErr)
index f91c817..1f24527 100644 (file)
@@ -309,7 +309,7 @@ int sci_messagebox(char *fname, void* pvApiCtx)
     messageBoxDisplayAndWait(messageBoxID);
 
     /* Return the index of the button selected */
-    if (nbOutputArgument(pvApiCtx) == 1)
+    if (nbOutputArgument(pvApiCtx) <= 1)
     {
         /* Read the user answer */
         buttonNumber = getMessageBoxSelectedButton(messageBoxID);
index e2431b3..92595ed 100644 (file)
@@ -45,7 +45,7 @@ int sci_progressionbar(char *fname, void* pvApiCtx)
     unsigned long GraphicHandle = 0;
 
     CheckInputArgument(pvApiCtx, 1, 2);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddrhandleAdr);
     if (sciErr.iErr)
@@ -156,7 +156,7 @@ int sci_progressionbar(char *fname, void* pvApiCtx)
         }
     }
 
-    if (nbOutputArgument(pvApiCtx) == 1)
+    if (nbOutputArgument(pvApiCtx) <= 1)
     {
         nbRow = 1;
         nbCol = 1;
index 3cb5b49..23dab16 100644 (file)
@@ -39,7 +39,7 @@ int sci_setmenu(char *fname, void* pvApiCtx)
 
     // Check parameter number
     CheckInputArgument(pvApiCtx, 1, 3);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     if (nbInputArgument(pvApiCtx) == 1)
     {
index 9a3eccb..d813b7e 100644 (file)
@@ -40,7 +40,7 @@ int sci_unsetmenu(char *fname, void* pvApiCtx)
 
     // Check parameter number
     CheckInputArgument(pvApiCtx, 1, 3);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     if (nbInputArgument(pvApiCtx) == 1)
     {
index 2dde37b..964f9b8 100644 (file)
@@ -50,7 +50,7 @@ int sci_waitbar(char *fname, void* pvApiCtx)
     unsigned long GraphicHandle = 0;
 
     CheckInputArgument(pvApiCtx, 1, 3);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     if (nbInputArgument(pvApiCtx) == 1)
     {
@@ -386,7 +386,7 @@ int sci_waitbar(char *fname, void* pvApiCtx)
         }
     }
 
-    if (nbOutputArgument(pvApiCtx) == 1)
+    if (nbOutputArgument(pvApiCtx) <= 1)
     {
         nbRow = 1;
         nbCol = 1;
index be2dc90..c6ef02e 100644 (file)
@@ -46,7 +46,7 @@ int sci_datatip_manager_mode(char *fname, void* pvApiCtx)
 
     SciErr sciErr;
     CheckInputArgument(pvApiCtx, 0, 2);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     if (nbInputArgument(pvApiCtx) == 0)
     {
index b2d3322..a1337c7 100644 (file)
@@ -32,7 +32,7 @@ int sci_datatip_set_display(char *fname, void* pvApiCtx)
 {
     SciErr sciErr;
     CheckInputArgument(pvApiCtx, 1, 2);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     int iDatatipUID     = 0;
     int* piAddr         = NULL;
index 3299af3..8b37bc6 100644 (file)
@@ -31,7 +31,7 @@ int sci_getinstalledlookandfeels(char *fname, void* pvApiCtx)
 {
     SciErr sciErr;
     CheckInputArgument(pvApiCtx, 0, 0);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     org_scilab_modules_gui_utils::LookAndFeelManager * lnf = 0;
     try
index 4751651..b9ed3de 100644 (file)
@@ -30,7 +30,7 @@ extern "C"
 int sci_getlookandfeel(char *fname, void* pvApiCtx)
 {
     CheckInputArgument(pvApiCtx, 0, 0);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     org_scilab_modules_gui_utils::LookAndFeelManager * lnf = 0;
     try
index 39ac874..751dde9 100644 (file)
@@ -36,7 +36,7 @@ int sci_loadGui(char *fname, void* pvApiCtx)
     int iRhs = nbInputArgument(pvApiCtx);
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index 75e45b8..9073952 100644 (file)
@@ -45,7 +45,7 @@ int sci_saveGui(char *fname, void* pvApiCtx)
     int iRhs = nbInputArgument(pvApiCtx);
 
     CheckInputArgument(pvApiCtx, 2, 2);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
     if (sciErr.iErr)
index 3d4a66c..46efea9 100644 (file)
@@ -47,7 +47,7 @@ int sci_uigetcolor(char *fname, void* pvApiCtx)
 
     CheckInputArgument(pvApiCtx, 0, 4);
 
-    if ((nbOutputArgument(pvApiCtx) != 1) && (nbOutputArgument(pvApiCtx) != 3)) /* Bad use */
+    if ((nbOutputArgument(pvApiCtx) > 1) && (nbOutputArgument(pvApiCtx) != 3)) /* Bad use */
     {
         Scierror(999, _("%s: Wrong number of output arguments: %d or %d expected.\n"), fname, 1, 3);
         return FALSE;
@@ -342,7 +342,7 @@ int sci_uigetcolor(char *fname, void* pvApiCtx)
     {
 
         nbRow = 1;
-        if (nbOutputArgument(pvApiCtx) == 1)
+        if (nbOutputArgument(pvApiCtx) <= 1)
         {
             nbCol = 3;
             sciErr = createMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, nbRow, nbCol, selectedRGB);
@@ -403,7 +403,7 @@ int sci_uigetcolor(char *fname, void* pvApiCtx)
     {
         nbRow = 0;
         nbCol = 0;
-        if (nbOutputArgument(pvApiCtx) == 1)
+        if (nbOutputArgument(pvApiCtx) <= 1)
         {
             /* Return [] */
             sciErr = allocMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, nbRow, nbCol, &redAdr);
index da1184c..c1fff2f 100644 (file)
@@ -48,7 +48,7 @@ int sci_uigetdir(char *fname, void* pvApiCtx)
     char* expandedpath = NULL;
 
     CheckInputArgument(pvApiCtx, 0, 2);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     if (nbInputArgument(pvApiCtx) >= 1)
     {
index 23d37a3..e3aac39 100644 (file)
@@ -117,7 +117,7 @@ int sci_uigetfile(char *fname, void* pvApiCtx)
     int* piAddr4 = NULL;
 
     CheckInputArgument(pvApiCtx, 0, 4);
-    CheckOutputArgument(pvApiCtx, 1, 3);
+    CheckOutputArgument(pvApiCtx, 0, 3);
 
     //inputs checking
     /* call uigetfile with 1 arg */
@@ -374,7 +374,7 @@ int sci_uigetfile(char *fname, void* pvApiCtx)
     }
 
     // Only one output then it contains path+filenames
-    if (nbOutputArgument(pvApiCtx) == 1)
+    if (nbOutputArgument(pvApiCtx) <= 1)
     {
         sciErr = createMatrixOfString(pvApiCtx, nbInputArgument(pvApiCtx) + 1, nbRowOutSelection, nbColOutSelection, selection);
         if (sciErr.iErr)
index b23e410..a4ed0df 100644 (file)
@@ -51,7 +51,7 @@ int sci_uigetfont(char *fname, void* pvApiCtx)
     BOOL selectedItalic     = FALSE;
 
     CheckInputArgument(pvApiCtx, 0, 4);
-    CheckOutputArgument(pvApiCtx, 1, 4);
+    CheckOutputArgument(pvApiCtx, 0, 4);
 
     /* Default font name */
     if (nbInputArgument(pvApiCtx) >= 1)
index 0e0ffff..0b3b207 100644 (file)
@@ -104,7 +104,7 @@ int sci_uiputfile(char *fname, void* pvApiCtx)
     int* piAddr3 = NULL;
 
     CheckInputArgument(pvApiCtx, 0, 3);
-    CheckOutputArgument(pvApiCtx, 1, 3);
+    CheckOutputArgument(pvApiCtx, 0, 3);
 
     //inputs checking
     /* call uiputfile with 1 arg */
index 42a7b16..a3b14ad 100644 (file)
@@ -46,7 +46,7 @@ int sci_h5attr(char *fname, int* pvApiCtx)
     std::string targetType;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 4, 5);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 9c3dfb7..cc73ee1 100644 (file)
@@ -56,7 +56,7 @@ int sci_h5cp(char *fname, int* pvApiCtx)
     std::string dloc;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 2, 4);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 7507ea0..01aa6cf 100644 (file)
@@ -60,7 +60,7 @@ int sci_h5dataset(char *fname, int* pvApiCtx)
     unsigned int size = 0;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 5, 7);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index cba4e98..6ba9841 100644 (file)
@@ -38,7 +38,7 @@ int sci_h5delete(char *fname, unsigned long fname_len)
     int * addr = 0;
     char * name = 0;
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 2, 2);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 38ee861..bfc7ea6 100644 (file)
@@ -52,7 +52,7 @@ int sci_h5dump(char *fname, int* pvApiCtx)
     bool mustDelete = true;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 1, 2);
 
     if (nbIn == 2)
index 8097de3..ef265e0 100644 (file)
@@ -56,7 +56,7 @@ int sci_h5exists(char *fname, int* pvApiCtx)
     int * ret = 0;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 2, 3);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 9fc18b1..d775027 100644 (file)
@@ -43,7 +43,7 @@ int sci_h5flush(char *fname, int* pvApiCtx)
     bool _local = true;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 1, 2);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 258802c..07dd7b1 100644 (file)
@@ -46,7 +46,7 @@ int sci_h5get(char * fname, int* pvApiCtx)
     int _isAttr;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 2, 3);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index ae88fb1..ee3685e 100644 (file)
@@ -49,7 +49,7 @@ int sci_h5group(char *fname, int* pvApiCtx)
     const int nbIn = nbInputArgument(pvApiCtx);
     int row, col;
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 2, 2);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 73cc49f..4db0607 100644 (file)
@@ -37,7 +37,7 @@ inline static int sci_h5isfoo(const HDF5Scilab::H5ObjectType type, char * fname,
     bool ok = false;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 1, 1);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 3289486..15e808f 100644 (file)
@@ -53,7 +53,7 @@ int sci_h5label(char *fname, int* pvApiCtx)
     const int nbIn = nbInputArgument(pvApiCtx);
     int row, col;
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 4, 4);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 1416d44..c73be26 100644 (file)
@@ -44,7 +44,7 @@ int sci_h5link(char *fname, unsigned long fname_len)
     bool hard = false;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 3, 4);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 2ce54d2..d36c8bd 100644 (file)
@@ -60,7 +60,7 @@ int sci_h5ln(char *fname, int* pvApiCtx)
     bool hard = false;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 3, 5);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 000ba6e..de502cb 100644 (file)
@@ -51,7 +51,7 @@ int sci_h5ls(char *fname, int* pvApiCtx)
     bool mustDelete = true;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 1, 3);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 416fdd3..124c3c4 100644 (file)
@@ -43,7 +43,7 @@ int sci_h5mount(char *fname, int* pvApiCtx)
     char * str = 0;
     std::string sloc;
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 3, 3);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index aa53649..d2f5678 100644 (file)
@@ -56,7 +56,7 @@ int sci_h5mv(char *fname, int* pvApiCtx)
     std::string dloc;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 2, 4);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 2c072c9..40cb00b 100644 (file)
@@ -45,7 +45,7 @@ int sci_h5open(char *fname, int* pvApiCtx)
     size_t blockSize = 64 * 1024;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 1, 5);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 72fc625..78d2456 100644 (file)
@@ -63,7 +63,7 @@ int sci_h5read(char *fname, int* pvApiCtx)
     unsigned int size = 0;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 1, 6);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 22a5c4a..961bdfb 100644 (file)
@@ -48,7 +48,7 @@ int sci_h5readattr(char *fname, int* pvApiCtx)
     std::string name;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 1, 3);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 5b35457..b8c12f7 100644 (file)
@@ -49,7 +49,7 @@ int sci_h5rm(char *fname, int* pvApiCtx)
     std::string file;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 1, 2);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 1a2950f..697fa5c 100644 (file)
@@ -36,7 +36,7 @@ int sci_h5umount(char *fname, int* pvApiCtx)
     char * str = 0;
     std::string sloc;
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 2, 2);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index 3bc1b8a..e68d8ad 100644 (file)
@@ -79,7 +79,7 @@ int sci_h5write(char *fname, int* pvApiCtx)
     unsigned int rhsBegin = 0;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     // passer a 9 pr autoriser le chunking et surtout l'ajouter a la creation du dataset.
     CheckInputArgument(pvApiCtx, 3, 8);
index a244735..eedc80e 100644 (file)
@@ -37,7 +37,7 @@ int sci_hdf5_is_file(char *fname, int* pvApiCtx)
     const int nbIn = nbInputArgument(pvApiCtx);
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 4);
+    CheckOutputArgument(pvApiCtx, 0, 4);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index be92db7..b8bca3d 100644 (file)
@@ -75,7 +75,7 @@ int sci_hdf5_listvar_v2(char *fname, int* pvApiCtx)
     const int nbIn = nbInputArgument(pvApiCtx);
 
     CheckInputArgument(pvApiCtx, 1, 1);
-    CheckOutputArgument(pvApiCtx, 1, 4);
+    CheckOutputArgument(pvApiCtx, 0, 4);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
@@ -137,7 +137,7 @@ int sci_hdf5_listvar_v2(char *fname, int* pvApiCtx)
         pInfo = (VarInfo*)MALLOC(iNbItem * sizeof(VarInfo));
         int b;
 
-        if (Lhs == 1)
+        if (Lhs <= 1)
         {
             sciprint("Name                     Type           Size            Bytes\n");
             sciprint("---------------------------------------------------------------\n");
@@ -160,7 +160,7 @@ int sci_hdf5_listvar_v2(char *fname, int* pvApiCtx)
                 break;
             }
 
-            if (Lhs == 1)
+            if (Lhs <= 1)
             {
                 sciprint("%s\n", pInfo[i].pstInfo);
             }
index b6634a1..6bb1477 100644 (file)
@@ -72,13 +72,16 @@ static const std::string fname("hdf5_listvar");
 types::Function::ReturnValue sci_hdf5_listvar_v3(types::typed_list &in, int _iRetCount, types::typed_list &out)
 {
     int rhs = static_cast<int>(in.size());
+
+    _iRetCount = std::max(1, _iRetCount);
+
     if (rhs != 1)
     {
         Scierror(999, _("%s: Wrong number of input argument(s): %d expected.\n"), fname.data(), 1);
         return types::Function::Error;
     }
 
-    if (_iRetCount < 1 || _iRetCount > 4)
+    if (_iRetCount > 4)
     {
         Scierror(999, _("%s: Wrong number of output argument(s): %d to %d expected.\n"), fname.data(), 1, 4);
         return types::Function::Error;
@@ -122,7 +125,7 @@ types::Function::ReturnValue sci_hdf5_listvar_v3(types::typed_list &in, int _iRe
         std::vector<char*> vars(items);
         items = getVariableNames6(iFile, vars.data());
 
-        if (_iRetCount == 1)
+        if (_iRetCount <= 1)
         {
             sciprint("Name                     Type           Size            Bytes\n");
             sciprint("-------------------------------------------------------------\n");
@@ -148,7 +151,7 @@ types::Function::ReturnValue sci_hdf5_listvar_v3(types::typed_list &in, int _iRe
                     break;
                 }
 
-                if (_iRetCount == 1)
+                if (_iRetCount <= 1)
                 {
                     sciprint("%s\n", info[i].info);
                 }
index d10ffbb..cc2b7c0 100644 (file)
@@ -71,7 +71,7 @@ int sci_hdf5_load_v1(char *fn, int* pvApiCtx)
     int iSelectedVar = Rhs - 1;
 
     CheckInputArgumentAtLeast(pvApiCtx, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     iCloseList = 0;
 
index 2a60d3c..921627e 100644 (file)
@@ -68,8 +68,8 @@ int sci_hdf5_load_v2(char *fn, int* pvApiCtx)
     const int nbIn = nbInputArgument(pvApiCtx);
     int iSelectedVar = nbIn - 1;
 
-    CheckInputArgumentAtLeast(pvApiCtx, 1);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckInputArgumentAtLeast(pvApiCtx , 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
     if (sciErr.iErr)
index 0aa1010..56175fb 100644 (file)
@@ -41,7 +41,7 @@ int sci_percent_H5Object_e(char * fname, int* pvApiCtx)
     unsigned int * index = 0;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     if (nbIn < 2)
     {
index b0f0e56..03d0f0c 100644 (file)
@@ -46,7 +46,7 @@ int h5create(char * fname, int* pvApiCtx)
     unsigned int rhsBegin;
     const int nbIn = nbInputArgument(pvApiCtx);
 
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
     CheckInputArgument(pvApiCtx, 3, 8);
 
     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
index d6f91cc..6dcec82 100644 (file)
@@ -66,7 +66,7 @@ extern "C"
         int iRet = 0;
 
         CheckRhs(0, 4);
-        CheckLhs(1, 1);
+        CheckLhs(0, 1);
 
         temp = getSCI();
         SciPath = std::string(temp);
index a080e58..e3b9cff 100644 (file)
@@ -133,7 +133,7 @@ types::Function::ReturnValue sci_eval_cshep2d(types::typed_list &in, int _iRetCo
 
     pDblF = new types::Double(pDblXp->getRows(), pDblXp->getCols());
 
-    if (_iRetCount == 1)
+    if (_iRetCount <= 1)
     {
         for (int i = 0; i < sizeOfXp; i++)
         {
index 143565c..700f0b8 100644 (file)
@@ -195,7 +195,7 @@ types::Function::ReturnValue sci_interp2d(types::typed_list &in, int _iRetCount,
     // *** Perform operation. ***
     pDblZp = new types::Double(pDblXp->getRows(), pDblXp->getCols());
 
-    if (_iRetCount == 1)
+    if (_iRetCount <= 1)
     {
         C2F(bicubicinterp)(pDblX->get(), pDblY->get(), pDblC->get(), &sizeOfX, &sizeOfY, pDblXp->get(), pDblYp->get(), pDblZp->get(), &sizeOfXp, &iType);
 
index d6336b4..b1a6d75 100644 (file)
@@ -167,7 +167,7 @@ types::Function::ReturnValue sci_interp3d(types::typed_list &in, int _iRetCount,
     int workSize = order[1] * order[2] + 3 * std::max(order[0], std::max(order[1], order[2])) + order[2];
     double* work = new double[workSize];
 
-    if (_iRetCount == 1)
+    if (_iRetCount <= 1)
     {
         C2F(driverdb3val)(pDblXYZ[0]->get(), pDblXYZ[1]->get(), pDblXYZ[2]->get(), pDblFp->get(), &sizeOfXp,
                           pDblX->get(), pDblY->get(), pDblZ->get(), &sizeOfX, &sizeOfY, &sizeOfZ,
index 820642e..5086a09 100644 (file)
@@ -42,7 +42,7 @@ int sci_getenv(char *fname, void* pvApiCtx)
     int iRhs = nbInputArgument(pvApiCtx);
 
     CheckRhs(1, 2);
-    CheckLhs(1, 1);
+    CheckLhs(0, 1);
 
     if (iRhs == 2)
     {
index 842a4f8..2d673f3 100644 (file)
@@ -208,7 +208,7 @@ types::Function::ReturnValue sci_file(types::typed_list &in, int _iRetCount, typ
         int iErr = C2F(clunit)(&lunit, pstFilename, piMode, (int)strlen(pstFilename));
         if (iErr)
         {
-            if (_iRetCount == 1)
+            if (_iRetCount <= 1)
             {
                 switch (iErr)
                 {
@@ -254,7 +254,7 @@ types::Function::ReturnValue sci_file(types::typed_list &in, int _iRetCount, typ
              wcscmp(pSAction->get(0), L"backspace") == 0 ||
              wcscmp(pSAction->get(0), L"last") == 0)
     {
-        if (_iRetCount != 1)
+        if (_iRetCount > 1)
         {
             Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), "file", 1);
             return types::Function::Error;
index 5bbb066..55931fe 100644 (file)
@@ -31,17 +31,17 @@ static const char fname[] = "getio";
 int sci_getio(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out)
 {
 
-       if (nin != 0)
-       {
-               Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), fname, 0);
-               return 1;
-       }
+    if (nin != 0)
+    {
+        Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), fname, 0);
+        return 1;
+    }
 
-       if (nout != 1)
-       {
-               Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), fname, 1);
-               return 1;
-       }
+    if (nout > 1)
+    {
+        Scierror(78, _("%s: Wrong number of output argument(s): %d expected.\n"), fname, 1);
+        return 1;
+    }
 
     //get diarys count
     int diary = 0;
@@ -57,5 +57,5 @@ int sci_getio(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, in
     scilab_setDoubleArray(env, var, val.data());
     //return it to scilab
     out[0] = var;
-       return 0;
-}
\ No newline at end of file
+    return 0;
+}
index bfd7f5e..97c6e09 100644 (file)
@@ -35,7 +35,7 @@ types::Function::ReturnValue sci_system_getproperty(types::typed_list &in, int _
         return types::Function::Error;
     }
 
-    if (_piRetCount != 1)
+    if (_piRetCount > 1)
     {
         Scierror(999, _("%s: Wrong number of output arguments: %d expected.\n"), "system_getproperty", 1);
         return types::Function::Error;
index 8ef9c06..f5ce76d 100644 (file)
@@ -38,7 +38,7 @@ types::Function::ReturnValue sci_system_setproperty(types::typed_list &in, int _
         return types::Function::Error;
     }
 
-    if (_piRetCount != 1)
+    if (_piRetCount > 1)
     {
         Scierror(999, _("%s: Wrong number of output arguments: %d expected.\n"), "system_setproperty", 1);
         return types::Function::Error;
index f766a99..e6e4bc8 100644 (file)
@@ -52,7 +52,7 @@ int sci_norm(char *fname, void* pvApiCtx)
     int _isinf = 0;
 
     CheckInputArgument(pvApiCtx, 1, 2);
-    CheckOutputArgument(pvApiCtx, 1, 1);
+    CheckOutputArgument(pvApiCtx, 0, 1);
 
     // Checking A.
     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &pAAddr); // Retrieving A address.
index 842d76d..190fd6b 100644 (file)
@@ -131,7 +131,7 @@ types::Function::ReturnValue sci_hess(types::typed_list &in, int _iRetCount, typ
         }
     }
 
-    if (_iRetCount == 1)
+    if (_iRetCount <= 1)
     {
         out.push_back(pDbl);
     }