[Scilab-users] clone a function in a library

Samuel Gougeon sgougeon at free.fr
Wed Feb 28 15:09:42 CET 2018


Hello Stéphane,

I would try the following:
After genlibing the set of regular .sci files,
* save the clone with
    save('macros/%axesData_i_h.bin', "%axesData_i_h")
* add a line in the lib file

<macro  name="%axesData_i_h"  file="%axesData_i_h.bin"  md5="e833d190e21b93af335a011ea9e76aef"/>

The MD5 hash is of the content of the .sci file, that here does not 
exist. It is use by genlib to check whether the .sci must be recompiled 
or not. You may try to set any md5 (or the cloned one). As long as you 
don't recompile the lib with genlib -- just loading it with load() or 
lib() --, this should work.

My 2 cents..

Samuel


Le 28/02/2018 à 14:52, Stéphane Mottelet a écrit :
> Hello,
>
> With the new library system, it is no longer possible to clone a 
> function in a library. This feature is still documented in the help 
> page of "lib" but is not working anymore since saving a user-defined 
> scilab function uses the sod/hdf5 format. Maybe one can ask why such a 
> feature is needed ? Sometimes it can be usefull to have a function 
> which is callable by different names but actually does the same thing. 
> The different calling names can come from the adaptation for different 
> types of data, which can sometimes lead to the same treatment, hence 
> to the same function. Instead of writing two functions with the same 
> source code but a different calling name, cloning the original one was 
> an interesting feature.
>
> I admit that the way it worked under scilab<6.x was not clean at all 
> *but* officially documented in the "lib" help page. For example, 
> imagine that a library has just been built (e.g. the plotlib...)
>
> genlib('plotlib','macros')
>
> I need to add to this library %axesData_i_h which is a clone of 
> generic_i_h (in overloadinglib), which can be done in scilab<6.x by:
>
> %axesData_i_h=generic_i_h;
> save('macros/%axesData_i_h.bin',%axesData_i_h)
> mputl([mgetl('macros/names');'%axesData_i_h'],'macros/names')
>
> I said above "not clean at all", because the binary file "macros/lib" 
> (which is created by the genlib call) does not need to be updated, as 
> a subsequent
>
> plotlib=lib("macros")
>
> loads all functions, including %axesData_i_h
>
>
> Doing things like this is not possible any more. It was was also to 
> add persistent variables in libraries, with the same mechanism.
>
> By the way, under scilab 6.0.1, the "macros/lib" is now an XML file 
> with a clear syntax, e.g.
>
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <scilablib name="plotliblib">
>   <macro name="%c_i_pltlibH" file="%c_i_pltlibH.bin" 
> md5="d0966468b335a69681a29d84c99feb5c"/>
>   <macro name="%figureDa_i_h" file="%figureDa_i_h.bin" 
> md5="a1ebda57a1607b28095def2e415e2ec1"/>
> ...
> </scilablib>
>
> It does not seem to be documented either.
>
> S.
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20180228/db367076/attachment.htm>


More information about the users mailing list