[Scilab-users] strange %h_set overloading
Stéphane Mottelet
stephane.mottelet at utc.fr
Thu Mar 1 09:29:42 CET 2018
Hello,
I have a question concerning the overloading function %h_set and
concerning overloading mechanism in general.
Here is an example where the original %h_set is redefined in order to
display "in %h_set" when it is called:
function hdl=%h_set(varargin)
disp("in %h_set")
if (size(varargin) == 3)
hdl = varargin(1)
str = varargin(2)
val = varargin(3)
for i=1:size(hdl,"*")
set(hdl(i),str,val)
end,
elseif (size(varargin) == 2)
str = varargin(1)
val = varargin(2)
hdl=[]
set(str,val)
end,
endfunction
set(gcf(),'tag','foo');
set([gcf(),gcf()],'tag','foo');
--> set(gcf(),'tag','foo');
--> set([gcf(),gcf()],'tag','foo');
in %h_set
%h_set is not called wen a 1x1 handle is used, but only when a vector of
more than 2 handles is used. I suppose this mechanism is implemented i
the built-in "set" ?
My other question/remark is about the naming convention of built-in
functions like "set". When macros do exist wit the same name but in
different libraries, the library name used as a prefix plays the role
of a namespace and allows to disambiguate calls: e.g."graphicslib.plot"
vs "plolib.plot". However, there is no namespace for built-in functions.
The reason for these questions is that I am currently re-engineering the
plotlib and need a smooth mechanism to emulate new properties/fields for
*native* Scilab handles.
S.
--
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet
More information about the users
mailing list