[Scilab-Dev] Private functions in a .sci file <= Re: Multiple Functions in a sci file

antoine.elias at scilab-enterprises.com antoine.elias at scilab-enterprises.com
Wed Feb 22 14:28:00 CET 2017


Hello,

After some tests, it seems that Scilab 5 loads in local context "sub 
functions" only when you call the main function.

with your sample, test1 and testa in the same test1.sci file
genlib -> load -> testa -> KO
                -> test1 -> testa -> OK

In Scilab 6, we load "sub functions" as nested functions of the main 
function.
So they can be called in main function but after the call, they are 
"cleared".

It is a regression, can you open a bug with a link to this thread ?

Regards,
Antoine

Le 2017-02-22 02:50, Tan Chin Luh a écrit :
> Hi Samuel,
> 
>  Thanks for your answers.
> 
>  best regards,
>  Chin Luh
> 
>  On 22/2/2017 5:22 AM, Samuel Gougeon wrote:
> 
>> Hi,
>> 
>> Le 16/02/2017 à 06:04, Tan Chin Luh a écrit :
>> 
>>> Hi,
>>> 
>>> I am trying to troubleshoot the issue on the guibuilder in Scilab
>>> 6 windows platform as reported by :
>>> 
>>> https://atoms.scilab.org/toolboxes/guibuilder/3.1#comment2713 [1]
>>> 
>>> -----------
>>> 
>>> I used guibuilder in 5.5.2 and was able to create a gui, open an
>>> existing gui. I just
>>> installed it for 6.0 and the guibuilder launches, but am unable to
>>> create anything, i
>>> get the error "Undefined variable: draw_uicontrol5" for anything
>>> that I click on
>>> to
>>> create. Or even to open an existing GUI.
>>> -----------
>>> 
>>> I tried to reproduce the error in a simpler manner:
>>> 
>>> 1. Write a simple sci file with 2 functions in it.
>>> 
>>> function y = test1(x)
>>> y = x+1;
>>> endfunction
>>> 
>>> function y = testa(x)
>>> y = x+2;
>>> endfunction
>>> 
>>> 2. Put the file in a folder and use genlib to generate the lib
>>> 
>>> 3. Load the library and call "test1(1)" and "testa(1)"
>>> 
>>> In Scilab 5.5.2, both functions are callable, but in Scilab 6,
>>> only test1 is, and calling testa will either return error
>>> "undefined variable" or just crashed the Scilab.
>>> 
>>> Is this meant to behave this way under "new parser and new core"?
>> 
>> AFAIK : yes.
>> Now, only the first function defined in the file (or the one whose
>> name matches the file name? To be tested) is public. All other ones
>> are private (their domain is unclear: (likely) only the main
>> function? or the whole library it belongs to? To be tested and
>> documented).
>> One of the (nice) consequences is that, now none of the private
>> functions appears in the whos list of defined functions. They were
>> formerly rather spamming the list.
>> 
>>> I try to screen through what's news in Scilab 6 and bugzilla, and
>>> the similar but not exact issue found is :
>>> http://bugzilla.scilab.org/show_bug.cgi?id=14525 [2]
>> 
>> You are right, i don't think it is already correctly documented.
>> There were some discussions on users@ about this change since
>> mid-2015, but since Scilab 5.5.2, the genlib() help page was
>> improved for Scilab 5, without being updated for Scilab 6.
>> 
>>> I try to avoid breaking out all the functions to separate files as
>>> it will be tones of files in the folder then.
>> 
>> I am afraid that, if each of your functions is -- say -- a
>> callback, it must be public, and then now it requires to be defined
>> in a separate .sci file.
>> 
>> Regards
>> Samuel
>> 
>> _______________________________________________
>> dev mailing list
>> dev at lists.scilab.org
>> http://lists.scilab.org/mailman/listinfo/dev [3]
> 
> 
> 
> Links:
> ------
> [1] https://atoms.scilab.org/toolboxes/guibuilder/3.1#comment2713
> [2] http://bugzilla.scilab.org/show_bug.cgi?id=14525
> [3] http://lists.scilab.org/mailman/listinfo/dev
> 
> _______________________________________________
> dev mailing list
> dev at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/dev



More information about the dev mailing list